简介
最近在维护公司项目,设计到按钮权限的问题,但是前任前后端开发者留下的代码属实让人头疼,设计得也很不合理,但是如果改的话成本更大,无奈只能站在他们巨人的肩膀上继续维护下去吧,现实现一个路由按钮权限控制的后台管理系统。
技术
前端使用Vue(React刚学,后面写个React版本) 后端使用Springboot+mybatis
数据库表结构
使用Rbac模型,通过角色配置权限,分为角色表,用户表,菜单表,用户角色中间表,角色菜单中间表。 以下表是抄袭eladmin的
角色表(sys_role)
表字段 类型 注释 role_id int 角色ID role_name varchar 角色名 create_time timestamp 创建时间
DROP TABLE IF EXISTS ` sys_role` ;
CREATE TABLE ` sys_role` (
` role_id` bigint ( 20 ) NOT NULL AUTO_INCREMENT COMMENT 'ID' ,
` name` varchar ( 255 ) NOT NULL COMMENT '名称' ,
` level` int ( 255 ) DEFAULT NULL COMMENT '角色级别' ,
` description` varchar ( 255 ) DEFAULT NULL COMMENT '描述' ,
` data_scope` varchar ( 255 ) DEFAULT NULL COMMENT '数据权限' ,
` create_by` varchar ( 255 ) DEFAULT NULL COMMENT '创建者' ,
` update_by` varchar ( 255 ) DEFAULT NULL COMMENT '更新者' ,
` create_time` datetime DEFAULT NULL COMMENT '创建日期' ,
` update_time` datetime DEFAULT NULL COMMENT '更新时间' ,
PRIMARY KEY ( ` role_id` ) USING BTREE ,
UNIQUE KEY ` uniq_name` ( ` name` ) ,
KEY ` role_name_index` ( ` name` )
) ENGINE = InnoDB AUTO_INCREMENT = 3 DEFAULT CHARSET = utf8 ROW_FORMAT= COMPACT COMMENT = '角色表' ;
BEGIN ;
INSERT INTO ` sys_role` VALUES ( 1 , '超级管理员' , 1 , '-' , '全部' , NULL , 'admin' , '2018-11-23 11:04:37' , '2020-08-06 16:10:24' ) ;
INSERT INTO ` sys_role` VALUES ( 2 , '普通用户' , 2 , '-' , '本级' , NULL , 'admin' , '2018-11-23 13:09:06' , '2020-09-05 10:45:12' ) ;
COMMIT ;
用户表(sys_user)
表字段 类型 注释 user_id int 用户ID username varchar 用户名 password varchar 用户密码 avatar varchar 用户头像 create_time timestamp 创建时间 enabled int 是否启用 0禁用 1启用
DROP TABLE IF EXISTS ` sys_user` ;
CREATE TABLE ` sys_user` (
` user_id` bigint ( 20 ) NOT NULL AUTO_INCREMENT COMMENT 'ID' ,
` dept_id` bigint ( 20 ) DEFAULT NULL COMMENT '部门名称' ,
` username` varchar ( 255 ) DEFAULT NULL COMMENT '用户名' ,
` nick_name` varchar ( 255 ) DEFAULT NULL COMMENT '昵称' ,
` gender` varchar ( 2 ) DEFAULT NULL COMMENT '性别' ,
` phone` varchar ( 255 ) DEFAULT NULL COMMENT '手机号码' ,
` email` varchar ( 255 ) DEFAULT NULL COMMENT '邮箱' ,
` avatar_name` varchar ( 255 ) DEFAULT NULL COMMENT '头像地址' ,
` avatar_path` varchar ( 255 ) DEFAULT NULL COMMENT '头像真实路径' ,
` password` varchar ( 255 ) DEFAULT NULL COMMENT '密码' ,
` is_admin` bit ( 1 ) DEFAULT b'0' COMMENT '是否为admin账号' ,
` enabled` bigint ( 20 ) DEFAULT NULL COMMENT '状态:1启用、0禁用' ,
` create_by` varchar ( 255 ) DEFAULT NULL COMMENT '创建者' ,
` update_by` varchar ( 255 ) DEFAULT NULL COMMENT '更新者' ,
` pwd_reset_time` datetime DEFAULT NULL COMMENT '修改密码的时间' ,
` create_time` datetime DEFAULT NULL COMMENT '创建日期' ,
` update_time` datetime DEFAULT NULL COMMENT '更新时间' ,
PRIMARY KEY ( ` user_id` ) USING BTREE ,
UNIQUE KEY ` UK_kpubos9gc2cvtkb0thktkbkes` ( ` email` ) USING BTREE ,
UNIQUE KEY ` username` ( ` username` ) USING BTREE ,
UNIQUE KEY ` uniq_username` ( ` username` ) ,
UNIQUE KEY ` uniq_email` ( ` email` ) ,
KEY ` FK5rwmryny6jthaaxkogownknqp` ( ` dept_id` ) USING BTREE ,
KEY ` FKpq2dhypk2qgt68nauh2by22jb` ( ` avatar_name` ) USING BTREE ,
KEY ` inx_enabled` ( ` enabled` )
) ENGINE = InnoDB AUTO_INCREMENT = 3 DEFAULT CHARSET = utf8 ROW_FORMAT= COMPACT COMMENT = '系统用户' ;
BEGIN ;
INSERT INTO ` sys_user` VALUES ( 1 , 2 , 'admin' , '管理员' , '男' , '18888888888' , '201507802@qq.com' , 'avatar-20200806032259161.png' , '/Users/jie/Documents/work/me/admin/eladmin/~/avatar/avatar-20200806032259161.png' , '$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa' , b'1' , 1 , NULL , 'admin' , '2020-05-03 16:38:31' , '2018-08-23 09:11:56' , '2020-09-05 10:43:31' ) ;
INSERT INTO ` sys_user` VALUES ( 2 , 2 , 'test' , '测试' , '男' , '19999999999' , '231@qq.com' , NULL , NULL , '$2a$10$4XcyudOYTSz6fue6KFNMHeUQnCX5jbBQypLEnGk1PmekXt5c95JcK' , b'0' , 1 , 'admin' , 'admin' , NULL , '2020-05-05 11:15:49' , '2020-09-05 10:43:38' ) ;
COMMIT ;
菜单表(sys_menu)
表字段 类型 注释 menu_id int 菜单ID menu_name varchar 菜单名称 path varchar 菜单路径 parent_id int 上级菜单 permission varchar 权限标识 以xx:xx:xx命名 icon varchar 菜单图标 sort int 菜单排序 enabled int 是否启用 0禁用 1启用
DROP TABLE IF EXISTS ` sys_menu` ;
CREATE TABLE ` sys_menu` (
` menu_id` bigint ( 20 ) NOT NULL AUTO_INCREMENT COMMENT 'ID' ,
` pid` bigint ( 20 ) DEFAULT NULL COMMENT '上级菜单ID' ,
` sub_count` int ( 5 ) DEFAULT 0 COMMENT '子菜单数目' ,
` type` int ( 11 ) DEFAULT NULL COMMENT '菜单类型' ,
` title` varchar ( 255 ) DEFAULT NULL COMMENT '菜单标题' ,
` name` varchar ( 255 ) DEFAULT NULL COMMENT '组件名称' ,
` component` varchar ( 255 ) DEFAULT NULL COMMENT '组件' ,
` menu_sort` int ( 5 ) DEFAULT NULL COMMENT '排序' ,
` icon` varchar ( 255 ) DEFAULT NULL COMMENT '图标' ,
` path` varchar ( 255 ) DEFAULT NULL COMMENT '链接地址' ,
` i_frame` bit ( 1 ) DEFAULT NULL COMMENT '是否外链' ,
` cache` bit ( 1 ) DEFAULT b'0' COMMENT '缓存' ,
` hidden` bit ( 1 ) DEFAULT b'0' COMMENT '隐藏' ,
` permission` varchar ( 255 ) DEFAULT NULL COMMENT '权限' ,
` create_by` varchar ( 255 ) DEFAULT NULL COMMENT '创建者' ,
` update_by` varchar ( 255 ) DEFAULT NULL COMMENT '更新者' ,
` create_time` datetime DEFAULT NULL COMMENT '创建日期' ,
` update_time` datetime DEFAULT NULL COMMENT '更新时间' ,
PRIMARY KEY ( ` menu_id` ) USING BTREE ,
UNIQUE KEY ` uniq_title` ( ` title` ) ,
UNIQUE KEY ` uniq_name` ( ` name` ) ,
KEY ` inx_pid` ( ` pid` )
) ENGINE = InnoDB AUTO_INCREMENT = 118 DEFAULT CHARSET = utf8 ROW_FORMAT= COMPACT COMMENT = '系统菜单' ;
BEGIN ;
INSERT INTO ` sys_menu` VALUES ( 1 , NULL , 7 , 0 , '系统管理' , NULL , NULL , 1 , 'system' , 'system' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2018-12-18 15:11:29' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 2 , 1 , 3 , 1 , '用户管理' , 'User' , 'system/user/index' , 2 , 'peoples' , 'user' , b'0' , b'0' , b'0' , 'user:list' , NULL , NULL , '2018-12-18 15:14:44' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 3 , 1 , 3 , 1 , '角色管理' , 'Role' , 'system/role/index' , 3 , 'role' , 'role' , b'0' , b'0' , b'0' , 'roles:list' , NULL , NULL , '2018-12-18 15:16:07' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 5 , 1 , 3 , 1 , '菜单管理' , 'Menu' , 'system/menu/index' , 5 , 'menu' , 'menu' , b'0' , b'0' , b'0' , 'menu:list' , NULL , NULL , '2018-12-18 15:17:28' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 6 , NULL , 5 , 0 , '系统监控' , NULL , NULL , 10 , 'monitor' , 'monitor' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2018-12-18 15:17:48' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 7 , 6 , 0 , 1 , '操作日志' , 'Log' , 'monitor/log/index' , 11 , 'log' , 'logs' , b'0' , b'1' , b'0' , NULL , NULL , 'admin' , '2018-12-18 15:18:26' , '2020-06-06 13:11:57' ) ;
INSERT INTO ` sys_menu` VALUES ( 9 , 6 , 0 , 1 , 'SQL监控' , 'Sql' , 'monitor/sql/index' , 18 , 'sqlMonitor' , 'druid' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2018-12-18 15:19:34' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 10 , NULL , 5 , 0 , '组件管理' , NULL , NULL , 50 , 'zujian' , 'components' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2018-12-19 13:38:16' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 11 , 10 , 0 , 1 , '图标库' , 'Icons' , 'components/icons/index' , 51 , 'icon' , 'icon' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2018-12-19 13:38:49' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 14 , 36 , 0 , 1 , '邮件工具' , 'Email' , 'tools/email/index' , 35 , 'email' , 'email' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2018-12-27 10:13:09' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 15 , 10 , 0 , 1 , '富文本' , 'Editor' , 'components/Editor' , 52 , 'fwb' , 'tinymce' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2018-12-27 11:58:25' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 18 , 36 , 3 , 1 , '存储管理' , 'Storage' , 'tools/storage/index' , 34 , 'qiniu' , 'storage' , b'0' , b'0' , b'0' , 'storage:list' , NULL , NULL , '2018-12-31 11:12:15' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 19 , 36 , 0 , 1 , '支付宝工具' , 'AliPay' , 'tools/aliPay/index' , 37 , 'alipay' , 'aliPay' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2018-12-31 14:52:38' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 21 , NULL , 2 , 0 , '多级菜单' , NULL , '' , 900 , 'menu' , 'nested' , b'0' , b'0' , b'0' , NULL , NULL , 'admin' , '2019-01-04 16:22:03' , '2020-06-21 17:27:35' ) ;
INSERT INTO ` sys_menu` VALUES ( 22 , 21 , 2 , 0 , '二级菜单1' , NULL , '' , 999 , 'menu' , 'menu1' , b'0' , b'0' , b'0' , NULL , NULL , 'admin' , '2019-01-04 16:23:29' , '2020-06-21 17:27:20' ) ;
INSERT INTO ` sys_menu` VALUES ( 23 , 21 , 0 , 1 , '二级菜单2' , NULL , 'nested/menu2/index' , 999 , 'menu' , 'menu2' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-01-04 16:23:57' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 24 , 22 , 0 , 1 , '三级菜单1' , 'Test' , 'nested/menu1/menu1-1' , 999 , 'menu' , 'menu1-1' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-01-04 16:24:48' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 27 , 22 , 0 , 1 , '三级菜单2' , NULL , 'nested/menu1/menu1-2' , 999 , 'menu' , 'menu1-2' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-01-07 17:27:32' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 28 , 1 , 3 , 1 , '任务调度' , 'Timing' , 'system/timing/index' , 999 , 'timing' , 'timing' , b'0' , b'0' , b'0' , 'timing:list' , NULL , NULL , '2019-01-07 20:34:40' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 30 , 36 , 0 , 1 , '代码生成' , 'GeneratorIndex' , 'generator/index' , 32 , 'dev' , 'generator' , b'0' , b'1' , b'0' , NULL , NULL , NULL , '2019-01-11 15:45:55' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 32 , 6 , 0 , 1 , '异常日志' , 'ErrorLog' , 'monitor/log/errorLog' , 12 , 'error' , 'errorLog' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-01-13 13:49:03' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 33 , 10 , 0 , 1 , 'Markdown' , 'Markdown' , 'components/MarkDown' , 53 , 'markdown' , 'markdown' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-03-08 13:46:44' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 34 , 10 , 0 , 1 , 'Yaml编辑器' , 'YamlEdit' , 'components/YamlEdit' , 54 , 'dev' , 'yaml' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-03-08 15:49:40' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 35 , 1 , 3 , 1 , '部门管理' , 'Dept' , 'system/dept/index' , 6 , 'dept' , 'dept' , b'0' , b'0' , b'0' , 'dept:list' , NULL , NULL , '2019-03-25 09:46:00' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 36 , NULL , 7 , 0 , '系统工具' , NULL , '' , 30 , 'sys-tools' , 'sys-tools' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-03-29 10:57:35' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 37 , 1 , 3 , 1 , '岗位管理' , 'Job' , 'system/job/index' , 7 , 'Steve-Jobs' , 'job' , b'0' , b'0' , b'0' , 'job:list' , NULL , NULL , '2019-03-29 13:51:18' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 38 , 36 , 0 , 1 , '接口文档' , 'Swagger' , 'tools/swagger/index' , 36 , 'swagger' , 'swagger2' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-03-29 19:57:53' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 39 , 1 , 3 , 1 , '字典管理' , 'Dict' , 'system/dict/index' , 8 , 'dictionary' , 'dict' , b'0' , b'0' , b'0' , 'dict:list' , NULL , NULL , '2019-04-10 11:49:04' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 41 , 6 , 0 , 1 , '在线用户' , 'OnlineUser' , 'monitor/online/index' , 10 , 'Steve-Jobs' , 'online' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-10-26 22:08:43' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 44 , 2 , 0 , 2 , '用户新增' , NULL , '' , 2 , '' , '' , b'0' , b'0' , b'0' , 'user:add' , NULL , NULL , '2019-10-29 10:59:46' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 45 , 2 , 0 , 2 , '用户编辑' , NULL , '' , 3 , '' , '' , b'0' , b'0' , b'0' , 'user:edit' , NULL , NULL , '2019-10-29 11:00:08' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 46 , 2 , 0 , 2 , '用户删除' , NULL , '' , 4 , '' , '' , b'0' , b'0' , b'0' , 'user:del' , NULL , NULL , '2019-10-29 11:00:23' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 48 , 3 , 0 , 2 , '角色创建' , NULL , '' , 2 , '' , '' , b'0' , b'0' , b'0' , 'roles:add' , NULL , NULL , '2019-10-29 12:45:34' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 49 , 3 , 0 , 2 , '角色修改' , NULL , '' , 3 , '' , '' , b'0' , b'0' , b'0' , 'roles:edit' , NULL , NULL , '2019-10-29 12:46:16' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 50 , 3 , 0 , 2 , '角色删除' , NULL , '' , 4 , '' , '' , b'0' , b'0' , b'0' , 'roles:del' , NULL , NULL , '2019-10-29 12:46:51' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 52 , 5 , 0 , 2 , '菜单新增' , NULL , '' , 2 , '' , '' , b'0' , b'0' , b'0' , 'menu:add' , NULL , NULL , '2019-10-29 12:55:07' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 53 , 5 , 0 , 2 , '菜单编辑' , NULL , '' , 3 , '' , '' , b'0' , b'0' , b'0' , 'menu:edit' , NULL , NULL , '2019-10-29 12:55:40' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 54 , 5 , 0 , 2 , '菜单删除' , NULL , '' , 4 , '' , '' , b'0' , b'0' , b'0' , 'menu:del' , NULL , NULL , '2019-10-29 12:56:00' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 56 , 35 , 0 , 2 , '部门新增' , NULL , '' , 2 , '' , '' , b'0' , b'0' , b'0' , 'dept:add' , NULL , NULL , '2019-10-29 12:57:09' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 57 , 35 , 0 , 2 , '部门编辑' , NULL , '' , 3 , '' , '' , b'0' , b'0' , b'0' , 'dept:edit' , NULL , NULL , '2019-10-29 12:57:27' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 58 , 35 , 0 , 2 , '部门删除' , NULL , '' , 4 , '' , '' , b'0' , b'0' , b'0' , 'dept:del' , NULL , NULL , '2019-10-29 12:57:41' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 60 , 37 , 0 , 2 , '岗位新增' , NULL , '' , 2 , '' , '' , b'0' , b'0' , b'0' , 'job:add' , NULL , NULL , '2019-10-29 12:58:27' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 61 , 37 , 0 , 2 , '岗位编辑' , NULL , '' , 3 , '' , '' , b'0' , b'0' , b'0' , 'job:edit' , NULL , NULL , '2019-10-29 12:58:45' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 62 , 37 , 0 , 2 , '岗位删除' , NULL , '' , 4 , '' , '' , b'0' , b'0' , b'0' , 'job:del' , NULL , NULL , '2019-10-29 12:59:04' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 64 , 39 , 0 , 2 , '字典新增' , NULL , '' , 2 , '' , '' , b'0' , b'0' , b'0' , 'dict:add' , NULL , NULL , '2019-10-29 13:00:17' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 65 , 39 , 0 , 2 , '字典编辑' , NULL , '' , 3 , '' , '' , b'0' , b'0' , b'0' , 'dict:edit' , NULL , NULL , '2019-10-29 13:00:42' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 66 , 39 , 0 , 2 , '字典删除' , NULL , '' , 4 , '' , '' , b'0' , b'0' , b'0' , 'dict:del' , NULL , NULL , '2019-10-29 13:00:59' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 73 , 28 , 0 , 2 , '任务新增' , NULL , '' , 2 , '' , '' , b'0' , b'0' , b'0' , 'timing:add' , NULL , NULL , '2019-10-29 13:07:28' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 74 , 28 , 0 , 2 , '任务编辑' , NULL , '' , 3 , '' , '' , b'0' , b'0' , b'0' , 'timing:edit' , NULL , NULL , '2019-10-29 13:07:41' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 75 , 28 , 0 , 2 , '任务删除' , NULL , '' , 4 , '' , '' , b'0' , b'0' , b'0' , 'timing:del' , NULL , NULL , '2019-10-29 13:07:54' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 77 , 18 , 0 , 2 , '上传文件' , NULL , '' , 2 , '' , '' , b'0' , b'0' , b'0' , 'storage:add' , NULL , NULL , '2019-10-29 13:09:09' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 78 , 18 , 0 , 2 , '文件编辑' , NULL , '' , 3 , '' , '' , b'0' , b'0' , b'0' , 'storage:edit' , NULL , NULL , '2019-10-29 13:09:22' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 79 , 18 , 0 , 2 , '文件删除' , NULL , '' , 4 , '' , '' , b'0' , b'0' , b'0' , 'storage:del' , NULL , NULL , '2019-10-29 13:09:34' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 80 , 6 , 0 , 1 , '服务监控' , 'ServerMonitor' , 'monitor/server/index' , 14 , 'codeConsole' , 'server' , b'0' , b'0' , b'0' , 'monitor:list' , NULL , 'admin' , '2019-11-07 13:06:39' , '2020-05-04 18:20:50' ) ;
INSERT INTO ` sys_menu` VALUES ( 82 , 36 , 0 , 1 , '生成配置' , 'GeneratorConfig' , 'generator/config' , 33 , 'dev' , 'generator/config/:tableName' , b'0' , b'1' , b'1' , '' , NULL , NULL , '2019-11-17 20:08:56' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 83 , 10 , 0 , 1 , '图表库' , 'Echarts' , 'components/Echarts' , 50 , 'chart' , 'echarts' , b'0' , b'1' , b'0' , '' , NULL , NULL , '2019-11-21 09:04:32' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 90 , NULL , 5 , 1 , '运维管理' , 'Mnt' , '' , 20 , 'mnt' , 'mnt' , b'0' , b'0' , b'0' , NULL , NULL , NULL , '2019-11-09 10:31:08' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 92 , 90 , 3 , 1 , '服务器' , 'ServerDeploy' , 'mnt/server/index' , 22 , 'server' , 'mnt/serverDeploy' , b'0' , b'0' , b'0' , 'serverDeploy:list' , NULL , NULL , '2019-11-10 10:29:25' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 93 , 90 , 3 , 1 , '应用管理' , 'App' , 'mnt/app/index' , 23 , 'app' , 'mnt/app' , b'0' , b'0' , b'0' , 'app:list' , NULL , NULL , '2019-11-10 11:05:16' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 94 , 90 , 3 , 1 , '部署管理' , 'Deploy' , 'mnt/deploy/index' , 24 , 'deploy' , 'mnt/deploy' , b'0' , b'0' , b'0' , 'deploy:list' , NULL , NULL , '2019-11-10 15:56:55' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 97 , 90 , 1 , 1 , '部署备份' , 'DeployHistory' , 'mnt/deployHistory/index' , 25 , 'backup' , 'mnt/deployHistory' , b'0' , b'0' , b'0' , 'deployHistory:list' , NULL , NULL , '2019-11-10 16:49:44' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 98 , 90 , 3 , 1 , '数据库管理' , 'Database' , 'mnt/database/index' , 26 , 'database' , 'mnt/database' , b'0' , b'0' , b'0' , 'database:list' , NULL , NULL , '2019-11-10 20:40:04' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 102 , 97 , 0 , 2 , '删除' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'deployHistory:del' , NULL , NULL , '2019-11-17 09:32:48' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 103 , 92 , 0 , 2 , '服务器新增' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'serverDeploy:add' , NULL , NULL , '2019-11-17 11:08:33' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 104 , 92 , 0 , 2 , '服务器编辑' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'serverDeploy:edit' , NULL , NULL , '2019-11-17 11:08:57' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 105 , 92 , 0 , 2 , '服务器删除' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'serverDeploy:del' , NULL , NULL , '2019-11-17 11:09:15' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 106 , 93 , 0 , 2 , '应用新增' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'app:add' , NULL , NULL , '2019-11-17 11:10:03' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 107 , 93 , 0 , 2 , '应用编辑' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'app:edit' , NULL , NULL , '2019-11-17 11:10:28' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 108 , 93 , 0 , 2 , '应用删除' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'app:del' , NULL , NULL , '2019-11-17 11:10:55' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 109 , 94 , 0 , 2 , '部署新增' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'deploy:add' , NULL , NULL , '2019-11-17 11:11:22' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 110 , 94 , 0 , 2 , '部署编辑' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'deploy:edit' , NULL , NULL , '2019-11-17 11:11:41' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 111 , 94 , 0 , 2 , '部署删除' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'deploy:del' , NULL , NULL , '2019-11-17 11:12:01' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 112 , 98 , 0 , 2 , '数据库新增' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'database:add' , NULL , NULL , '2019-11-17 11:12:43' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 113 , 98 , 0 , 2 , '数据库编辑' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'database:edit' , NULL , NULL , '2019-11-17 11:12:58' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 114 , 98 , 0 , 2 , '数据库删除' , NULL , '' , 999 , '' , '' , b'0' , b'0' , b'0' , 'database:del' , NULL , NULL , '2019-11-17 11:13:14' , NULL ) ;
INSERT INTO ` sys_menu` VALUES ( 116 , 36 , 0 , 1 , '生成预览' , 'Preview' , 'generator/preview' , 999 , 'java' , 'generator/preview/:tableName' , b'0' , b'1' , b'1' , NULL , NULL , NULL , '2019-11-26 14:54:36' , NULL ) ;
COMMIT ;
用户角色表(sys_users_roles)
表字段 类型 注释 user_id int 用户ID role_id int 角色ID
DROP TABLE IF EXISTS ` sys_users_roles` ;
CREATE TABLE ` sys_users_roles` (
` user_id` bigint ( 20 ) NOT NULL COMMENT '用户ID' ,
` role_id` bigint ( 20 ) NOT NULL COMMENT '角色ID' ,
PRIMARY KEY ( ` user_id` , ` role_id` ) USING BTREE ,
KEY ` FKq4eq273l04bpu4efj0jd0jb98` ( ` role_id` ) USING BTREE
) ENGINE = InnoDB DEFAULT CHARSET = utf8 ROW_FORMAT= COMPACT COMMENT = '用户角色关联' ;
BEGIN ;
INSERT INTO ` sys_users_roles` VALUES ( 1 , 1 ) ;
INSERT INTO ` sys_users_roles` VALUES ( 2 , 2 ) ;
COMMIT ;
角色菜单表(sys_roles_menus)
表字段 类型 注释 role_id int 角色ID menu_id int 菜单ID
DROP TABLE IF EXISTS ` sys_roles_menus` ;
CREATE TABLE ` sys_roles_menus` (
` menu_id` bigint ( 20 ) NOT NULL COMMENT '菜单ID' ,
` role_id` bigint ( 20 ) NOT NULL COMMENT '角色ID' ,
PRIMARY KEY ( ` menu_id` , ` role_id` ) USING BTREE ,
KEY ` FKcngg2qadojhi3a651a5adkvbq` ( ` role_id` ) USING BTREE
) ENGINE = InnoDB DEFAULT CHARSET = utf8 ROW_FORMAT= COMPACT COMMENT = '角色菜单关联' ;
BEGIN ;
INSERT INTO ` sys_roles_menus` VALUES ( 1 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 2 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 3 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 5 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 6 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 7 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 9 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 10 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 11 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 14 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 15 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 18 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 19 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 21 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 22 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 23 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 24 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 27 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 28 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 30 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 32 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 33 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 34 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 35 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 36 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 37 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 38 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 39 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 41 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 44 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 45 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 46 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 48 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 49 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 50 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 52 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 53 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 54 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 56 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 57 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 58 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 60 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 61 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 62 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 64 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 65 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 66 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 73 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 74 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 75 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 77 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 78 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 79 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 80 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 82 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 83 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 90 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 92 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 93 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 94 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 97 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 98 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 102 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 103 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 104 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 105 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 106 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 107 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 108 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 109 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 110 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 111 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 112 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 113 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 114 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 116 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 120 , 1 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 1 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 2 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 6 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 7 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 9 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 10 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 11 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 14 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 15 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 19 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 21 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 22 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 23 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 24 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 27 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 30 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 32 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 33 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 34 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 36 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 80 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 82 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 83 , 2 ) ;
INSERT INTO ` sys_roles_menus` VALUES ( 116 , 2 ) ;
COMMIT ;
后端
Springboot集成Mybatis
实体类 entity
SysRole.java
@Data
public class SysRole {
private Long roleId;
private String name;
private Date createTime;
}
SysUser.java
@Data
public class SysUser {
private Long userId;
private String username;
private String password;
private String avatar;
@JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "UTC" )
private Date createTime;
private Integer enabled;
}
SysMenu.java
@Data
public class SysMenu {
private Long menuId;
private String name;
private String title;
private String path;
private String icon;
private Long pid;
private String permission;
private Integer menuSort;
@TableField ( exist = false )
private Set < SysMenu > childrenList = new HashSet < > ( ) ;
}
SysUserRole.java
@Data
public class SysUserRole {
private Long userId;
private Long roleId;
}
SysRoleMenu.java
@Data
public class SysRoleMenu {
private Long roleId;
private Long menuId;
}
service
public List < SysMenu > menuTree ( Long userId) {
List < SysMenu > sysMenuList = sysMenuMapper. selectMenuListByUserId ( userId) ;
List < SysMenu > firstMenuList = sysMenuList. stream ( ) . filter ( sysMenu -> sysMenu. getPid ( ) == null ) . collect ( Collectors . toList ( ) ) ;
for ( SysMenu menu : firstMenuList) {
getChildrenList ( menu, sysMenuList) ;
}
return firstMenuList;
}
public SysMenu getChildrenList ( SysMenu sysMenu, List < SysMenu > sysMenuList) {
for ( SysMenu menu : sysMenuList) {
if ( menu. getPid ( ) != null && menu. getPid ( ) . equals ( sysMenu. getMenuId ( ) ) ) {
sysMenu. getChildrenList ( ) . add ( getChildrenList ( menu, sysMenuList) ) ;
}
}
return sysMenu;
}