Source code to obtain: Q810569458

Main technologies: Spring, SpringMVC, SpringBoot, Mybatis, jquery, MD5, Bootstarp.js Tomcat, rich text compiler, interceptor, etc

Main functions: users, roles, permissions, menus, internal email group, sending emails to administrators, wine management, wine information management, notice and announcement management, password modification, etc

Table of Contents:

One, the introduction* * * *4

1.1 Significance of system research purpose 4

1.2 Main contents of the study 4

Ii. Introduction of related technologies Analysis of the* * * *5

2.1 Spring Technology 5

2.2 Spring MVC Technology 6

2.3 Mybatis Technology 7

2.4 JSP technology 7

2.5 jQuery 8

2.6 Mysql Technology 8

Demand analysis and feasibility Analysis of the* * * *11

3.1 System Operating Environment 11

3.2 Overall technical design 11

3.3 Social Feasibility analysis 11

3.4 Safety feasibility analysis 12

3.5 Economic feasibility analysis 12

3.6 Legal feasibility analysis 12

4. System design and analysis* * * *13

4.1 System Mode Architecture 13

4.2 System Hierarchical Architecture 13

4.3 User Requirement Analysis 13

4.3 Detailed design of system functions 15

4.4 Overall Data Flow Analysis 16

4.5 Main source architecture 17

支那Five,支那Programming and implementation* * * *18

5.1 Main categories of procedures 18

5.2 Main function design and realization 22

5.2. Login module and system home page: 22

5.3 Adding a User 24

5.4 Display of Wine Information List: 26

5.5 Add red wine details: 26

5.6 Mailing List Display: 27

5.7 Mail Sending: 28

5.8 List of Wine types 29

5.9 Red wine type add 30

5.8 Add 30 for red wine types

5.8 Notification List 31

5.9 Changing a Password 31

5.10 Database Connection Configuration 32

Vi. Database design* * * *34

6.1 Data Three Paradigm: 34

6.2 Table ER Figure 34

6.3 User Table Design 35

6.4 Menu Table Design 35

6.5 Role Table Design 36

6.6 Design of Wine Type Table 36

6.7 Wine Table design 37

6.8 Design of email Message Table 37

6.10 Design of Notice and Announcement Table 38

Vii. Development experience* * * *38

Eight, test examples* * * *39

支那Test a:* * * * * *39

支那Test 2:* * * * * *40

支那Test three:* * * * * *41

Thank you* * * *41

Refer to the present article* * * *42

Well, without further ado, enter the theme and system home page display:

The main function modules are as follows, role management, super administrator has the highest authority, flexible menu control,

User information management;

Role permission control management:

Administrators view flexible configurations.

Insert a small code snippet

/** * . * * * * */ package io.renren.modules.sys.controller; import io.renren.common.annotation.SysLog; import io.renren.common.exception.RRException; import io.renren.common.utils.Constant; import io.renren.common.utils.R; import io.renren.modules.sys.entity.SysMenuEntity; import io.renren.modules.sys.service.SysMenuService; import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @author Mark */ @restController @requestMapping ("/sys/menu") Public Class SysMenuController extends  AbstractController { @Autowired private SysMenuService sysMenuService; */ @requestMapping ("/nav") public R nav(){List<SysMenuEntity> menuList = sysMenuService.getUserMenuList(getUserId()); return R.ok().put("menuList", menuList); } / / @requestmapping ("/list") @requirespermissions ("sys:menu:list") public list <SysMenuEntity> list(){RequestMapping("/list") @requirespermissions ("sys:menu:list") public list <SysMenuEntity> list(){ List<SysMenuEntity> menuList = sysMenuService.list(); for(SysMenuEntity sysMenuEntity : menuList){ SysMenuEntity parentMenuEntity = sysMenuService.getById(sysMenuEntity.getParentId()); if(parentMenuEntity ! = null){ sysMenuEntity.setParentName(parentMenuEntity.getName()); } } return menuList; } // @requestMapping ("/select") @requirespermissions ("sys:menu:select") public R select(){// Query list data List<SysMenuEntity> menuList = sysMenuService.queryNotButtonList(); SysMenuEntity root = new SysMenuEntity(); root.setMenuId(0L); Root. setName(" first level menu "); root.setParentId(-1L); root.setOpen(true); menuList.add(root); return R.ok().put("menuList", menuList); } / / @requestMapping ("/info/{menuId}") @respermissions ("sys:menu:info") public R info(@PathVariable("menuId") Long menuId){ SysMenuEntity menu = sysMenuService.getById(menuId); return R.ok().put("menu", menu); } /** * Save */ @syslog (" Save menu ") @requestMapping ("/save") @respermissions ("sys:menu:save") public R save(@requestBody) SysMenuEntity menu){// Data verification verifyForm(menu); sysMenuService.save(menu); return R.ok(); } /** * modify */ @syslog (" modify menu ") @requestMapping ("/update") @respermissions ("sys:menu:update") public R Update (@requestBody SysMenuEntity menu){// Data verification verifyForm(menu); sysMenuService.updateById(menu); return R.ok(); } /** * delete */ @syslog (" delete menu ") @requestMapping ("/delete") @requirespermissions ("sys:menu:delete") public R delete(long) MenuId){if(menuId <= 31){return r.ror (" system menu, cannot delete "); } / / judge whether there is a sub menu or button List < SysMenuEntity > menuList. = sysMenuService queryListParentId (menuId); If (menulist.size () > 0){return r.ror (" Please delete submenu or button first "); } sysMenuService.delete(menuId); return R.ok(); */ private void verifyForm(SysMenuEntity menu){if(stringutils.isblank (menu.getName())){throw new RRException(" Menu name cannot be empty "); } if(menu.getParentId() == null){throw new RRException(" parent menu cannot be empty "); } / / menu if (menu. GetType () = = Constant, MenuType. Menu. The getValue ()) {if (StringUtils. IsBlank (menu. The getUrl ())) {throw new RRException(" Menu URL cannot be empty "); }} / / parent menu type int parentType = Constant, MenuType. CATALOG. The getValue (); if(menu.getParentId() ! = 0){ SysMenuEntity parentMenu = sysMenuService.getById(menu.getParentId()); parentType = parentMenu.getType(); } / / directory, menus, the if (menu. GetType () = = Constant, MenuType, CATALOG. The getValue () | | menu. GetType () = = Constant.MenuType.MENU.getValue()){ if(parentType ! = Constant. MenuType. CATALOG. The getValue ()) {throw new RRException (" parent menu only for directory type "); } return ; } / / BUTTON if (menu. GetType () = = Constant, MenuType, BUTTON. The getValue ()) {if (parentType! = Constant. MenuType. MENU. The getValue ()) {throw new RRException (" parent MENU only for MENU type "); } return ; }}}Copy the code

Simple simulation to achieve mass mail to all users

Wine Information Management

 

Notice information management

Ok, the system is shared here, this winery internal information management system is suitable for students to learn reference use,

Follow the blogger one key three even yo