Commit 69a3e8e7d017d60b97b0307975b4f5e83e39a782

Authored by “谢茂盛”
1 parent cef5b63d

init: 基础登录相关

Showing 38 changed files with 2081 additions and 56 deletions
sql/init.sql
1   -# 部门表
  1 +DROP TABLE IF EXISTS `admin_dept`;
2 2 CREATE TABLE `admin_dept` (
3 3 `id` bigint NOT NULL AUTO_INCREMENT,
4 4 `pid` bigint(20) DEFAULT NULL COMMENT '上级部门',
... ... @@ -14,7 +14,21 @@ CREATE TABLE `admin_dept` (
14 14 PRIMARY KEY (`id`)
15 15 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
16 16  
  17 +-- ----------------------------
  18 +-- Records of admin_dept
  19 +-- ----------------------------
  20 +BEGIN;
  21 +INSERT INTO `admin_dept` VALUES (2, 7, 1, '研发部', 3, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  22 +INSERT INTO `admin_dept` VALUES (5, 7, 0, '运维部', 4, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  23 +INSERT INTO `admin_dept` VALUES (6, 8, 0, '测试部', 6, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  24 +INSERT INTO `admin_dept` VALUES (7, NULL, 2, '华南分部', 0, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  25 +INSERT INTO `admin_dept` VALUES (8, NULL, 2, '华北分部', 1, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  26 +INSERT INTO `admin_dept` VALUES (15, 8, 0, 'UI部门', 7, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  27 +INSERT INTO `admin_dept` VALUES (17, 2, 0, '研发一组', 999, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  28 +COMMIT;
17 29  
  30 +
  31 +DROP TABLE IF EXISTS `admin_job`;
18 32 # 岗位表
19 33 CREATE TABLE `admin_job` (
20 34 `id` bigint NOT NULL AUTO_INCREMENT,
... ... @@ -30,6 +44,15 @@ CREATE TABLE `admin_job` (
30 44 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='岗位表';
31 45  
32 46  
  47 +BEGIN;
  48 +INSERT INTO `admin_job` VALUES (8, '人事专员', 3, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  49 +INSERT INTO `admin_job` VALUES (10, '产品经理', 4, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  50 +INSERT INTO `admin_job` VALUES (11, '全栈开发', 2, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  51 +INSERT INTO `admin_job` VALUES (12, '软件测试', 5, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  52 +COMMIT;
  53 +
  54 +
  55 +DROP TABLE IF EXISTS `admin_menu`;
33 56 # 菜单表
34 57 CREATE TABLE `admin_menu` (
35 58 `id` bigint NOT NULL AUTO_INCREMENT,
... ... @@ -52,13 +75,81 @@ CREATE TABLE `admin_menu` (
52 75 `modify_time` DATETIME DEFAULT NULL COMMENT '修改时间',
53 76 `modify_by` varchar(64) DEFAULT NULL COMMENT '修改人',
54 77 `version` INT DEFAULT NULL COMMENT '版本号--乐观锁预留字段',
55   - PRIMARY KEY (`menu_id`) USING BTREE,
  78 + PRIMARY KEY (`id`),
56 79 UNIQUE KEY `uniq_title` (`title`),
57 80 UNIQUE KEY `uniq_name` (`name`),
58 81 KEY `inx_pid` (`pid`)
59   -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
  82 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
  83 +
  84 +
60 85  
  86 +BEGIN;
  87 +INSERT INTO `admin_menu` VALUES (1, NULL, 7, 0, '系统管理', NULL, NULL, 1, 'system', 'system', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  88 +INSERT INTO `admin_menu` VALUES (2, 1, 3, 1, '用户管理', 'User', 'system/user/index', 2, 'peoples', 'user', b'0', b'0', b'0', 'user:list',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  89 +INSERT INTO `admin_menu` VALUES (3, 1, 3, 1, '角色管理', 'Role', 'system/role/index', 3, 'role', 'role', b'0', b'0', b'0', 'roles:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  90 +INSERT INTO `admin_menu` VALUES (5, 1, 3, 1, '菜单管理', 'Menu', 'system/menu/index', 5, 'menu', 'menu', b'0', b'0', b'0', 'menu:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  91 +INSERT INTO `admin_menu` VALUES (6, NULL, 5, 0, '系统监控', NULL, NULL, 10, 'monitor', 'monitor', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  92 +INSERT INTO `admin_menu` VALUES (7, 6, 0, 1, '操作日志', 'Log', 'monitor/log/index', 11, 'log', 'logs', b'0', b'1', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  93 +INSERT INTO `admin_menu` VALUES (9, 6, 0, 1, 'SQL监控', 'Sql', 'monitor/sql/index', 18, 'sqlMonitor', 'druid', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  94 +INSERT INTO `admin_menu` VALUES (10, NULL, 5, 0, '组件管理', NULL, NULL, 50, 'zujian', 'components', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  95 +INSERT INTO `admin_menu` VALUES (11, 10, 0, 1, '图标库', 'Icons', 'components/icons/index', 51, 'icon', 'icon', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  96 +INSERT INTO `admin_menu` VALUES (14, 36, 0, 1, '邮件工具', 'Email', 'tools/email/index', 35, 'email', 'email', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  97 +INSERT INTO `admin_menu` VALUES (15, 10, 0, 1, '富文本', 'Editor', 'components/Editor', 52, 'fwb', 'tinymce', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  98 +INSERT INTO `admin_menu` VALUES (18, 36, 3, 1, '存储管理', 'Storage', 'tools/storage/index', 34, 'qiniu', 'storage', b'0', b'0', b'0', 'storage:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  99 +INSERT INTO `admin_menu` VALUES (19, 36, 0, 1, '支付宝工具', 'AliPay', 'tools/aliPay/index', 37, 'alipay', 'aliPay', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  100 +INSERT INTO `admin_menu` VALUES (21, NULL, 2, 0, '多级菜单', NULL, '', 900, 'menu', 'nested', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  101 +INSERT INTO `admin_menu` VALUES (22, 21, 2, 0, '二级菜单1', NULL, '', 999, 'menu', 'menu1', b'0', b'0', b'0', NULL,10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  102 +INSERT INTO `admin_menu` VALUES (23, 21, 0, 1, '二级菜单2', NULL, 'nested/menu2/index', 999, 'menu', 'menu2', b'0', b'0', b'0', NULL,10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  103 +INSERT INTO `admin_menu` VALUES (24, 22, 0, 1, '三级菜单1', 'Test', 'nested/menu1/menu1-1', 999, 'menu', 'menu1-1', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  104 +INSERT INTO `admin_menu` VALUES (27, 22, 0, 1, '三级菜单2', NULL, 'nested/menu1/menu1-2', 999, 'menu', 'menu1-2', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  105 +INSERT INTO `admin_menu` VALUES (28, 1, 3, 1, '任务调度', 'Timing', 'system/timing/index', 999, 'timing', 'timing', b'0', b'0', b'0', 'timing:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  106 +INSERT INTO `admin_menu` VALUES (30, 36, 0, 1, '代码生成', 'GeneratorIndex', 'generator/index', 32, 'dev', 'generator', b'0', b'1', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  107 +INSERT INTO `admin_menu` VALUES (32, 6, 0, 1, '异常日志', 'ErrorLog', 'monitor/log/errorLog', 12, 'error', 'errorLog', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  108 +INSERT INTO `admin_menu` VALUES (33, 10, 0, 1, 'Markdown', 'Markdown', 'components/MarkDown', 53, 'markdown', 'markdown', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  109 +INSERT INTO `admin_menu` VALUES (34, 10, 0, 1, 'Yaml编辑器', 'YamlEdit', 'components/YamlEdit', 54, 'dev', 'yaml', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  110 +INSERT INTO `admin_menu` VALUES (35, 1, 3, 1, '部门管理', 'Dept', 'system/dept/index', 6, 'dept', 'dept', b'0', b'0', b'0', 'dept:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  111 +INSERT INTO `admin_menu` VALUES (36, NULL, 7, 0, '系统工具', NULL, '', 30, 'sys-tools', 'sys-tools', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  112 +INSERT INTO `admin_menu` VALUES (37, 1, 3, 1, '岗位管理', 'Job', 'system/job/index', 7, 'Steve-Jobs', 'job', b'0', b'0', b'0', 'job:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  113 +INSERT INTO `admin_menu` VALUES (38, 36, 0, 1, '接口文档', 'Swagger', 'tools/swagger/index', 36, 'swagger', 'swagger2', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  114 +INSERT INTO `admin_menu` VALUES (39, 1, 3, 1, '字典管理', 'Dict', 'system/dict/index', 8, 'dictionary', 'dict', b'0', b'0', b'0', 'dict:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  115 +INSERT INTO `admin_menu` VALUES (41, 6, 0, 1, '在线用户', 'OnlineUser', 'monitor/online/index', 10, 'Steve-Jobs', 'online', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  116 +INSERT INTO `admin_menu` VALUES (44, 2, 0, 2, '用户新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'user:add', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  117 +INSERT INTO `admin_menu` VALUES (45, 2, 0, 2, '用户编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'user:edit',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  118 +INSERT INTO `admin_menu` VALUES (46, 2, 0, 2, '用户删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'user:del', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  119 +INSERT INTO `admin_menu` VALUES (48, 3, 0, 2, '角色创建', NULL, '', 2, '', '', b'0', b'0', b'0', 'roles:add', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  120 +INSERT INTO `admin_menu` VALUES (49, 3, 0, 2, '角色修改', NULL, '', 3, '', '', b'0', b'0', b'0', 'roles:edit', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  121 +INSERT INTO `admin_menu` VALUES (50, 3, 0, 2, '角色删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'roles:del', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  122 +INSERT INTO `admin_menu` VALUES (52, 5, 0, 2, '菜单新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'menu:add', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  123 +INSERT INTO `admin_menu` VALUES (53, 5, 0, 2, '菜单编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'menu:edit', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  124 +INSERT INTO `admin_menu` VALUES (54, 5, 0, 2, '菜单删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'menu:del', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  125 +INSERT INTO `admin_menu` VALUES (56, 35, 0, 2, '部门新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'dept:add', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  126 +INSERT INTO `admin_menu` VALUES (57, 35, 0, 2, '部门编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'dept:edit', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  127 +INSERT INTO `admin_menu` VALUES (58, 35, 0, 2, '部门删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'dept:del', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  128 +INSERT INTO `admin_menu` VALUES (60, 37, 0, 2, '岗位新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'job:add', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  129 +INSERT INTO `admin_menu` VALUES (61, 37, 0, 2, '岗位编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'job:edit', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  130 +INSERT INTO `admin_menu` VALUES (62, 37, 0, 2, '岗位删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'job:del',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  131 +INSERT INTO `admin_menu` VALUES (64, 39, 0, 2, '字典新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'dict:add', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  132 +INSERT INTO `admin_menu` VALUES (65, 39, 0, 2, '字典编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'dict:edit',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  133 +INSERT INTO `admin_menu` VALUES (66, 39, 0, 2, '字典删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'dict:del', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  134 +INSERT INTO `admin_menu` VALUES (73, 28, 0, 2, '任务新增', NULL, '', 2, '', '', b'0', b'0', b'0', 'timing:add', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  135 +INSERT INTO `admin_menu` VALUES (74, 28, 0, 2, '任务编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'timing:edit', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  136 +INSERT INTO `admin_menu` VALUES (75, 28, 0, 2, '任务删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'timing:del',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  137 +INSERT INTO `admin_menu` VALUES (77, 18, 0, 2, '上传文件', NULL, '', 2, '', '', b'0', b'0', b'0', 'storage:add', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  138 +INSERT INTO `admin_menu` VALUES (78, 18, 0, 2, '文件编辑', NULL, '', 3, '', '', b'0', b'0', b'0', 'storage:edit', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  139 +INSERT INTO `admin_menu` VALUES (79, 18, 0, 2, '文件删除', NULL, '', 4, '', '', b'0', b'0', b'0', 'storage:del', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  140 +INSERT INTO `admin_menu` VALUES (80, 6, 0, 1, '服务监控', 'ServerMonitor', 'monitor/server/index', 14, 'codeConsole', 'server', b'0', b'0', b'0', 'monitor:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  141 +INSERT INTO `admin_menu` VALUES (82, 36, 0, 1, '生成配置', 'GeneratorConfig', 'generator/config', 33, 'dev', 'generator/config/:tableName', b'0', b'1', b'1', '',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  142 +INSERT INTO `admin_menu` VALUES (83, 10, 0, 1, '图表库', 'Echarts', 'components/Echarts', 50, 'chart', 'echarts', b'0', b'1', b'0', '', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  143 +INSERT INTO `admin_menu` VALUES (90, NULL, 5, 1, '运维管理', 'Mnt', '', 20, 'mnt', 'mnt', b'0', b'0', b'0', NULL, 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  144 +INSERT INTO `admin_menu` VALUES (92, 90, 3, 1, '服务器', 'ServerDeploy', 'mnt/server/index', 22, 'server', 'mnt/serverDeploy', b'0', b'0', b'0', 'serverDeploy:list',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  145 +INSERT INTO `admin_menu` VALUES (93, 90, 3, 1, '应用管理', 'App', 'mnt/app/index', 23, 'app', 'mnt/app', b'0', b'0', b'0', 'app:list',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  146 +INSERT INTO `admin_menu` VALUES (94, 90, 3, 1, '部署管理', 'Deploy', 'mnt/deploy/index', 24, 'deploy', 'mnt/deploy', b'0', b'0', b'0', 'deploy:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  147 +INSERT INTO `admin_menu` VALUES (97, 90, 1, 1, '部署备份', 'DeployHistory', 'mnt/deployHistory/index', 25, 'backup', 'mnt/deployHistory', b'0', b'0', b'0', 'deployHistory:list', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  148 +INSERT INTO `admin_menu` VALUES (98, 90, 3, 1, '数据库管理', 'Database', 'mnt/database/index', 26, 'database', 'mnt/database', b'0', b'0', b'0', 'database:list',10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
61 149  
  150 +COMMIT;
  151 +
  152 +DROP TABLE IF EXISTS `admin_role`;
62 153 # 角色表
63 154 CREATE TABLE `admin_role` (
64 155 `id` bigint NOT NULL AUTO_INCREMENT,
... ... @@ -76,26 +167,141 @@ CREATE TABLE `admin_role` (
76 167 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
77 168  
78 169  
  170 +BEGIN;
  171 +INSERT INTO `admin_role` VALUES (1, '超级管理员', 1, '-', '全部', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  172 +INSERT INTO `admin_role` VALUES (2, '普通用户', 2, '-', '本级', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  173 +COMMIT;
  174 +
  175 +
  176 +
  177 +DROP TABLE IF EXISTS `admin_role_dept`;
79 178 # 角色-部门表
80 179 CREATE TABLE `admin_role_dept` (
81 180 `id` bigint NOT NULL AUTO_INCREMENT,
82 181 `role_id` bigint NOT NULL COMMENT '角色id',
83 182 `dept_id` bigint NOT NULL COMMENT '部门id',
84   - UNIQUE KEY (`role_id`,`dept_id`)
  183 + UNIQUE KEY (`role_id`,`dept_id`),
85 184 PRIMARY KEY (`id`)
86 185 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色-部门表';
87 186  
88   -
  187 +DROP TABLE IF EXISTS `admin_role_menu`;
89 188 # 角色-菜单表
90 189 CREATE TABLE `admin_role_menu` (
91 190 `id` bigint NOT NULL AUTO_INCREMENT,
92 191 `role_id` bigint NOT NULL COMMENT '角色id',
93 192 `menu_id` bigint NOT NULL COMMENT '菜单id',
94   - UNIQUE KEY (`role_id`,`menu_id`)
  193 + UNIQUE KEY (`role_id`,`menu_id`),
95 194 PRIMARY KEY (`id`)
96 195 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色-菜单表';
97 196  
98 197  
  198 +BEGIN;
  199 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (1, 1);
  200 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (2, 1);
  201 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (3, 1);
  202 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (5, 1);
  203 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (6, 1);
  204 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (7, 1);
  205 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (9, 1);
  206 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (10, 1);
  207 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (11, 1);
  208 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (14, 1);
  209 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (15, 1);
  210 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (18, 1);
  211 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (19, 1);
  212 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (21, 1);
  213 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (22, 1);
  214 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (23, 1);
  215 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (24, 1);
  216 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (27, 1);
  217 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (28, 1);
  218 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (30, 1);
  219 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (32, 1);
  220 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (33, 1);
  221 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (34, 1);
  222 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (35, 1);
  223 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (36, 1);
  224 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (37, 1);
  225 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (38, 1);
  226 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (39, 1);
  227 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (41, 1);
  228 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (44, 1);
  229 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (45, 1);
  230 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (46, 1);
  231 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (48, 1);
  232 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (49, 1);
  233 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (50, 1);
  234 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (52, 1);
  235 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (53, 1);
  236 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (54, 1);
  237 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (56, 1);
  238 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (57, 1);
  239 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (58, 1);
  240 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (60, 1);
  241 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (61, 1);
  242 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (62, 1);
  243 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (64, 1);
  244 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (65, 1);
  245 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (66, 1);
  246 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (73, 1);
  247 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (74, 1);
  248 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (75, 1);
  249 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (77, 1);
  250 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (78, 1);
  251 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (79, 1);
  252 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (80, 1);
  253 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (82, 1);
  254 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (83, 1);
  255 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (90, 1);
  256 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (92, 1);
  257 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (93, 1);
  258 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (94, 1);
  259 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (97, 1);
  260 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (98, 1);
  261 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (102, 1);
  262 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (103, 1);
  263 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (104, 1);
  264 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (105, 1);
  265 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (106, 1);
  266 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (107, 1);
  267 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (108, 1);
  268 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (109, 1);
  269 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (110, 1);
  270 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (111, 1);
  271 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (112, 1);
  272 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (113, 1);
  273 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (114, 1);
  274 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (116, 1);
  275 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (120, 1);
  276 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (1, 2);
  277 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (2, 2);
  278 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (6, 2);
  279 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (7, 2);
  280 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (9, 2);
  281 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (10, 2);
  282 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (11, 2);
  283 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (14, 2);
  284 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (15, 2);
  285 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (19, 2);
  286 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (21, 2);
  287 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (22, 2);
  288 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (23, 2);
  289 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (24, 2);
  290 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (27, 2);
  291 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (30, 2);
  292 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (32, 2);
  293 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (33, 2);
  294 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (34, 2);
  295 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (36, 2);
  296 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (80, 2);
  297 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (82, 2);
  298 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (83, 2);
  299 +INSERT INTO `admin_role_menu`(`role_id`,`menu_id`) VALUES (116, 2);
  300 +COMMIT;
  301 +
  302 +
  303 +DROP TABLE IF EXISTS `admin_user`;
  304 +
99 305 # 用户表
100 306 CREATE TABLE `admin_user` (
101 307 `id` bigint NOT NULL AUTO_INCREMENT,
... ... @@ -116,34 +322,54 @@ CREATE TABLE `admin_user` (
116 322 `modify_time` DATETIME DEFAULT NULL COMMENT '修改时间',
117 323 `modify_by` varchar(64) DEFAULT NULL COMMENT '修改人',
118 324 `version` INT DEFAULT NULL COMMENT '版本号--乐观锁预留字段',
119   - UNIQUE KEY `uniq_username` (`username`),
  325 + UNIQUE KEY `uniq_username` (`user_name`),
120 326 UNIQUE KEY `uniq_phone` (`phone`),
121 327 UNIQUE KEY `uniq_email` (`email`),
122 328 PRIMARY KEY (`id`)
123 329  
124 330 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
125 331  
  332 +BEGIN;
  333 +INSERT INTO `admin_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','2020-05-03 16:38:31', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  334 +INSERT INTO `admin_user` VALUES (2, 2, 'test', '测试', '男', '19999999999', '231@qq.com', NULL, NULL, '$2a$10$4XcyudOYTSz6fue6KFNMHeUQnCX5jbBQypLEnGk1PmekXt5c95JcK', b'0', '2020-05-03 16:38:31', 10, '2019-03-25 09:15:32', 'admin', '2020-08-02 14:48:47','admin',NULL);
  335 +COMMIT;
  336 +
  337 +
126 338  
  339 +DROP TABLE IF EXISTS `admin_user_job`;
127 340 # 用户-岗位表
128 341 CREATE TABLE `admin_user_job` (
129 342 `id` bigint NOT NULL AUTO_INCREMENT,
130 343 `user_id` bigint(20) NOT NULL COMMENT '用户ID',
131 344 `job_id` bigint(20) NOT NULL COMMENT '岗位ID',
132   - UNIQUE KEY (`user_id`,`job_id`)
  345 + UNIQUE KEY (`user_id`,`job_id`),
133 346 PRIMARY KEY (`id`)
134 347 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户-岗位表';
135 348  
136 349  
  350 +BEGIN;
  351 +INSERT INTO `admin_user_job` VALUES (1,1, 11);
  352 +INSERT INTO `admin_user_job` VALUES (2,2, 12);
  353 +COMMIT;
  354 +
  355 +
  356 +DROP TABLE IF EXISTS `admin_user_role`;
137 357 # 用户角色表
138 358 CREATE TABLE `admin_user_role` (
139 359 `id` bigint NOT NULL AUTO_INCREMENT,
140 360 `user_id` bigint NOT NULL COMMENT '用户id',
141 361 `role_id` bigint NOT NULL COMMENT '角色id',
142   - UNIQUE KEY (`user_id`,`role_id`)
  362 + UNIQUE KEY (`user_id`,`role_id`),
143 363 PRIMARY KEY (`id`)
144 364 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色表';
145 365  
146 366  
  367 +BEGIN;
  368 +INSERT INTO `admin_user_role` VALUES (1,1, 1);
  369 +INSERT INTO `admin_user_role` VALUES (2,2, 2);
  370 +COMMIT;
  371 +
  372 +
147 373 # 字典表
148 374 CREATE TABLE `dictionary` (
149 375 `id` bigint NOT NULL AUTO_INCREMENT,
... ... @@ -159,4 +385,28 @@ CREATE TABLE `dictionary` (
159 385 `modify_by` varchar(64) DEFAULT NULL COMMENT '修改人',
160 386 `version` INT DEFAULT NULL COMMENT '版本号--乐观锁预留字段',
161 387 PRIMARY KEY (`id`)
162   -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典表';
163 388 \ No newline at end of file
  389 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典表';
  390 +
  391 +DROP TABLE IF EXISTS `sys_log`;
  392 +CREATE TABLE `sys_log` (
  393 + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  394 + `description` varchar(255) DEFAULT NULL,
  395 + `log_type` varchar(10) DEFAULT NULL,
  396 + `method` varchar(255) DEFAULT NULL,
  397 + `params` text DEFAULT NULL,
  398 + `request_ip` varchar(255) DEFAULT NULL,
  399 + `time` bigint(20) DEFAULT NULL,
  400 + `username` varchar(255) DEFAULT NULL,
  401 + `address` varchar(255) DEFAULT NULL,
  402 + `browser` varchar(255) DEFAULT NULL,
  403 + `exception_detail` text DEFAULT NULL,
  404 + `enable_flag` INT NOT NULL COMMENT '是否可用 10-可用 20-删除',
  405 + `create_time` DATETIME NOT NULL COMMENT '创建时间',
  406 + `create_by` varchar(64) NOT NULL COMMENT '创建人',
  407 + `modify_time` DATETIME DEFAULT NULL COMMENT '修改时间',
  408 + `modify_by` varchar(64) DEFAULT NULL COMMENT '修改人',
  409 + `version` INT DEFAULT NULL COMMENT '版本号--乐观锁预留字段',
  410 + PRIMARY KEY (`id`) ,
  411 + KEY `log_create_time_index` (`create_time`),
  412 + KEY `inx_log_type` (`log_type`)
  413 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统日志';
164 414 \ No newline at end of file
... ...
src/main/java/com/order/erp/common/utils/RequestHolder.java 0 → 100644
  1 +package com.order.erp.common.utils;
  2 +
  3 +import org.springframework.web.context.request.RequestContextHolder;
  4 +import org.springframework.web.context.request.ServletRequestAttributes;
  5 +
  6 +import javax.servlet.http.HttpServletRequest;
  7 +import java.util.Objects;
  8 +
  9 +/**
  10 + * 获取 HttpServletRequest
  11 + *
  12 + * @date 2018-11-24
  13 + */
  14 +public class RequestHolder {
  15 +
  16 + public static HttpServletRequest getHttpServletRequest() {
  17 + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
  18 + }
  19 +}
... ...
src/main/java/com/order/erp/common/utils/SecurityUtils.java 0 → 100644
  1 +package com.order.erp.common.utils;
  2 +
  3 +import cn.hutool.json.JSONObject;
  4 +import com.canrd.shop.common.constant.ServerResultCode;
  5 +import com.order.erp.common.exception.BusinessException;
  6 +import org.springframework.security.core.context.SecurityContextHolder;
  7 +import org.springframework.security.core.userdetails.UserDetails;
  8 +
  9 +/**
  10 + * 获取当前登录的用户
  11 + *
  12 + * @date 2019-01-17
  13 + */
  14 +public class SecurityUtils {
  15 +
  16 + public static UserDetails getUserDetails() {
  17 + UserDetails userDetails;
  18 + try {
  19 + userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
  20 + } catch (Exception e) {
  21 + throw new BusinessException(ServerResultCode.PARAM_ERROR);
  22 + }
  23 + return userDetails;
  24 + }
  25 +
  26 + /**
  27 + * 获取系统用户名称
  28 + *
  29 + * @return 系统用户名称
  30 + */
  31 + public static String getUsername() {
  32 + UserDetails userDetails = getUserDetails();
  33 + return userDetails.getUsername();
  34 + }
  35 +}
... ...
src/main/java/com/order/erp/config/DataScope.java 0 → 100644
  1 +package com.order.erp.config;
  2 +
  3 +import com.order.erp.common.utils.SecurityUtils;
  4 +import com.order.erp.domain.vo.UserVO;
  5 +import com.order.erp.service.admin.AdminUserService;
  6 +import org.springframework.stereotype.Component;
  7 +
  8 +import javax.annotation.Resource;
  9 +
  10 +/**
  11 + * 数据权限配置
  12 + *
  13 + * @date 2019-4-1
  14 + */
  15 +@Component
  16 +public class DataScope {
  17 +
  18 + @Resource
  19 + private AdminUserService userService;
  20 +
  21 + /**
  22 + * @return
  23 + */
  24 + public Long getLoginUserId() {
  25 + UserVO user = userService.findByUserName(SecurityUtils.getUsername());
  26 + return user.getId();
  27 + }
  28 +
  29 + /**
  30 + * @return
  31 + */
  32 + public UserVO getUser() {
  33 + return userService.findByUserName(SecurityUtils.getUsername());
  34 + }
  35 +}
... ...
src/main/java/com/order/erp/config/ElPermissionConfig.java 0 → 100644
  1 +package com.order.erp.config;
  2 +
  3 +import com.order.erp.common.utils.SecurityUtils;
  4 +import org.springframework.security.core.GrantedAuthority;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +import java.util.Arrays;
  8 +import java.util.List;
  9 +import java.util.stream.Collectors;
  10 +
  11 +/**
  12 + *
  13 + */
  14 +@Service(value = "el")
  15 +public class ElPermissionConfig {
  16 +
  17 + public Boolean check(String... permissions) {
  18 + // 获取当前用户的所有权限
  19 + List<String> elPermissions = SecurityUtils.getUserDetails().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
  20 + // 判断当前用户的所有权限是否包含接口上定义的权限
  21 + return elPermissions.contains("admin") || Arrays.stream(permissions).anyMatch(elPermissions::contains);
  22 + }
  23 +}
... ...
src/main/java/com/order/erp/controller/LoginController.java 0 → 100644
  1 +package com.order.erp.controller;
  2 +
  3 +import com.order.erp.common.annotation.AnonymousAccess;
  4 +import com.order.erp.common.constant.ServerResult;
  5 +import com.order.erp.domain.vo.admin.*;
  6 +import com.order.erp.log.Log;
  7 +import com.order.erp.security.TokenProvider;
  8 +import com.order.erp.security.service.OnlineUserService;
  9 +import com.order.erp.service.admin.AdminUserService;
  10 +import org.springframework.validation.annotation.Validated;
  11 +import org.springframework.web.bind.annotation.PostMapping;
  12 +import org.springframework.web.bind.annotation.RequestBody;
  13 +import org.springframework.web.bind.annotation.RequestMapping;
  14 +import org.springframework.web.bind.annotation.RestController;
  15 +
  16 +import javax.annotation.Resource;
  17 +import javax.servlet.http.HttpServletRequest;
  18 +
  19 +
  20 +@RestController
  21 +@RequestMapping("/order/erp/auth")
  22 +public class LoginController {
  23 +
  24 + @Resource
  25 + private AdminUserService userService;
  26 +
  27 + @Resource
  28 + private OnlineUserService onlineUserService;
  29 +
  30 + @Resource
  31 + private TokenProvider tokenProvider;
  32 +
  33 + /**
  34 + * 手机注册
  35 + *
  36 + * @param registerVO 查询条件
  37 + * @return 查询结果
  38 + */
  39 + @AnonymousAccess
  40 + @PostMapping("/phone_register")
  41 + public ServerResult phoneRegister(@RequestBody @Validated AdminUserRegisterVO registerVO) {
  42 + return userService.phoneRegister(registerVO);
  43 + }
  44 +
  45 + /**
  46 + * 手机登录
  47 + *
  48 + * @param loginByPhoneVO 查询条件
  49 + * @return 查询结果
  50 + */
  51 + @AnonymousAccess
  52 + @PostMapping("/login_by_phone")
  53 + public ServerResult loginByPhone(@RequestBody @Validated AdminUserLoginByPhoneVO loginByPhoneVO) {
  54 + return userService.loginByPhone(loginByPhoneVO);
  55 + }
  56 +
  57 + /**
  58 + * 密码登录
  59 + *
  60 + * @param loginByPwdVO 查询条件
  61 + * @return 查询结果
  62 + */
  63 + @AnonymousAccess
  64 + @Log("用户登录")
  65 + @PostMapping("/login_by_pwd")
  66 + public ServerResult loginByPwd(@RequestBody @Validated AdminUserLoginByPwdVO loginByPwdVO) {
  67 + return userService.loginByPwd(loginByPwdVO);
  68 + }
  69 +
  70 + /**
  71 + * 发送密码找回邮件
  72 + *
  73 + * @param recoverEmailVO 查询条件
  74 + * @return 查询结果
  75 + */
  76 + @AnonymousAccess
  77 + @PostMapping("/send_password_recover_mail")
  78 + public ServerResult sendPasswordRecoverMail(@RequestBody @Validated AdminUserPasswordRecoverEmailVO recoverEmailVO) {
  79 + return userService.sendPasswordRecoverMail(recoverEmailVO);
  80 + }
  81 +
  82 + /**
  83 + * 密码修改
  84 + *
  85 + * @param modifyPwdVO 查询条件
  86 + * @return 查询结果
  87 + */
  88 + @AnonymousAccess
  89 + @PostMapping("/password_modify")
  90 + public ServerResult passwordModify(@RequestBody @Validated AdminUserModifyPwdVO modifyPwdVO) {
  91 + return userService.passwordModify(modifyPwdVO);
  92 + }
  93 +
  94 + /**
  95 + * 退出登录
  96 + *
  97 + * @param request
  98 + * @return 查询结果
  99 + */
  100 + @AnonymousAccess
  101 + @PostMapping("/login_out")
  102 + public ServerResult loginOut(HttpServletRequest request) {
  103 + onlineUserService.logout(tokenProvider.getToken(request));
  104 + return ServerResult.success();
  105 + }
  106 +}
... ...
src/main/java/com/order/erp/controller/RoleController.java 0 → 100644
  1 +package com.order.erp.controller;
  2 +
  3 +import com.order.erp.common.constant.ServerResult;
  4 +import com.order.erp.domain.vo.admin.AdminRoleQueryVO;
  5 +import com.order.erp.domain.vo.admin.AdminRoleVO;
  6 +import com.order.erp.log.Log;
  7 +import com.order.erp.service.admin.AdminRoleService;
  8 +import com.order.erp.service.admin.AdminUserService;
  9 +import io.swagger.annotations.Api;
  10 +import io.swagger.annotations.ApiOperation;
  11 +import org.springframework.security.access.prepost.PreAuthorize;
  12 +import org.springframework.validation.annotation.Validated;
  13 +import org.springframework.web.bind.annotation.PostMapping;
  14 +import org.springframework.web.bind.annotation.RequestBody;
  15 +import org.springframework.web.bind.annotation.RequestMapping;
  16 +import org.springframework.web.bind.annotation.RestController;
  17 +
  18 +import javax.annotation.Resource;
  19 +
  20 +/**
  21 + * @date 2018-12-03
  22 + */
  23 +@Api(tags = "系统:角色管理")
  24 +@RestController
  25 +@RequestMapping("/order/erp/roles")
  26 +public class RoleController {
  27 +
  28 + @Resource
  29 + private AdminRoleService roleService;
  30 +
  31 + @Resource
  32 + private AdminUserService userService;
  33 +
  34 + private static final String ENTITY_NAME = "role";
  35 +
  36 +
  37 + @ApiOperation("获取单个role")
  38 + @PostMapping(value = "/detail")
  39 + @PreAuthorize("@el.check('roles:list')")
  40 + public ServerResult detail(@RequestBody @Validated AdminRoleQueryVO queryVO) {
  41 + return ServerResult.success(roleService.getById(queryVO.getId()));
  42 + }
  43 +
  44 + @ApiOperation("返回全部的角色")
  45 + @PostMapping(value = "/all")
  46 + @PreAuthorize("@el.check('roles:list','user:add','user:edit')")
  47 + public ServerResult getAll(@RequestBody @Validated AdminRoleQueryVO queryVO) {
  48 + return roleService.listByLevel(queryVO.getLevel());
  49 + }
  50 +
  51 + @Log("查询角色")
  52 + @ApiOperation("查询角色")
  53 + @PostMapping(value = "/list_by_page")
  54 + @PreAuthorize("@el.check('roles:list')")
  55 + public ServerResult listByPage(@RequestBody @Validated AdminRoleQueryVO queryVO) {
  56 + return roleService.listByPage(queryVO);
  57 + }
  58 +
  59 + @Log("新增角色")
  60 + @ApiOperation("新增角色")
  61 + @PostMapping(value = "/add")
  62 + @PreAuthorize("@el.check('roles:add')")
  63 + public ServerResult add(@RequestBody @Validated AdminRoleVO roleVO) {
  64 + return ServerResult.success();
  65 + }
  66 +
  67 + @Log("修改角色")
  68 + @ApiOperation("修改角色")
  69 + @PostMapping(value = "/edit")
  70 + @PreAuthorize("@el.check('roles:edit')")
  71 + public ServerResult edit(@RequestBody @Validated AdminRoleVO roleVO) {
  72 + return ServerResult.success();
  73 + }
  74 +
  75 + @Log("修改角色菜单")
  76 + @ApiOperation("修改角色菜单")
  77 + @PostMapping(value = "/edit_menu")
  78 + @PreAuthorize("@el.check('roles:edit')")
  79 + public ServerResult editMenu(@RequestBody @Validated AdminRoleVO roleVO) {
  80 + return ServerResult.success();
  81 + }
  82 +
  83 + @Log("删除角色")
  84 + @ApiOperation("删除角色")
  85 + @PostMapping(value = "/delete")
  86 + @PreAuthorize("@el.check('roles:del')")
  87 + public ServerResult delete(@RequestBody @Validated AdminRoleQueryVO queryVO) {
  88 + return ServerResult.success();
  89 + }
  90 +}
... ...
src/main/java/com/order/erp/controller/SysLogController.java 0 → 100644
  1 +package com.order.erp.controller;
  2 +
  3 +import com.order.erp.common.constant.ServerResult;
  4 +import com.order.erp.domain.vo.SysLogQueryVO;
  5 +import com.order.erp.domain.vo.SysLogVO;
  6 +import com.order.erp.service.SysLogService;
  7 +import org.springframework.validation.annotation.Validated;
  8 +import org.springframework.web.bind.annotation.PostMapping;
  9 +import org.springframework.web.bind.annotation.RequestBody;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RestController;
  12 +
  13 +import javax.annotation.Resource;
  14 +
  15 +/**
  16 + * 系统日志(SysLog)表控制层
  17 + *
  18 + * @author makejava
  19 + * @since 2023-09-06 16:24:52
  20 + */
  21 +@RestController
  22 +@RequestMapping("/order/erp/logs")
  23 +public class SysLogController {
  24 + /**
  25 + * 服务对象
  26 + */
  27 + @Resource
  28 + private SysLogService sysLogService;
  29 +
  30 + /**
  31 + * 分页查询
  32 + *
  33 + * @param sysLogQueryVO 查询条件
  34 + * @return 查询结果
  35 + */
  36 + @PostMapping("/list")
  37 + public ServerResult list(@RequestBody @Validated SysLogQueryVO sysLogQueryVO) {
  38 + return sysLogService.list(sysLogQueryVO);
  39 + }
  40 +
  41 + /**
  42 + * 通过主键查询单条数据
  43 + *
  44 + * @param sysLogQueryVO 查询条件
  45 + * @return 单条数据
  46 + */
  47 + @PostMapping("/query_by_id")
  48 + public ServerResult queryById(@RequestBody SysLogQueryVO sysLogQueryVO) {
  49 + return sysLogService.queryById(sysLogQueryVO);
  50 + }
  51 +
  52 + /**
  53 + * 新增数据
  54 + *
  55 + * @param sysLogVO 数据VO
  56 + * @return 新增结果
  57 + */
  58 + @PostMapping("/add")
  59 + public ServerResult add(@RequestBody SysLogVO sysLogVO) {
  60 + return sysLogService.add(sysLogVO);
  61 + }
  62 +
  63 + /**
  64 + * 编辑数据
  65 + *
  66 + * @param sysLogVO 数据VO
  67 + * @return 编辑结果
  68 + */
  69 + @PostMapping("/edit")
  70 + public ServerResult edit(@RequestBody SysLogVO sysLogVO) {
  71 + return sysLogService.edit(sysLogVO);
  72 + }
  73 +
  74 + /**
  75 + * 删除数据
  76 + *
  77 + * @param sysLogQueryVO 查询条件
  78 + * @return 删除是否成功
  79 + */
  80 + @PostMapping("/delete_by_id")
  81 + public ServerResult deleteById(@RequestBody SysLogQueryVO sysLogQueryVO) {
  82 + return sysLogService.deleteById(sysLogQueryVO);
  83 + }
  84 +
  85 +}
  86 +
... ...
src/main/java/com/order/erp/domain/dto/BaseDO.java
1 1 package com.order.erp.domain.dto;
2 2  
3   -import com.baomidou.mybatisplus.annotation.FieldFill;
4   -import com.baomidou.mybatisplus.annotation.TableField;
5   -import com.baomidou.mybatisplus.annotation.TableLogic;
  3 +import cn.hutool.core.date.DatePattern;
  4 +import com.fasterxml.jackson.annotation.JsonFormat;
6 5 import lombok.AllArgsConstructor;
7 6 import lombok.Data;
8 7 import lombok.NoArgsConstructor;
9 8 import lombok.experimental.SuperBuilder;
10   -import org.apache.ibatis.type.LocalDateTimeTypeHandler;
11 9  
12 10 import java.io.Serializable;
13 11 import java.time.LocalDateTime;
... ... @@ -18,37 +16,32 @@ import java.time.LocalDateTime;
18 16 @NoArgsConstructor
19 17 @AllArgsConstructor
20 18 public class BaseDO implements Serializable {
21   - private static final long serialVersionUID = -2584005549195792084L;
22 19  
23 20 /**
24 21 * 创建时间
25 22 */
26   - @TableField(fill = FieldFill.INSERT, typeHandler = LocalDateTimeTypeHandler.class)
  23 + @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
27 24 private LocalDateTime createTime;
28 25  
29 26 /**
30 27 * 创建人
31 28 */
32   - @TableField(fill = FieldFill.INSERT)
33 29 private String createBy;
34 30  
35 31 /**
36 32 * 修改时间
37 33 */
38   - @TableField(fill = FieldFill.INSERT_UPDATE, typeHandler = LocalDateTimeTypeHandler.class)
  34 + @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
39 35 private LocalDateTime modifyTime;
40 36  
41 37 /**
42 38 * 修改人
43 39 */
44   - @TableField(fill = FieldFill.INSERT_UPDATE)
45 40 private String modifyBy;
46 41  
47 42 /**
48 43 * 是否可用 10-可用 20-删除 30-禁用
49 44 */
50   - @TableLogic
51   - @TableField(fill = FieldFill.INSERT)
52 45 private Integer enableFlag;
53 46  
54 47 /**
... ...
src/main/java/com/order/erp/domain/dto/SysLogDO.java 0 → 100644
  1 +package com.order.erp.domain.dto;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +import lombok.*;
  5 +import lombok.experimental.SuperBuilder;
  6 +
  7 +import java.io.Serializable;
  8 +
  9 +/**
  10 + * 系统日志(SysLog)实体类
  11 + *
  12 + * @author makejava
  13 + * @since 2023-09-06 16:22:34
  14 + */
  15 +@TableName("sys_log")
  16 +@Data
  17 +@AllArgsConstructor
  18 +@ToString
  19 +@NoArgsConstructor
  20 +@EqualsAndHashCode(callSuper = false)
  21 +@SuperBuilder
  22 +public class SysLogDO extends BaseDO implements Serializable {
  23 + /**
  24 + * ID
  25 + */
  26 + private Long id;
  27 +
  28 + private String description;
  29 +
  30 + private String logType;
  31 +
  32 + private String method;
  33 +
  34 + private String params;
  35 +
  36 + private String requestIp;
  37 +
  38 + private Long time;
  39 +
  40 + private String username;
  41 +
  42 + private String address;
  43 +
  44 + private String browser;
  45 +
  46 + private String exceptionDetail;
  47 +
  48 +}
... ...
src/main/java/com/order/erp/domain/dto/admin/AdminUserDO.java
... ... @@ -81,7 +81,6 @@ public class AdminUserDO extends BaseDO implements Serializable {
81 81 /**
82 82 * 修改密码的时间
83 83 */
84   - @TableField(fill = FieldFill.INSERT_UPDATE, typeHandler = LocalDateTimeTypeHandler.class)
85   - private LocalDateTime passResetTime;
  84 + private LocalDateTime pwdResetTime;
86 85  
87 86 }
... ...
src/main/java/com/order/erp/domain/vo/SysLogQueryVO.java 0 → 100644
  1 +package com.order.erp.domain.vo;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * 系统日志(SysLog)实体类
  11 + *
  12 + * @author makejava
  13 + * @since 2023-09-06 16:24:52
  14 + */
  15 +@Data
  16 +@AllArgsConstructor
  17 +@ToString
  18 +@NoArgsConstructor
  19 +@EqualsAndHashCode(callSuper = false)
  20 +@SuperBuilder
  21 +public class SysLogQueryVO extends BasePageVO implements Serializable {
  22 + private static final long serialVersionUID = -14754920802833616L;
  23 +
  24 + private List<Long> ids;
  25 +
  26 + /**
  27 + * ID
  28 + */
  29 + private Long id;
  30 +
  31 + private String description;
  32 +
  33 + private String logType;
  34 +
  35 + private String method;
  36 +
  37 + private String params;
  38 +
  39 + private String requestIp;
  40 +
  41 + private Long time;
  42 +
  43 + private String username;
  44 +
  45 + private String address;
  46 +
  47 + private String browser;
  48 +
  49 + private String exceptionDetail;
  50 +
  51 +
  52 +}
  53 +
... ...
src/main/java/com/order/erp/domain/vo/SysLogVO.java 0 → 100644
  1 +package com.order.erp.domain.vo;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + * 系统日志(SysLog)实体类
  10 + *
  11 + * @author makejava
  12 + * @since 2023-09-06 16:24:51
  13 + */
  14 +@Data
  15 +@AllArgsConstructor
  16 +@ToString
  17 +@NoArgsConstructor
  18 +@EqualsAndHashCode(callSuper = false)
  19 +@SuperBuilder
  20 +public class SysLogVO implements Serializable {
  21 + private static final long serialVersionUID = -31035692987156236L;
  22 + /**
  23 + * ID
  24 + */
  25 + private Long id;
  26 +
  27 + private String description;
  28 +
  29 + private String logType;
  30 +
  31 + private String method;
  32 +
  33 + private String params;
  34 +
  35 + private String requestIp;
  36 +
  37 + private Long time;
  38 +
  39 + private String username;
  40 +
  41 + private String address;
  42 +
  43 + private String browser;
  44 +
  45 + private String exceptionDetail;
  46 +
  47 +
  48 +}
... ...
src/main/java/com/order/erp/domain/vo/UserVO.java
... ... @@ -19,29 +19,41 @@ public class UserVO implements Serializable {
19 19 @ApiModelProperty(hidden = true)
20 20 private Long id;
21 21  
22   - private String username;
  22 + private String userName;
23 23  
24 24 private String nickName;
25 25  
26   - private String sex;
  26 + /**
  27 + * 性别
  28 + */
  29 + private String gender;
27 30  
28   - private String avatar;
  31 + /**
  32 + * 手机号码
  33 + */
  34 + private String phone;
29 35  
  36 + /**
  37 + * 邮箱
  38 + */
30 39 private String email;
31 40  
32   - private String phone;
  41 + /**
  42 + * 头像地址
  43 + */
  44 + private String avatarName;
33 45  
34 46 /**
35   - * 工作性质
  47 + * 头像真实路径
36 48 */
37   - private String workerType;
  49 + private String avatarPath;
38 50  
39 51 private Boolean enabled;
40 52  
41 53 @JsonIgnore
42 54 private String password;
43 55  
44   - private Date lastPasswordResetTime;
  56 + private LocalDateTime pwdResetTime;
45 57  
46 58 @ApiModelProperty(hidden = true)
47 59 private Set<RoleSmallVO> roles;
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminRoleResultVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import cn.hutool.core.date.DatePattern;
  4 +import com.fasterxml.jackson.annotation.JsonFormat;
  5 +import lombok.*;
  6 +import lombok.experimental.SuperBuilder;
  7 +
  8 +import java.io.Serializable;
  9 +import java.time.LocalDateTime;
  10 +
  11 +/**
  12 + * 角色表(AdminRole)实体类
  13 + *
  14 + * @author makejava
  15 + * @since 2023-08-30 17:51:48
  16 + */
  17 +@Data
  18 +@AllArgsConstructor
  19 +@ToString
  20 +@NoArgsConstructor
  21 +@EqualsAndHashCode(callSuper = false)
  22 +@SuperBuilder
  23 +public class AdminRoleResultVO implements Serializable {
  24 +
  25 + private Long id;
  26 + /**
  27 + * 角色名称
  28 + */
  29 + private String name;
  30 + /**
  31 + * 备注
  32 + */
  33 + private String remark;
  34 + /**
  35 + * 权限
  36 + */
  37 + private String permission;
  38 + /**
  39 + * 数据权限类型 全部 、 本级 、 自定义
  40 + */
  41 + private String dataScope;
  42 + /**
  43 + * 数值越小,级别越大
  44 + */
  45 + private Integer level;
  46 +
  47 + /**
  48 + * 创建时间
  49 + */
  50 + @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
  51 + private LocalDateTime createTime;
  52 +
  53 + /**
  54 + * 创建人
  55 + */
  56 + private String createBy;
  57 +
  58 + /**
  59 + * 修改时间
  60 + */
  61 + @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
  62 + private LocalDateTime modifyTime;
  63 +
  64 + /**
  65 + * 修改人
  66 + */
  67 + private String modifyBy;
  68 +
  69 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminUserLoginByPhoneVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import com.order.erp.common.constant.Constant;
  4 +import com.order.erp.domain.vo.BasePageVO;
  5 +import lombok.*;
  6 +import lombok.experimental.SuperBuilder;
  7 +
  8 +import javax.validation.constraints.NotBlank;
  9 +import javax.validation.constraints.Pattern;
  10 +import java.io.Serializable;
  11 +
  12 +/**
  13 + * (Member)登录
  14 + *
  15 + * @author makejava
  16 + * @since 2023-08-22 17:02:39
  17 + */
  18 +@Data
  19 +@AllArgsConstructor
  20 +@ToString
  21 +@NoArgsConstructor
  22 +@EqualsAndHashCode(callSuper = false)
  23 +@SuperBuilder
  24 +public class AdminUserLoginByPhoneVO extends BasePageVO implements Serializable {
  25 +
  26 + /**
  27 + * 手机号码
  28 + */
  29 + @NotBlank(message = "手机号码不能为空!")
  30 + @Pattern(message = "手机号码格式不正确", regexp = Constant.PHONE_REGEXP)
  31 + private String phone;
  32 +
  33 + /**
  34 + * 手机验证码
  35 + */
  36 + @NotBlank(message = "手机验证码不能为空!")
  37 + private String smsCaptchaCode;
  38 +}
  39 +
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminUserLoginByPwdVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import com.order.erp.domain.vo.BasePageVO;
  4 +import lombok.*;
  5 +import lombok.experimental.SuperBuilder;
  6 +
  7 +import javax.validation.constraints.NotBlank;
  8 +import java.io.Serializable;
  9 +
  10 +/**
  11 + * (Member)登录
  12 + *
  13 + * @author makejava
  14 + * @since 2023-08-22 17:02:39
  15 + */
  16 +@Data
  17 +@AllArgsConstructor
  18 +@ToString
  19 +@NoArgsConstructor
  20 +@EqualsAndHashCode(callSuper = false)
  21 +@SuperBuilder
  22 +public class AdminUserLoginByPwdVO extends BasePageVO implements Serializable {
  23 +
  24 + /**
  25 + * 用户登录名称
  26 + */
  27 + @NotBlank(message = "用户登录名称不能为空!")
  28 + private String userName;
  29 +
  30 + /**
  31 + * 密码
  32 + */
  33 + @NotBlank(message = "密码不能为空!")
  34 + private String password;
  35 +
  36 +
  37 + /**
  38 + * 图片验证码
  39 + */
  40 + @NotBlank(message = "图片验证码不能为空!")
  41 + private String imgCaptchaCode;
  42 +
  43 + /**
  44 + * 图片验证码标识
  45 + */
  46 + @NotBlank(message = "图片验证码标识不能为空!")
  47 + private String imgCaptchaUuid;
  48 +}
  49 +
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminUserModifyPwdVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import com.order.erp.domain.vo.BasePageVO;
  4 +import lombok.*;
  5 +import lombok.experimental.SuperBuilder;
  6 +
  7 +import javax.validation.constraints.NotBlank;
  8 +import java.io.Serializable;
  9 +
  10 +/**
  11 + * (Member)修改密码
  12 + *
  13 + * @author xms
  14 + * @since 2023-08-22 17:02:39
  15 + */
  16 +@Data
  17 +@AllArgsConstructor
  18 +@ToString
  19 +@NoArgsConstructor
  20 +@EqualsAndHashCode(callSuper = false)
  21 +@SuperBuilder
  22 +public class AdminUserModifyPwdVO extends BasePageVO implements Serializable {
  23 +
  24 + /**
  25 + * 密钥id
  26 + */
  27 + @NotBlank(message = "密钥id不存在!")
  28 + private String id;
  29 +
  30 + /**
  31 + * 密钥密码
  32 + */
  33 + @NotBlank(message = "密钥密码不能为空")
  34 + private String passwordRecoverKey;
  35 +
  36 + /**
  37 + * 密码
  38 + */
  39 + @NotBlank(message = "要修改的密码不能为空")
  40 + private String password;
  41 +
  42 + /**
  43 + * 确认密码
  44 + */
  45 + @NotBlank(message = "请二次确认要修改的密码")
  46 + private String confirmPassword;
  47 +}
  48 +
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminUserPasswordRecoverEmailVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import com.order.erp.domain.vo.BasePageVO;
  4 +import lombok.*;
  5 +import lombok.experimental.SuperBuilder;
  6 +
  7 +import javax.validation.constraints.NotBlank;
  8 +import java.io.Serializable;
  9 +
  10 +/**
  11 + * (Member)发送密码找回邮件
  12 + *
  13 + * @author makejava
  14 + * @since 2023-08-22 17:02:39
  15 + */
  16 +@Data
  17 +@AllArgsConstructor
  18 +@ToString
  19 +@NoArgsConstructor
  20 +@EqualsAndHashCode(callSuper = false)
  21 +@SuperBuilder
  22 +public class AdminUserPasswordRecoverEmailVO extends BasePageVO implements Serializable {
  23 +
  24 + /**
  25 + * 用户登录名称
  26 + */
  27 + @NotBlank(message = "用户登录名称不能为空!")
  28 + private String userName;
  29 +}
  30 +
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminUserRegisterVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import com.order.erp.common.constant.Constant;
  4 +import com.order.erp.domain.vo.BasePageVO;
  5 +import lombok.*;
  6 +import lombok.experimental.SuperBuilder;
  7 +
  8 +import javax.validation.constraints.NotBlank;
  9 +import javax.validation.constraints.NotNull;
  10 +import javax.validation.constraints.Pattern;
  11 +import java.io.Serializable;
  12 +
  13 +/**
  14 + * (Member)注册
  15 + *
  16 + * @author makejava
  17 + * @since 2023-08-22 17:02:39
  18 + */
  19 +@Data
  20 +@AllArgsConstructor
  21 +@ToString
  22 +@NoArgsConstructor
  23 +@EqualsAndHashCode(callSuper = false)
  24 +@SuperBuilder
  25 +public class AdminUserRegisterVO extends BasePageVO implements Serializable {
  26 + private static final long serialVersionUID = -98570856671998407L;
  27 +
  28 + /**
  29 + * 注册协议,true/false
  30 + */
  31 + @NotNull(message = "必须勾选协议!")
  32 + private Boolean isAgreeAgreement;
  33 +
  34 + /**
  35 + * 手机号码
  36 + */
  37 + @NotBlank(message = "手机号码不能为空!")
  38 + @Pattern(message = "手机号码格式不正确", regexp = Constant.PHONE_REGEXP)
  39 + private String phone;
  40 +
  41 + /**
  42 + * 手机验证码
  43 + */
  44 + @NotBlank(message = "手机验证码不能为空!")
  45 + private String smsCaptchaCode;
  46 +
  47 + /**
  48 + * 用户名称
  49 + */
  50 + @NotBlank(message = "用户名称不能为空!")
  51 + private String userName;
  52 +
  53 + /**
  54 + * email
  55 + */
  56 + @NotBlank(message = "email不能为空!")
  57 + private String email;
  58 +
  59 + /**
  60 + * 密码
  61 + */
  62 + @NotBlank(message = "请设置密码!")
  63 + private String password;
  64 +
  65 + /**
  66 + * 确认密码
  67 + */
  68 + @NotBlank(message = "请二次确认密码!")
  69 + private String confirmPassword;
  70 +
  71 + /**
  72 + * 安全问题
  73 + */
  74 + private String safeQuestion;
  75 +
  76 + /**
  77 + * 安全问题回答
  78 + */
  79 + private String safeAnswer;
  80 +
  81 +}
  82 +
... ...
src/main/java/com/order/erp/domain/vo/admin/DeptSmallVO.java
1 1 package com.order.erp.domain.vo.admin;
2 2  
3   -import lombok.Data;
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
4 5  
5 6 import java.io.Serializable;
6 7  
7 8  
8 9 @Data
  10 +@AllArgsConstructor
  11 +@ToString
  12 +@NoArgsConstructor
  13 +@EqualsAndHashCode(callSuper = false)
  14 +@SuperBuilder
9 15 public class DeptSmallVO implements Serializable {
10 16  
11 17 private Long id;
... ...
src/main/java/com/order/erp/domain/vo/admin/JobSmallVO.java
1 1 package com.order.erp.domain.vo.admin;
2 2  
3   -import lombok.Data;
4   -import lombok.NoArgsConstructor;
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
5 5  
6 6 import java.io.Serializable;
7 7  
8 8  
9 9 @Data
  10 +@AllArgsConstructor
  11 +@ToString
10 12 @NoArgsConstructor
  13 +@EqualsAndHashCode(callSuper = false)
  14 +@SuperBuilder
11 15 public class JobSmallVO implements Serializable {
12 16  
13 17 private Long id;
... ...
src/main/java/com/order/erp/domain/vo/admin/MemberQueryVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import com.order.erp.domain.vo.BasePageVO;
  4 +import lombok.*;
  5 +import lombok.experimental.SuperBuilder;
  6 +
  7 +import java.io.Serializable;
  8 +import java.util.Date;
  9 +import java.util.List;
  10 +
  11 +/**
  12 + * (Member)实体类
  13 + *
  14 + * @author makejava
  15 + * @since 2023-08-22 17:02:39
  16 + */
  17 +@Data
  18 +@AllArgsConstructor
  19 +@ToString
  20 +@NoArgsConstructor
  21 +@EqualsAndHashCode(callSuper = false)
  22 +@SuperBuilder
  23 +public class MemberQueryVO extends BasePageVO implements Serializable {
  24 + private static final long serialVersionUID = -98570856671998407L;
  25 +
  26 + private List<Long> ids;
  27 +
  28 +
  29 + private String id;
  30 +
  31 + private Date createdate;
  32 +
  33 + private Date modifydate;
  34 +
  35 + private Double deposit;
  36 +
  37 + private String email;
  38 +
  39 + private String phone;
  40 +
  41 + private String research;
  42 +
  43 + private Byte isaccountenabled;
  44 +
  45 + private Byte isaccountlocked;
  46 +
  47 + private Date lockeddate;
  48 +
  49 + private Date logindate;
  50 +
  51 + private Integer loginfailurecount;
  52 +
  53 + private String loginip;
  54 +
  55 + private String password;
  56 +
  57 + private String passwordrecoverkey;
  58 +
  59 + private Integer point;
  60 +
  61 + private String registerip;
  62 +
  63 + private String safeanswer;
  64 +
  65 + private String safequestion;
  66 +
  67 + private String username;
  68 +
  69 + private String memberrankId;
  70 +
  71 +
  72 +}
  73 +
... ...
src/main/java/com/order/erp/domain/vo/admin/MemberUserVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonIgnore;
  4 +import lombok.*;
  5 +import lombok.experimental.SuperBuilder;
  6 +
  7 +import java.io.Serializable;
  8 +import java.util.Date;
  9 +
  10 +/**
  11 + * (Member)实体类
  12 + *
  13 + * @author makejava
  14 + * @since 2023-08-22 17:02:38
  15 + */
  16 +@Data
  17 +@AllArgsConstructor
  18 +@ToString
  19 +@NoArgsConstructor
  20 +@EqualsAndHashCode(callSuper = false)
  21 +@SuperBuilder
  22 +public class MemberUserVO implements Serializable {
  23 + private static final long serialVersionUID = 705600886314888547L;
  24 +
  25 + private String id;
  26 +
  27 + private Date createdate;
  28 +
  29 + private Date modifydate;
  30 +
  31 + private Double deposit;
  32 +
  33 + private String email;
  34 +
  35 + private String phone;
  36 +
  37 + private String research;
  38 +
  39 + private Boolean isaccountenabled;
  40 +
  41 + private Boolean isaccountlocked;
  42 +
  43 + private Date lockeddate;
  44 +
  45 + private Date logindate;
  46 +
  47 + private Integer loginfailurecount;
  48 +
  49 + private String loginip;
  50 +
  51 + /**
  52 + * 密码
  53 + */
  54 + @JsonIgnore
  55 + private String password;
  56 +
  57 + private String passwordrecoverkey;
  58 +
  59 + private Integer point;
  60 +
  61 + private String registerip;
  62 +
  63 + private String safeanswer;
  64 +
  65 + private String safequestion;
  66 +
  67 + private String username;
  68 +
  69 + private String memberrankId;
  70 +
  71 +
  72 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/MemberVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +import java.util.Date;
  8 +
  9 +/**
  10 + * (Member)实体类
  11 + *
  12 + * @author makejava
  13 + * @since 2023-08-22 17:02:38
  14 + */
  15 +@Data
  16 +@AllArgsConstructor
  17 +@ToString
  18 +@NoArgsConstructor
  19 +@EqualsAndHashCode(callSuper = false)
  20 +@SuperBuilder
  21 +public class MemberVO implements Serializable {
  22 + private static final long serialVersionUID = 705600886314888547L;
  23 +
  24 + private String id;
  25 +
  26 + private Date createdate;
  27 +
  28 + private Date modifydate;
  29 +
  30 + private Double deposit;
  31 +
  32 + private String email;
  33 +
  34 + private String phone;
  35 +
  36 + private String research;
  37 +
  38 + private Byte isaccountenabled;
  39 +
  40 + private Byte isaccountlocked;
  41 +
  42 + private Date lockeddate;
  43 +
  44 + private Date logindate;
  45 +
  46 + private Integer loginfailurecount;
  47 +
  48 + private String loginip;
  49 +
  50 + private String password;
  51 +
  52 + private String passwordrecoverkey;
  53 +
  54 + private Integer point;
  55 +
  56 + private String registerip;
  57 +
  58 + private String safeanswer;
  59 +
  60 + private String safequestion;
  61 +
  62 + private String username;
  63 +
  64 + private String memberrankId;
  65 +
  66 +
  67 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/RoleSmallVO.java
1 1 package com.order.erp.domain.vo.admin;
2 2  
3   -import lombok.Data;
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
4 5  
5 6 import java.io.Serializable;
6 7  
7 8  
8 9 @Data
  10 +@AllArgsConstructor
  11 +@ToString
  12 +@NoArgsConstructor
  13 +@EqualsAndHashCode(callSuper = false)
  14 +@SuperBuilder
9 15 public class RoleSmallVO implements Serializable {
10 16  
11 17 private Long id;
... ...
src/main/java/com/order/erp/log/Log.java 0 → 100644
  1 +package com.order.erp.log;
  2 +
  3 +import java.lang.annotation.ElementType;
  4 +import java.lang.annotation.Retention;
  5 +import java.lang.annotation.RetentionPolicy;
  6 +import java.lang.annotation.Target;
  7 +
  8 +/**
  9 + *
  10 + * @date 2018-11-24
  11 + */
  12 +@Target(ElementType.METHOD)
  13 +@Retention(RetentionPolicy.RUNTIME)
  14 +public @interface Log {
  15 + String value() default "";
  16 +}
... ...
src/main/java/com/order/erp/log/LogAspect.java 0 → 100644
  1 +package com.order.erp.log;
  2 +
  3 +import cn.hutool.json.JSONObject;
  4 +import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  5 +import com.order.erp.common.constant.Constant;
  6 +import com.order.erp.common.utils.RequestHolder;
  7 +import com.order.erp.common.utils.RequestStringUtils;
  8 +import com.order.erp.common.utils.SecurityUtils;
  9 +import com.order.erp.common.utils.ThrowableUtil;
  10 +import com.order.erp.domain.dto.SysLogDO;
  11 +import com.order.erp.service.SysLogService;
  12 +import lombok.extern.slf4j.Slf4j;
  13 +import org.aspectj.lang.JoinPoint;
  14 +import org.aspectj.lang.ProceedingJoinPoint;
  15 +import org.aspectj.lang.annotation.AfterThrowing;
  16 +import org.aspectj.lang.annotation.Around;
  17 +import org.aspectj.lang.annotation.Aspect;
  18 +import org.aspectj.lang.annotation.Pointcut;
  19 +import org.aspectj.lang.reflect.MethodSignature;
  20 +import org.springframework.stereotype.Component;
  21 +
  22 +import javax.annotation.Resource;
  23 +import javax.servlet.http.HttpServletRequest;
  24 +import java.lang.reflect.Method;
  25 +import java.time.LocalDateTime;
  26 +
  27 +/**
  28 + * @date 2018-11-24
  29 + */
  30 +@Component
  31 +@Aspect
  32 +@Slf4j
  33 +public class LogAspect {
  34 +
  35 + @Resource
  36 + private SysLogService logService;
  37 +
  38 + ThreadLocal<Long> currentTime = new ThreadLocal<>();
  39 +
  40 + /**
  41 + * 配置切入点
  42 + */
  43 + @Pointcut("@annotation(com.order.erp.log.Log)")
  44 + public void logPointcut() {
  45 + // 该方法无方法体,主要为了让同类中其他方法使用此切入点
  46 + }
  47 +
  48 + /**
  49 + * 配置环绕通知,使用在方法logPointcut()上注册的切入点
  50 + *
  51 + * @param joinPoint join point for advice
  52 + */
  53 + @Around("logPointcut()")
  54 + public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
  55 + Object result;
  56 + currentTime.set(System.currentTimeMillis());
  57 + result = joinPoint.proceed();
  58 + logService.save(wrapperLog(joinPoint));
  59 + currentTime.remove();
  60 + return result;
  61 + }
  62 +
  63 + /**
  64 + * @param joinPoint
  65 + * @return
  66 + */
  67 + private SysLogDO wrapperLog(ProceedingJoinPoint joinPoint) {
  68 + MethodSignature signature = (MethodSignature) joinPoint.getSignature();
  69 + Method method = signature.getMethod();
  70 + Log aopLog = method.getAnnotation(Log.class);
  71 +
  72 + // 方法路径
  73 + String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
  74 +
  75 + StringBuilder params = new StringBuilder("{");
  76 + //参数值
  77 + Object[] argValues = joinPoint.getArgs();
  78 + //参数名称
  79 + String[] argNames = ((MethodSignature) joinPoint.getSignature()).getParameterNames();
  80 + if (argValues != null) {
  81 + for (int i = 0; i < argValues.length; i++) {
  82 + params.append(" ").append(argNames[i]).append(": ").append(argValues[i]);
  83 + }
  84 + }
  85 + HttpServletRequest request = RequestHolder.getHttpServletRequest();
  86 + SysLogDO sysLogDO = SysLogDO.builder()
  87 + .logType("INFO")
  88 + .time(System.currentTimeMillis() - currentTime.get())
  89 + .browser(RequestStringUtils.getBrowser(request))
  90 + .requestIp(RequestStringUtils.getIp(request))
  91 + .build();
  92 + // 描述
  93 + if (sysLogDO != null) {
  94 + sysLogDO.setDescription(aopLog.value());
  95 + }
  96 + assert sysLogDO != null;
  97 +
  98 + String loginPath = "login";
  99 + String userName = null;
  100 + if (loginPath.equals(signature.getName())) {
  101 + try {
  102 + assert argValues != null;
  103 + userName = new JSONObject(argValues[0]).get("userName").toString();
  104 + } catch (Exception e) {
  105 + e.printStackTrace();
  106 + }
  107 + } else {
  108 + userName = getUsername();
  109 + }
  110 + if (StringUtils.isBlank(userName)) {
  111 + sysLogDO.setCreateTime(LocalDateTime.now());
  112 + sysLogDO.setCreateBy("system");
  113 + } else {
  114 + sysLogDO.setCreateTime(LocalDateTime.now());
  115 + sysLogDO.setCreateBy(userName);
  116 + }
  117 + sysLogDO.setAddress(RequestStringUtils.getCityInfo(sysLogDO.getRequestIp()));
  118 + sysLogDO.setMethod(methodName);
  119 + sysLogDO.setUsername(userName);
  120 + sysLogDO.setParams(params.toString() + " }");
  121 + sysLogDO.setEnableFlag(Constant.ENABLE_TEN);
  122 + return sysLogDO;
  123 + }
  124 +
  125 + /**
  126 + * 配置异常通知
  127 + *
  128 + * @param joinPoint join point for advice
  129 + * @param e exception
  130 + */
  131 + @AfterThrowing(pointcut = "logPointcut()", throwing = "e")
  132 + public void logAfterThrowing(JoinPoint joinPoint, Throwable e) {
  133 + SysLogDO sysLogDO = wrapperLog((ProceedingJoinPoint) joinPoint);
  134 + currentTime.remove();
  135 + sysLogDO.setExceptionDetail(String.valueOf(ThrowableUtil.getStackTrace(e).getBytes()));
  136 + logService.save(sysLogDO);
  137 + }
  138 +
  139 + /**
  140 + * @return
  141 + */
  142 + public String getUsername() {
  143 + try {
  144 + return SecurityUtils.getUsername();
  145 + } catch (Exception e) {
  146 + return "";
  147 + }
  148 + }
  149 +}
... ...
src/main/java/com/order/erp/mapper/SysLogMapper.java 0 → 100644
  1 +package com.order.erp.mapper;
  2 +
  3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.order.erp.domain.dto.SysLogDO;
  5 +
  6 +/**
  7 + * 系统日志(SysLog)表数据库访问层
  8 + *
  9 + * @author makejava
  10 + * @since 2023-09-06 16:24:53
  11 + */
  12 +public interface SysLogMapper extends BaseMapper<SysLogDO> {
  13 +
  14 +
  15 +}
  16 +
... ...
src/main/java/com/order/erp/security/service/OnlineUserService.java
... ... @@ -9,6 +9,8 @@ import com.order.erp.security.vo.JwtUser;
9 9 import com.order.erp.security.vo.OnlineUser;
10 10 import lombok.extern.slf4j.Slf4j;
11 11 import org.springframework.stereotype.Service;
  12 +import org.springframework.web.context.request.RequestContextHolder;
  13 +import org.springframework.web.context.request.ServletRequestAttributes;
12 14  
13 15 import javax.annotation.Resource;
14 16 import javax.servlet.http.HttpServletRequest;
... ... @@ -27,6 +29,29 @@ public class OnlineUserService {
27 29 @Resource
28 30 private RedisUtil redisUtil;
29 31  
  32 + /**
  33 + * 保存在线用户信息
  34 + *
  35 + * @param jwtUser /
  36 + * @param token /
  37 + */
  38 + public void save(JwtUser jwtUser, String token) {
  39 + // 1. obtain request
  40 + final ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  41 + HttpServletRequest request = attributes.getRequest();
  42 + String email = jwtUser.getEmail();
  43 + String phone = jwtUser.getPhone();
  44 + String ip = RequestStringUtils.getIp(request);
  45 + String browser = RequestStringUtils.getBrowser(request);
  46 + String address = RequestStringUtils.getCityInfo(ip);
  47 + OnlineUser onlineUser = null;
  48 + try {
  49 + onlineUser = new OnlineUser(jwtUser.getUsername(), phone, email, browser, ip, address, EncryptUtils.desEncrypt(token), new Date());
  50 + } catch (Exception e) {
  51 + e.printStackTrace();
  52 + }
  53 + redisUtil.set(properties.getOnlineKey() + token, JSON.toJSONString(onlineUser), properties.getTokenValidityInSeconds() / 1000);
  54 + }
30 55  
31 56 /**
32 57 * 保存在线用户信息
... ...
src/main/java/com/order/erp/security/service/UserDetailsServiceImpl.java
... ... @@ -5,7 +5,7 @@ import com.order.erp.domain.vo.UserVO;
5 5 import com.order.erp.domain.vo.admin.DeptSmallVO;
6 6 import com.order.erp.domain.vo.admin.JobSmallVO;
7 7 import com.order.erp.security.vo.JwtUser;
8   -import com.order.erp.service.admin.AdminRoleMenuService;
  8 +import com.order.erp.service.admin.AdminRoleService;
9 9 import com.order.erp.service.admin.AdminUserService;
10 10 import org.springframework.security.core.userdetails.UserDetails;
11 11 import org.springframework.security.core.userdetails.UserDetailsService;
... ... @@ -28,7 +28,7 @@ public class UserDetailsServiceImpl implements UserDetailsService {
28 28 private AdminUserService userService;
29 29  
30 30 @Resource
31   - private AdminRoleMenuService roleService;
  31 + private AdminRoleService roleService;
32 32  
33 33  
34 34 @Override
... ... @@ -43,24 +43,26 @@ public class UserDetailsServiceImpl implements UserDetailsService {
43 43 return createJwtUser(user);
44 44 }
45 45  
  46 + /**
  47 + * @param user
  48 + * @return
  49 + */
46 50 private UserDetails createJwtUser(UserVO user) {
47 51 return new JwtUser(
48 52 user.getId(),
49   - user.getUsername(),
  53 + user.getUserName(),
50 54 user.getNickName(),
51   - user.getSex(),
  55 + user.getGender(),
52 56 user.getPassword(),
53   - user.getAvatar(),
54   - user.getWorkerType(),
  57 + user.getAvatarName(),
55 58 user.getEmail(),
56 59 user.getPhone(),
57 60 Optional.ofNullable(user.getDept()).map(DeptSmallVO::getName).orElse(null),
58 61 Optional.ofNullable(user.getJob()).map(JobSmallVO::getName).orElse(null),
59   -// roleService.mapToGrantedAuthorities(user),
60   - null,
  62 + roleService.mapToGrantedAuthorities(user),
61 63 user.getEnabled(),
62 64 user.getCreateTime(),
63   - user.getLastPasswordResetTime()
  65 + user.getPwdResetTime()
64 66 );
65 67 }
66 68 }
... ...
src/main/java/com/order/erp/security/vo/JwtUser.java
... ... @@ -31,8 +31,6 @@ public class JwtUser implements UserDetails {
31 31  
32 32 private final String avatar;
33 33  
34   - private final String workerType;
35   -
36 34 private final String email;
37 35  
38 36 private final String phone;
... ... @@ -49,7 +47,7 @@ public class JwtUser implements UserDetails {
49 47 private LocalDateTime createTime;
50 48  
51 49 @JsonIgnore
52   - private final Date lastPasswordResetDate;
  50 + private final LocalDateTime lastPasswordResetDate;
53 51  
54 52 @JsonIgnore
55 53 @Override
... ...
src/main/java/com/order/erp/service/SysLogService.java 0 → 100644
  1 +package com.order.erp.service;
  2 +
  3 +import com.baomidou.mybatisplus.extension.service.IService;
  4 +import com.order.erp.common.constant.ServerResult;
  5 +import com.order.erp.domain.dto.SysLogDO;
  6 +import com.order.erp.domain.vo.SysLogQueryVO;
  7 +import com.order.erp.domain.vo.SysLogVO;
  8 +
  9 +/**
  10 + * 系统日志(SysLog)表服务接口
  11 + *
  12 + * @author makejava
  13 + * @since 2023-09-06 16:24:58
  14 + */
  15 +public interface SysLogService extends IService<SysLogDO> {
  16 +
  17 + /**
  18 + * 通过ID查询单条数据
  19 + *
  20 + * @param sysLogQueryVO 主键
  21 + * @return 实例对象
  22 + */
  23 + ServerResult queryById(SysLogQueryVO sysLogQueryVO);
  24 +
  25 + /**
  26 + * 分页查询
  27 + *
  28 + * @param sysLogQueryVO 筛选条件
  29 + * @return 查询结果
  30 + */
  31 + ServerResult list(SysLogQueryVO sysLogQueryVO);
  32 +
  33 + /**
  34 + * 新增数据
  35 + *
  36 + * @param sysLogVO 数据VO
  37 + * @return 新增结果
  38 + */
  39 + ServerResult add(SysLogVO sysLogVO);
  40 +
  41 + /**
  42 + * 修改数据
  43 + *
  44 + * @param sysLogVO 数据VO
  45 + * @return 编辑结果
  46 + */
  47 + ServerResult edit(SysLogVO sysLogVO);
  48 +
  49 + /**
  50 + * 通过主键删除数据
  51 + *
  52 + * @param sysLogQueryVO 筛选条件
  53 + * @return 是否成功
  54 + */
  55 + ServerResult deleteById(SysLogQueryVO sysLogQueryVO);
  56 +
  57 +}
... ...
src/main/java/com/order/erp/service/admin/AdminRoleService.java
... ... @@ -3,8 +3,12 @@ package com.order.erp.service.admin;
3 3 import com.baomidou.mybatisplus.extension.service.IService;
4 4 import com.order.erp.common.constant.ServerResult;
5 5 import com.order.erp.domain.dto.admin.AdminRoleDO;
  6 +import com.order.erp.domain.vo.UserVO;
6 7 import com.order.erp.domain.vo.admin.AdminRoleQueryVO;
7 8 import com.order.erp.domain.vo.admin.AdminRoleVO;
  9 +import org.springframework.security.core.GrantedAuthority;
  10 +
  11 +import java.util.Collection;
8 12  
9 13 /**
10 14 * 角色表(AdminRole)表服务接口
... ... @@ -28,9 +32,21 @@ public interface AdminRoleService extends IService&lt;AdminRoleDO&gt; {
28 32 * @param adminRoleQueryVO 筛选条件
29 33 * @return 查询结果
30 34 */
  35 + ServerResult listByPage(AdminRoleQueryVO adminRoleQueryVO);
  36 +
  37 + /**
  38 + * @param adminRoleQueryVO
  39 + * @return
  40 + */
31 41 ServerResult list(AdminRoleQueryVO adminRoleQueryVO);
32 42  
33 43 /**
  44 + * @param level
  45 + * @return
  46 + */
  47 + ServerResult listByLevel(Integer level);
  48 +
  49 + /**
34 50 * 新增数据
35 51 *
36 52 * @param adminRoleVO 数据VO
... ... @@ -54,4 +70,10 @@ public interface AdminRoleService extends IService&lt;AdminRoleDO&gt; {
54 70 */
55 71 ServerResult deleteById(AdminRoleQueryVO adminRoleQueryVO);
56 72  
  73 + /**
  74 + * @param user
  75 + * @return
  76 + */
  77 + public Collection<GrantedAuthority> mapToGrantedAuthorities(UserVO user);
  78 +
57 79 }
... ...
src/main/java/com/order/erp/service/admin/AdminUserService.java
... ... @@ -4,8 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
4 4 import com.order.erp.common.constant.ServerResult;
5 5 import com.order.erp.domain.dto.admin.AdminUserDO;
6 6 import com.order.erp.domain.vo.UserVO;
7   -import com.order.erp.domain.vo.admin.AdminUserQueryVO;
8   -import com.order.erp.domain.vo.admin.AdminUserVO;
  7 +import com.order.erp.domain.vo.admin.*;
9 8  
10 9 /**
11 10 * 用户表(AdminUser)表服务接口
... ... @@ -63,4 +62,42 @@ public interface AdminUserService extends IService&lt;AdminUserDO&gt; {
63 62 */
64 63 UserVO findByUserName(String userName);
65 64  
  65 +
  66 + /**
  67 + * @param registerVO
  68 + * @return
  69 + */
  70 + ServerResult phoneRegister(AdminUserRegisterVO registerVO);
  71 +
  72 + /**
  73 + * @param loginByPhoneVO
  74 + * @return
  75 + */
  76 + ServerResult loginByPhone(AdminUserLoginByPhoneVO loginByPhoneVO);
  77 +
  78 + /**
  79 + * @param loginByPwdVO
  80 + * @return
  81 + */
  82 + ServerResult loginByPwd(AdminUserLoginByPwdVO loginByPwdVO);
  83 +
  84 + /**
  85 + * @param modifyPwdVO
  86 + * @return
  87 + */
  88 + ServerResult passwordModify(AdminUserModifyPwdVO modifyPwdVO);
  89 +
  90 + /**
  91 + * @param recoverEmailVO
  92 + * @return
  93 + */
  94 + ServerResult sendPasswordRecoverMail(AdminUserPasswordRecoverEmailVO recoverEmailVO);
  95 +
  96 + /**
  97 + * @param username
  98 + * @return
  99 + */
  100 + MemberUserVO findByNameOrPhone(String username);
  101 +
  102 +
66 103 }
... ...
src/main/java/com/order/erp/service/admin/impl/AdminRoleServiceImpl.java
... ... @@ -2,20 +2,39 @@ package com.order.erp.service.admin.impl;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.collection.CollUtil;
  5 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 6 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7 +import com.baomidou.mybatisplus.core.metadata.IPage;
  8 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  9 +import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  10 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 12 import com.order.erp.common.constant.Constant;
8 13 import com.order.erp.common.constant.ServerResult;
  14 +import com.order.erp.domain.dto.BaseDO;
  15 +import com.order.erp.domain.dto.admin.AdminMenuDO;
9 16 import com.order.erp.domain.dto.admin.AdminRoleDO;
  17 +import com.order.erp.domain.dto.admin.AdminRoleMenuDO;
  18 +import com.order.erp.domain.vo.UserVO;
10 19 import com.order.erp.domain.vo.admin.AdminRoleQueryVO;
  20 +import com.order.erp.domain.vo.admin.AdminRoleResultVO;
11 21 import com.order.erp.domain.vo.admin.AdminRoleVO;
  22 +import com.order.erp.domain.vo.admin.RoleSmallVO;
12 23 import com.order.erp.mapper.admin.AdminRoleMapper;
  24 +import com.order.erp.service.admin.AdminMenuService;
  25 +import com.order.erp.service.admin.AdminRoleMenuService;
13 26 import com.order.erp.service.admin.AdminRoleService;
  27 +import com.order.erp.service.admin.AdminUserRoleService;
14 28 import lombok.extern.slf4j.Slf4j;
  29 +import org.springframework.beans.BeanUtils;
  30 +import org.springframework.cache.annotation.Cacheable;
  31 +import org.springframework.security.core.GrantedAuthority;
  32 +import org.springframework.security.core.authority.SimpleGrantedAuthority;
15 33 import org.springframework.stereotype.Service;
16 34  
17   -import java.util.List;
18   -import java.util.Objects;
  35 +import javax.annotation.Resource;
  36 +import java.util.*;
  37 +import java.util.stream.Collectors;
19 38  
20 39 /**
21 40 * 角色表(AdminRole)表服务实现类
... ... @@ -27,6 +46,15 @@ import java.util.Objects;
27 46 @Service
28 47 public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRoleDO> implements AdminRoleService {
29 48  
  49 + @Resource
  50 + private AdminUserRoleService userRoleService;
  51 +
  52 + @Resource
  53 + private AdminRoleMenuService roleMenuService;
  54 +
  55 + @Resource
  56 + private AdminMenuService menuService;
  57 +
30 58  
31 59 /**
32 60 * 通过ID查询单条数据
... ... @@ -59,6 +87,45 @@ public class AdminRoleServiceImpl extends ServiceImpl&lt;AdminRoleMapper, AdminRole
59 87 return ServerResult.success();
60 88 }
61 89  
  90 + @Override
  91 + public ServerResult listByPage(AdminRoleQueryVO queryVO) {
  92 + LambdaQueryWrapper<AdminRoleDO> queryWrapper = buildQueryByParam(queryVO);
  93 + Page page = new Page<>(queryVO.getPageNo(), queryVO.getPageSize());
  94 + IPage<AdminRoleDO> iPage = page(page, queryWrapper);
  95 +
  96 + Page<AdminRoleResultVO> webVOPage = new Page<>();
  97 + List<AdminRoleDO> locationStockEmptyBarcodeDOList = iPage.getRecords();
  98 + if (CollectionUtils.isNotEmpty(locationStockEmptyBarcodeDOList)) {
  99 + List<AdminRoleResultVO> queryVos = locationStockEmptyBarcodeDOList.stream().map(x -> {
  100 + AdminRoleResultVO resultVO = new AdminRoleResultVO();
  101 + BeanUtils.copyProperties(x, resultVO);
  102 + return resultVO;
  103 + }).collect(Collectors.toList());
  104 + webVOPage.setRecords(queryVos);
  105 + }
  106 + BeanUtils.copyProperties(page, webVOPage, "records");
  107 + return ServerResult.success(webVOPage);
  108 + }
  109 +
  110 + /**
  111 + * @param queryVO
  112 + * @return
  113 + */
  114 + private LambdaQueryWrapper<AdminRoleDO> buildQueryByParam(AdminRoleQueryVO queryVO) {
  115 + return new LambdaQueryWrapper<AdminRoleDO>()
  116 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  117 + .eq(Objects.nonNull(queryVO.getLevel()), AdminRoleDO::getLevel, queryVO.getLevel())
  118 + .eq(StringUtils.isNotBlank(queryVO.getName()), AdminRoleDO::getName, queryVO.getName())
  119 + .eq(StringUtils.isNotBlank(queryVO.getDataScope()), AdminRoleDO::getDataScope, queryVO.getDataScope());
  120 + }
  121 +
  122 + @Override
  123 + public ServerResult listByLevel(Integer level) {
  124 + return ServerResult.success(list(new LambdaQueryWrapper<AdminRoleDO>()
  125 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  126 + .eq(Objects.nonNull(level), AdminRoleDO::getLevel, level)));
  127 + }
  128 +
62 129 /**
63 130 * 新增数据
64 131 *
... ... @@ -120,4 +187,29 @@ public class AdminRoleServiceImpl extends ServiceImpl&lt;AdminRoleMapper, AdminRole
120 187 update(updateWrapper);
121 188 return ServerResult.success();
122 189 }
  190 +
  191 +
  192 + @Override
  193 + @Cacheable(key = "'loadPermissionByUser:' + #p0.username")
  194 + public Collection<GrantedAuthority> mapToGrantedAuthorities(UserVO user) {
  195 + Set<RoleSmallVO> roleSmallVOS = user.getRoles();
  196 + if (CollectionUtils.isEmpty(roleSmallVOS)) {
  197 + return Collections.emptyList();
  198 + }
  199 + Set<Long> roleIds = roleSmallVOS.stream().map(RoleSmallVO::getId).collect(Collectors.toSet());
  200 +
  201 + List<AdminRoleMenuDO> roleMenuDOS = roleMenuService.list(new LambdaQueryWrapper<AdminRoleMenuDO>().in(AdminRoleMenuDO::getRoleId, roleIds));
  202 +
  203 + if (CollectionUtils.isEmpty(roleMenuDOS)) {
  204 + return Collections.emptyList();
  205 + }
  206 + Set<Long> menuIds = roleMenuDOS.stream().map(AdminRoleMenuDO::getMenuId).collect(Collectors.toSet());
  207 + List<AdminMenuDO> menuDOList = menuService.listByIds(menuIds);
  208 + Set<String> permissions = menuDOList.stream().filter(menuDO -> StringUtils.isNotBlank(menuDO.getPermission())).map(AdminMenuDO::getPermission).collect(Collectors.toSet());
  209 + if (CollectionUtils.isEmpty(permissions)) {
  210 + return Collections.emptyList();
  211 + }
  212 + return permissions.stream().map(SimpleGrantedAuthority::new)
  213 + .collect(Collectors.toList());
  214 + }
123 215 }
... ...
src/main/java/com/order/erp/service/admin/impl/AdminUserServiceImpl.java
... ... @@ -2,21 +2,37 @@ package com.order.erp.service.admin.impl;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.collection.CollUtil;
  5 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 6 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
6 8 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  9 +import com.canrd.shop.common.constant.ServerResultCode;
7 10 import com.order.erp.common.constant.Constant;
8 11 import com.order.erp.common.constant.ServerResult;
9   -import com.order.erp.domain.dto.admin.AdminUserDO;
  12 +import com.order.erp.common.exception.BusinessException;
  13 +import com.order.erp.common.utils.ImgCaptchaUtils;
  14 +import com.order.erp.common.utils.RedisUtil;
  15 +import com.order.erp.domain.dto.BaseDO;
  16 +import com.order.erp.domain.dto.admin.*;
10 17 import com.order.erp.domain.vo.UserVO;
11   -import com.order.erp.domain.vo.admin.AdminUserQueryVO;
12   -import com.order.erp.domain.vo.admin.AdminUserVO;
  18 +import com.order.erp.domain.vo.admin.*;
13 19 import com.order.erp.mapper.admin.AdminUserMapper;
14   -import com.order.erp.service.admin.AdminUserService;
  20 +import com.order.erp.security.TokenProvider;
  21 +import com.order.erp.security.config.SecurityProperties;
  22 +import com.order.erp.security.service.OnlineUserService;
  23 +import com.order.erp.security.vo.JwtUser;
  24 +import com.order.erp.service.admin.*;
15 25 import lombok.extern.slf4j.Slf4j;
  26 +import org.springframework.beans.BeanUtils;
  27 +import org.springframework.security.authentication.AuthenticationManager;
  28 +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  29 +import org.springframework.security.core.Authentication;
  30 +import org.springframework.security.core.context.SecurityContextHolder;
16 31 import org.springframework.stereotype.Service;
17 32  
18   -import java.util.List;
19   -import java.util.Objects;
  33 +import javax.annotation.Resource;
  34 +import java.util.*;
  35 +import java.util.stream.Collectors;
20 36  
21 37 /**
22 38 * 用户表(AdminUser)表服务实现类
... ... @@ -28,6 +44,39 @@ import java.util.Objects;
28 44 @Service
29 45 public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUserDO> implements AdminUserService {
30 46  
  47 + @Resource
  48 + private ImgCaptchaUtils imgCaptchaUtils;
  49 +
  50 + @Resource
  51 + private RedisUtil redisUtil;
  52 +
  53 + @Resource
  54 + private AuthenticationManager authenticationManager;
  55 +
  56 + @Resource
  57 + private TokenProvider tokenProvider;
  58 +
  59 + @Resource
  60 + private OnlineUserService onlineUserService;
  61 +
  62 +
  63 + @Resource
  64 + private SecurityProperties securityProperties;
  65 +
  66 + @Resource
  67 + private AdminUserJobService userJobService;
  68 +
  69 + @Resource
  70 + private AdminJobService jobService;
  71 +
  72 + @Resource
  73 + private AdminDeptService deptService;
  74 +
  75 + @Resource
  76 + private AdminUserRoleService userRoleService;
  77 +
  78 + @Resource
  79 + private AdminRoleService roleService;
31 80  
32 81 /**
33 82 * 通过ID查询单条数据
... ... @@ -124,6 +173,104 @@ public class AdminUserServiceImpl extends ServiceImpl&lt;AdminUserMapper, AdminUser
124 173  
125 174 @Override
126 175 public UserVO findByUserName(String userName) {
  176 + AdminUserDO userDO = getOne(new LambdaQueryWrapper<AdminUserDO>()
  177 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  178 + .and(q -> q.eq(AdminUserDO::getUserName, userName).or().eq(AdminUserDO::getPhone, userName))
  179 + .last("limit 1"));
  180 + if (Objects.isNull(userDO)) {
  181 + throw new BusinessException(ServerResultCode.USER_NOT_EXIT);
  182 + }
  183 + UserVO userVO = new UserVO();
  184 + BeanUtils.copyProperties(userDO, userVO);
  185 + userVO.setEnabled(Constant.ENABLE_TEN == userDO.getEnableFlag());
  186 + AdminUserJobDO userJobDO = userJobService.getOne(new LambdaQueryWrapper<AdminUserJobDO>().eq(AdminUserJobDO::getUserId, userDO.getId()));
  187 + if (Objects.nonNull(userJobDO)) {
  188 + AdminJobDO jobDO = jobService.getById(userJobDO.getJobId());
  189 + userVO.setJob(JobSmallVO.builder().id(jobDO.getId()).name(jobDO.getName()).build());
  190 + }
  191 + AdminDeptDO deptDO = deptService.getById(userDO.getDeptId());
  192 + if (Objects.nonNull(deptDO)) {
  193 + userVO.setDept(DeptSmallVO.builder().id(deptDO.getId()).name(deptDO.getName()).build());
  194 + }
  195 + List<AdminUserRoleDO> userRoleDOList = userRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>().eq(AdminUserRoleDO::getUserId, userDO.getId()));
  196 + if (CollectionUtils.isNotEmpty(userRoleDOList)) {
  197 + Set<Long> roleIds = userRoleDOList.stream().map(AdminUserRoleDO::getRoleId).collect(Collectors.toSet());
  198 + List<AdminRoleDO> roleDOList = roleService.listByIds(roleIds);
  199 + if (CollectionUtils.isNotEmpty(roleDOList)) {
  200 + userVO.setRoles(roleDOList.stream().map(x -> {
  201 + return RoleSmallVO.builder().id(x.getId()).name(x.getName()).dataScope(x.getDataScope()).level(x.getLevel()).build();
  202 + }).collect(Collectors.toSet()));
  203 + }
  204 + }
  205 + return userVO;
  206 + }
  207 +
  208 +
  209 + @Override
  210 + public ServerResult phoneRegister(AdminUserRegisterVO registerVO) {
  211 + return null;
  212 + }
  213 +
  214 + @Override
  215 + public ServerResult loginByPhone(AdminUserLoginByPhoneVO loginByPhoneVO) {
  216 + return null;
  217 + }
  218 +
  219 + @Override
  220 + public ServerResult loginByPwd(AdminUserLoginByPwdVO loginByPwdVO) {
  221 + imgCaptchaUtils.validateImgCaptcha(loginByPwdVO.getImgCaptchaCode(), loginByPwdVO.getImgCaptchaUuid());
  222 +
  223 + return ServerResult.success(buildLoginUser(loginByPwdVO));
  224 + }
  225 +
  226 +
  227 + /**
  228 + * @param loginByPwdVO
  229 + * @return
  230 + */
  231 + private Map<String, Object> buildLoginUser(AdminUserLoginByPwdVO loginByPwdVO) {
  232 + Authentication authentication = auth(loginByPwdVO);
  233 + // 生成令牌
  234 + String token = tokenProvider.createToken(authentication);
  235 + final JwtUser jwtUser = (JwtUser) authentication.getPrincipal();
  236 + // 保存在线信息
  237 + onlineUserService.save(jwtUser, token);
  238 + // 返回 token 与 用户信息
  239 + Map<String, Object> authInfo = new HashMap<String, Object>(2) {{
  240 + put("token", securityProperties.getTokenStartWith() + token);
  241 + put("user", jwtUser);
  242 + }};
  243 +
  244 + return authInfo;
  245 + }
  246 +
  247 + /**
  248 + * @param loginByPwdVO
  249 + * @return
  250 + */
  251 + private Authentication auth(AdminUserLoginByPwdVO loginByPwdVO) {
  252 +
  253 + UsernamePasswordAuthenticationToken authenticationToken =
  254 + new UsernamePasswordAuthenticationToken(loginByPwdVO.getUserName(), loginByPwdVO.getPassword());
  255 +
  256 + Authentication authentication = authenticationManager.authenticate(authenticationToken);
  257 + SecurityContextHolder.getContext().setAuthentication(authentication);
  258 +
  259 + return authentication;
  260 + }
  261 +
  262 + @Override
  263 + public ServerResult passwordModify(AdminUserModifyPwdVO modifyPwdVO) {
  264 + return null;
  265 + }
  266 +
  267 + @Override
  268 + public ServerResult sendPasswordRecoverMail(AdminUserPasswordRecoverEmailVO recoverEmailVO) {
  269 + return null;
  270 + }
  271 +
  272 + @Override
  273 + public MemberUserVO findByNameOrPhone(String username) {
127 274 return null;
128 275 }
129 276 }
... ...
src/main/java/com/order/erp/service/impl/SysLogServiceImpl.java 0 → 100644
  1 +package com.order.erp.service.impl;
  2 +
  3 +import cn.hutool.core.bean.BeanUtil;
  4 +import cn.hutool.core.collection.CollUtil;
  5 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7 +import com.order.erp.common.constant.Constant;
  8 +import com.order.erp.common.constant.ServerResult;
  9 +import com.order.erp.domain.dto.SysLogDO;
  10 +import com.order.erp.domain.vo.SysLogQueryVO;
  11 +import com.order.erp.domain.vo.SysLogVO;
  12 +import com.order.erp.mapper.SysLogMapper;
  13 +import com.order.erp.service.SysLogService;
  14 +import lombok.extern.slf4j.Slf4j;
  15 +import org.springframework.stereotype.Service;
  16 +
  17 +import java.util.List;
  18 +import java.util.Objects;
  19 +
  20 +/**
  21 + * 系统日志(SysLog)表服务实现类
  22 + *
  23 + * @author makejava
  24 + * @since 2023-09-06 16:24:59
  25 + */
  26 +@Slf4j
  27 +@Service
  28 +public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLogDO> implements SysLogService {
  29 +
  30 +
  31 + /**
  32 + * 通过ID查询单条数据
  33 + * <p>
  34 + * sysLogQueryVO 主键
  35 + *
  36 + * @return 实例对象
  37 + */
  38 + @Override
  39 + public ServerResult queryById(SysLogQueryVO sysLogQueryVO) {
  40 + if (Objects.isNull(sysLogQueryVO.getId())) {
  41 + return ServerResult.fail("id 不能为空");
  42 + }
  43 + SysLogDO SysLogDo = getById(sysLogQueryVO.getId());
  44 + if (Objects.isNull(SysLogDo)) {
  45 + return ServerResult.success(null);
  46 + }
  47 + return ServerResult.success(BeanUtil.copyProperties(SysLogDo, SysLogVO.class));
  48 + }
  49 +
  50 + /**
  51 + * 分页查询
  52 + *
  53 + * @param sysLogQueryVO 筛选条件
  54 + * @return 查询结果
  55 + */
  56 + @Override
  57 + public ServerResult list(SysLogQueryVO sysLogQueryVO) {
  58 + return ServerResult.success();
  59 + }
  60 +
  61 + /**
  62 + * 新增数据
  63 + *
  64 + * @param sysLogVO 实例对象
  65 + * @return 实例对象
  66 + */
  67 + @Override
  68 + public ServerResult add(SysLogVO sysLogVO) {
  69 + //todo 校验
  70 + if (Objects.nonNull(sysLogVO.getId())) {
  71 + sysLogVO.setId(null);
  72 + }
  73 + SysLogDO sysLogDo = BeanUtil.copyProperties(sysLogVO, SysLogDO.class);
  74 +
  75 + save(sysLogDo);
  76 +
  77 + return ServerResult.success();
  78 + }
  79 +
  80 + /**
  81 + * 修改数据
  82 + *
  83 + * @param sysLogVO 实例对象
  84 + * @return 实例对象
  85 + */
  86 + @Override
  87 + public ServerResult edit(SysLogVO sysLogVO) {
  88 + //todo 校验
  89 + if (Objects.isNull(sysLogVO.getId())) {
  90 + return ServerResult.fail("id 不能为空");
  91 + }
  92 + SysLogDO sysLogDo = BeanUtil.copyProperties(sysLogVO, SysLogDO.class);
  93 +
  94 + updateById(sysLogDo);
  95 +
  96 + return ServerResult.success();
  97 + }
  98 +
  99 + /**
  100 + * 通过主键删除数据
  101 + *
  102 + * @param sysLogQueryVO 筛选条件
  103 + * @return 是否成功
  104 + */
  105 + @Override
  106 + public ServerResult deleteById(SysLogQueryVO sysLogQueryVO) {
  107 + List<Long> ids = sysLogQueryVO.getIds();
  108 + if (CollUtil.isEmpty(ids)) {
  109 + return ServerResult.fail("ids 参数不能为空");
  110 + }
  111 + List<SysLogDO> sysLogList = listByIds(ids);
  112 + if (CollUtil.isEmpty(sysLogList)) {
  113 + return ServerResult.success();
  114 + }
  115 + //todo 校验是否可以逻辑删除
  116 + LambdaUpdateWrapper<SysLogDO> updateWrapper = new LambdaUpdateWrapper<SysLogDO>()
  117 + .in(SysLogDO::getId, ids)
  118 + .set(SysLogDO::getEnableFlag, Constant.UNABLE_TWENTY);
  119 + update(updateWrapper);
  120 + return ServerResult.success();
  121 + }
  122 +}
... ...