基于java ssm springboot+mybatis酒庄内部管理系统设计和实现

Posted java李杨勇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于java ssm springboot+mybatis酒庄内部管理系统设计和实现相关的知识,希望对你有一定的参考价值。

主要技术:spring、 springmvc、  springboot、  mybatis 、 jquery 、 md5 、bootstarp.js  tomcat、富文本编译器、拦截器等

主要功能:用户、角色、权限、菜单、内部邮件群发、给管理员发送邮件、酒类管理、红酒信息管理、通知公告管理、修改密码等  

论文目录结构:

一、 绪论 4

1.1 系统研究目的意义 4

1.2研究的主要内容 4

二、相关技术介绍分析 5

2.1 spring技术 5

2.2 Spring MVC技术 6

2.3 mybatis技术 7

2.4 JSP技术技术 7

2.5 jQuery技术 8

2.6 Mysql技术 8

三、需求分析和可行性分析 11

3.1 系统运行环境 11

3.2 总体技术设计 11

3.3 社会可行性分析 11

3.4 安全性可行性分析 12

3.5 经济可行性分析 12

3.6 法律可行性分析 12

四、系统设计分析 13

4.1 系统模式架构 13

4.2系统层次架构 13

4.3用户需求分析 13

4.3系统功能详情设计 15

4.4数据整体流程分析 16

4.5源码主要架构 17

五、程序设计和实现 18

5.1 程序主要类 18

5.2主要功能设计实现 22

5.2.登录模块和系统首页: 22

5.3用户添加: 24

5.4红酒信息列表展示: 26

5.5添加红酒详情: 26

5.6邮件列表展示: 27

5.7邮件发送: 28

5.8红酒类型列表 29

5.9红酒类型添加 30

5.8红酒类型添加 30

5.8通知公告列表 31

5.9修改密码 31

5.10数据库连接配置 32

六、数据库设计 34

6.1数据三范式: 34

6.2表ER图 34

6.3用户表设计 35

6.4菜单表设计 35

6.5角色表设计 36

6.6红酒类型表设计 36

6.7红酒表设计 37

6.8邮件信息表设计 37

6.10通知公告表设计 38

七、开发心得体会 38

八、测试实例 39

测试一: 39

测试二: 40

测试三: 41

致谢 41

参考献文 42

好了废话不多说进入主题、系统主页展示:

用户登录后进行系统首页:主要功能模块如下、分角色管理、超级管理员拥有最高权限、可以进行菜单灵活控制、

用户信息管理;

角色权限控制管理:

管理员查看灵活配置;

插入一小部分代码段

/**
 * .
 *
 *
 *
 *
 */

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 s.com
 */
@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(){
		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(){
		//查询列表数据
		List<SysMenuEntity> menuList = sysMenuService.queryNotButtonList();
		
		//添加顶级菜单
		SysMenuEntity root = new SysMenuEntity();
		root.setMenuId(0L);
		root.setName("一级菜单");
		root.setParentId(-1L);
		root.setOpen(true);
		menuList.add(root);
		
		return R.ok().put("menuList", menuList);
	}
	
	/**
	 * 菜单信息
	 */
	@RequestMapping("/info/{menuId}")
	@RequiresPermissions("sys:menu:info")
	public R info(@PathVariable("menuId") Long menuId){
		SysMenuEntity menu = sysMenuService.getById(menuId);
		return R.ok().put("menu", menu);
	}
	
	/**
	 * 保存
	 */
	@SysLog("保存菜单")
	@RequestMapping("/save")
	@RequiresPermissions("sys:menu:save")
	public R save(@RequestBody SysMenuEntity menu){
		//数据校验
		verifyForm(menu);
		
		sysMenuService.save(menu);
		
		return R.ok();
	}
	
	/**
	 * 修改
	 */
	@SysLog("修改菜单")
	@RequestMapping("/update")
	@RequiresPermissions("sys:menu:update")
	public R update(@RequestBody SysMenuEntity menu){
		//数据校验
		verifyForm(menu);
				
		sysMenuService.updateById(menu);
		
		return R.ok();
	}
	
	/**
	 * 删除
	 */
	@SysLog("删除菜单")
	@RequestMapping("/delete")
	@RequiresPermissions("sys:menu:delete")
	public R delete(long menuId){
		if(menuId <= 31){
			return R.error("系统菜单,不能删除");
		}

		//判断是否有子菜单或按钮
		List<SysMenuEntity> menuList = sysMenuService.queryListParentId(menuId);
		if(menuList.size() > 0){
			return R.error("请先删除子菜单或按钮");
		}

		sysMenuService.delete(menuId);

		return R.ok();
	}
	
	/**
	 * 验证参数是否正确
	 */
	private void verifyForm(SysMenuEntity menu){
		if(StringUtils.isBlank(menu.getName())){
			throw new RRException("菜单名称不能为空");
		}
		
		if(menu.getParentId() == null){
			throw new RRException("上级菜单不能为空");
		}
		
		//菜单
		if(menu.getType() == Constant.MenuType.MENU.getValue()){
			if(StringUtils.isBlank(menu.getUrl())){
				throw new RRException("菜单URL不能为空");
			}
		}
		
		//上级菜单类型
		int parentType = Constant.MenuType.CATALOG.getValue();
		if(menu.getParentId() != 0){
			SysMenuEntity parentMenu = sysMenuService.getById(menu.getParentId());
			parentType = parentMenu.getType();
		}
		
		//目录、菜单
		if(menu.getType() == Constant.MenuType.CATALOG.getValue() ||
				menu.getType() == Constant.MenuType.MENU.getValue()){
			if(parentType != Constant.MenuType.CATALOG.getValue()){
				throw new RRException("上级菜单只能为目录类型");
			}
			return ;
		}
		
		//按钮
		if(menu.getType() == Constant.MenuType.BUTTON.getValue()){
			if(parentType != Constant.MenuType.MENU.getValue()){
				throw new RRException("上级菜单只能为菜单类型");
			}
			return ;
		}
	}
}

简单模拟实现邮件群发给所有用户

红酒信息管理

 

通知公告信息管理

好了、系统就分享到这了、这个酒庄内部信息管理系统适合学生学习参考使用、

关注博主一键三连哟

以上是关于基于java ssm springboot+mybatis酒庄内部管理系统设计和实现的主要内容,如果未能解决你的问题,请参考以下文章

基于java ssm springboot女士电商平台系统源码+文档设计

基于JAVA SSM springboot实现的抗疫物质信息管理系统设计和实现

基于java ssm springboot+mybatis酒庄内部管理系统设计和实现

《Java精品毕设》 基于java ssm springboot+mybatis酒庄内部管理系统 (源码+sql+论文)

基于java ssm springboot+VUE疫情防疫系统系统前后端分离设计和实现必须收藏

基于java ssm springboot+VUE疫情防疫系统系统前后端分离设计和实现必须收藏