Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

徐玉祥 4 лет назад
Родитель
Сommit
667c9946f2
25 измененных файлов с 281 добавлено и 1063 удалено
  1. 45 50
      _sql/guns-separation.sql
  2. 0 48
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/app/service/impl/SysAppServiceImpl.java
  3. 38 86
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/auth/service/impl/AuthServiceImpl.java
  4. 1 31
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/emp/service/impl/SysEmpExtOrgPosPosServiceImpl.java
  5. 1 25
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/emp/service/impl/SysEmpPosServiceImpl.java
  6. 3 40
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/emp/service/impl/SysEmpServiceImpl.java
  7. 4 22
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/file/service/impl/SysFileInfoServiceImpl.java
  8. 4 16
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/log/service/impl/SysOpLogServiceImpl.java
  9. 4 16
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/log/service/impl/SysVisLogServiceImpl.java
  10. 18 67
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/menu/service/impl/SysMenuServiceImpl.java
  11. 1 7
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/monitor/service/impl/SysMachineServiceImpl.java
  12. 0 12
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/monitor/service/impl/SysOnlineUserServiceImpl.java
  13. 50 91
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/notice/service/impl/SysNoticeServiceImpl.java
  14. 1 25
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/notice/service/impl/SysNoticeUserServiceImpl.java
  15. 2 1
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/org/service/SysOrgService.java
  16. 16 67
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/org/service/impl/SysOrgServiceImpl.java
  17. 9 45
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/pos/service/impl/SysPosServiceImpl.java
  18. 2 26
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/role/service/impl/SysRoleDataScopeServiceImpl.java
  19. 1 25
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java
  20. 36 127
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/role/service/impl/SysRoleServiceImpl.java
  21. 4 28
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/sms/service/impl/SysSmsInfoServiceImpl.java
  22. 3 3
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/user/service/SysUserRoleService.java
  23. 0 24
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/user/service/impl/SysUserDataScopeServiceImpl.java
  24. 6 32
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/user/service/impl/SysUserRoleServiceImpl.java
  25. 32 149
      guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/user/service/impl/SysUserServiceImpl.java

+ 45 - 50
_sql/guns-separation.sql

@ -16,7 +16,7 @@ CREATE TABLE `sys_app`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统应用表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统应用表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_app
@ -42,7 +42,7 @@ CREATE TABLE `sys_config`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统参数配置表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统参数配置表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_config
@ -92,7 +92,7 @@ CREATE TABLE `sys_dict_data`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统字典值表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统字典值表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_dict_data
@ -176,7 +176,7 @@ CREATE TABLE `sys_dict_type`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统字典类型表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统字典类型表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_dict_type
@ -208,7 +208,7 @@ CREATE TABLE `sys_emp`  (
  `org_id` bigint(20) NOT NULL COMMENT '所属机构id',
  `org_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '所属机构名称',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '员工表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '员工表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_emp
@ -227,11 +227,7 @@ CREATE TABLE `sys_emp_ext_org_pos`  (
  `org_id` bigint(20) NOT NULL COMMENT '机构id',
  `pos_id` bigint(20) NOT NULL COMMENT '岗位id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '员工附属机构岗位表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '员工附属机构岗位表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for sys_emp_pos
@ -242,7 +238,7 @@ CREATE TABLE `sys_emp_pos`  (
  `emp_id` bigint(20) NOT NULL COMMENT '员工id',
  `pos_id` bigint(20) NOT NULL COMMENT '职位id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '员工职位关联表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '员工职位关联表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_emp_pos
@ -270,11 +266,7 @@ CREATE TABLE `sys_file_info`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '文件信息表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '文件信息表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for sys_menu
@ -305,24 +297,24 @@ CREATE TABLE `sys_menu`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统菜单表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统菜单表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_menu
-- ----------------------------
INSERT INTO `sys_menu` VALUES (1143468867767607297, 1265474261896806408, '[0],[1265474261896806402],[1265474261896806408],', '设为默认应用', 'sys_app_mgr_set_as_default', 2, '', '', '', 'sysApp:setAsDefault', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 17:14:56', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264619904766685186, 0, '[0],', '开发管理', 'system_tools', 0, 'euro', '/tools', 'PageView', '', 'devtools', 1, 'Y', NULL, '', 1, 3, '', 0, '2020-05-25 02:10:55', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264620409496645634, 1264619904766685186, '[0],[1264619904766685186],', '系统配置', 'system_tools_config', 1, '', '/config', 'system/config/index', '', 'devtools', 1, 'Y', NULL, '', 1, 1, '', 0, '2020-05-25 02:12:56', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264619904766685186, 0, '[0],', '开发管理', 'system_tools', 0, 'euro', '/tools', 'PageView', '', 'system', 1, 'Y', NULL, '', 1, 3, '', 0, '2020-05-25 02:10:55', 1265476890672672808, '2020-07-15 16:08:20', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1264620409496645634, 1264619904766685186, '[0],[1264619904766685186],', '系统配置', 'system_tools_config', 1, '', '/config', 'system/config/index', '', 'system', 1, 'Y', NULL, '', 1, 1, '', 0, '2020-05-25 02:12:56', 1265476890672672808, '2020-07-15 16:08:27', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1264622039642255361, 0, '[0],', '主控面板', 'system_index', 0, 'home', '/', 'RouteView', '', 'system', 0, 'Y', NULL, '/analysis', 1, 1, '', 0, '2020-05-25 02:19:24', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622671778394114, 1264622039642255361, '[0],[1264622039642255361],', '分析页', 'system_index_dashboard', 1, '', 'analysis', 'system/dashboard/Analysis', '', 'system', 0, 'Y', NULL, '', 1, 1, '', 0, '2020-05-25 02:21:55', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264623145550196737, 1264622039642255361, '[0],[1264622039642255361],', '工作台', 'system_index_workplace', 1, '', 'workplace', 'system/dashboard/Workplace', '', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-25 02:23:48', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806402, 0, '[0],', '系统管理', 'sys_mgr', 0, 'setting', '/sys', 'PageView', '', 'system', 0, 'Y', NULL, '', 1, 2, '', 0, '2020-03-27 15:58:16', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806402, 0, '[0],', '组织架构', 'sys_mgr', 0, 'team', '/sys', 'PageView', '', 'system', 0, 'Y', NULL, '', 1, 2, '', 0, '2020-03-27 15:58:16', 1265476890672672808, '2020-07-15 16:11:07', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265474261896806403, 1265474261896806402, '[0],[1265474261896806402],', '用户管理', 'sys_user_mgr', 1, '', '/user', 'system/user/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:10:21', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806404, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户查询', 'sys_user_mgr_page', 2, '', '', '', 'sysUser:page', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:36:49', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806405, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户增加', 'sys_user_mgr_add', 2, '', '', '', 'sysUser:add', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:37:35', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806406, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户删除', 'sys_user_mgr_delete', 2, '', '', '', 'sysUser:delete', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:37:58', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806407, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户详情', 'sys_user_mgr_detail', 2, '', '', '', 'sysUser:detail', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:38:25', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806408, 1265474261896806402, '[0],[1265474261896806402],', '应用管理', 'sys_app_mgr', 1, '', '/app', 'system/app/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:40:21', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806408, 1283308304890847233, '[0],[1283308304890847233],', '应用管理', 'sys_app_mgr', 1, '', '/app', 'system/app/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:40:21', 1265476890672672808, '2020-07-15 15:52:34', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265474261896806409, 1265474261896806408, '[0],[1265474261896806402],[1265474261896806408],', '应用查询', 'sys_app_mgr_page', 2, '', '', '', 'sysApp:page', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:41:58', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806410, 1265474261896806408, '[0],[1265474261896806402],[1265474261896806408],', '应用增加', 'sys_app_mgr_add', 2, '', '', '', 'sysApp:add', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 16:44:10', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806411, 1265474261896806408, '[0],[1265474261896806402],[1265474261896806408],', '应用删除', 'sys_app_mgr_delete', 2, '', '', '', 'sysApp:delete', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 17:14:29', 1265476890672672808, NULL, NULL);
@ -338,13 +330,13 @@ INSERT INTO `sys_menu` VALUES (1265474261896806420, 1265474261896806419, '[0],[1
INSERT INTO `sys_menu` VALUES (1265474261896806421, 1265474261896806419, '[0],[1265474261896806402],[1265474261896806419],', '职位增加', 'sys_pos_mgr_add', 2, '', '', '', 'sysPos:add', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:42:20', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806422, 1265474261896806419, '[0],[1265474261896806402],[1265474261896806419],', '职位删除', 'sys_pos_mgr_delete', 2, '', '', '', 'sysPos:delete', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:42:39', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806423, 1265474261896806419, '[0],[1265474261896806402],[1265474261896806419],', '职位详情', 'sys_pos_mgr_detail', 2, '', '', '', 'sysPos:detail', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:43:00', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806424, 1265474261896806402, '[0],[1265474261896806402],', '菜单管理', 'sys_menu_mgr', 1, '', '/menu', 'system/menu/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:44:35', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806424, 1283308304890847233, '[0],[1283308304890847233],', '菜单管理', 'sys_menu_mgr', 1, '', '/menu', 'system/menu/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:44:35', 1265476890672672808, '2020-07-15 15:52:45', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265474261896806425, 1265474261896806424, '[0],[1265474261896806402],[1265474261896806424],', '菜单列表', 'sys_menu_mgr_list', 2, '', '', '', 'sysMenu:list', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:45:20', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806426, 1265474261896806424, '[0],[1265474261896806402],[1265474261896806424],', '菜单增加', 'sys_menu_mgr_add', 2, '', '', '', 'sysMenu:add', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:45:37', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806427, 1265474261896806424, '[0],[1265474261896806402],[1265474261896806424],', '菜单删除', 'sys_menu_mgr_delete', 2, '', '', '', 'sysMenu:delete', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:46:01', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806428, 1265474261896806424, '[0],[1265474261896806402],[1265474261896806424],', '菜单详情', 'sys_menu_mgr_detail', 2, '', '', '', 'sysMenu:detail', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:46:22', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806429, 1265474261896806424, '[0],[1265474261896806402],[1265474261896806424],', '菜单树', 'sys_menu_mgr_tree', 2, '', '', '', 'sysMenu:tree', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-27 18:47:50', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806430, 1265474261896806402, '[0],[1265474261896806402],', '角色管理', 'sys_role_mgr', 1, '', '/role', 'system/role/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-03-28 16:01:09', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806430, 1283308304890847233, '[0],[1283308304890847233],', '角色管理', 'sys_role_mgr', 1, '', '/role', 'system/role/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-03-28 16:01:09', 1265476890672672808, '2020-07-15 15:52:56', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265474261896806431, 1265474261896806430, '[0],[1265474261896806402],[1265474261896806430],', '角色查询', 'sys_role_mgr_page', 2, '', '', '', 'sysRole:page', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-28 16:02:09', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806432, 1265474261896806430, '[0],[1265474261896806402],[1265474261896806430],', '角色增加', 'sys_role_mgr_add', 2, '', '', '', 'sysRole:add', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-28 16:02:27', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806433, 1265474261896806430, '[0],[1265474261896806402],[1265474261896806430],', '角色删除', 'sys_role_mgr_delete', 2, '', '', '', 'sysRole:delete', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-03-28 16:02:46', 1265476890672672808, NULL, NULL);
@ -356,7 +348,7 @@ INSERT INTO `sys_menu` VALUES (1265474261896806438, 1265474261896806403, '[0],[1
INSERT INTO `sys_menu` VALUES (1265474261896806439, 0, '[0],', '日志管理', 'sys_log_mgr', 0, 'read', '/log', 'PageView', '', 'system', 1, 'Y', NULL, '', 1, 4, '', 0, '2020-04-01 09:25:01', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806440, 1265474261896806439, '[0],[1265474261896806439],', '访问日志', 'sys_log_mgr_vis_log', 1, '', '/vislog', 'system/log/vislog/index', '', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 09:26:40', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806441, 1265474261896806439, '[0],[1265474261896806439],', '操作日志', 'sys_log_mgr_op_log', 1, '', '/oplog', 'system/log/oplog/index', '', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 09:26:59', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806442, 1265474261896806402, '[0],[1265474261896806402],', '字典管理', 'sys_dict_mgr', 1, '', '/dict', 'system/dict/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 11:17:26', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806442, 1264619904766685186, '[0],[1264619904766685186],', '字典管理', 'sys_dict_mgr', 1, '', '/dict', 'system/dict/index', '', 'system', 1, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 11:17:26', 1265476890672672808, '2020-07-15 16:16:40', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265474261896806443, 1265474261896806442, '[0],[1265474261896806402],[1265474261896806442],', '字典类型增加', 'sys_dict_mgr_dict_type_add', 2, '', '', '', 'sysDictType:add', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 11:19:58', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806444, 1265474261896806442, '[0],[1265474261896806402],[1265474261896806442],', '字典类型查询', 'sys_dict_mgr_dict_type_page', 2, '', '', '', 'sysDictType:page', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 11:20:22', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806445, 1265474261896806442, '[0],[1265474261896806402],[1265474261896806442],', '字典类型删除', 'sys_dict_mgr_dict_type_delete', 2, '', '', '', 'sysDictType:delete', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 11:21:30', 1265476890672672808, NULL, NULL);
@ -371,12 +363,12 @@ INSERT INTO `sys_menu` VALUES (1265474261896806453, 1265474261896806442, '[0],[1
INSERT INTO `sys_menu` VALUES (1265474261896806454, 1265474261896806442, '[0],[1265474261896806402],[1265474261896806442],', '字典值列表', 'sys_dict_mgr_dict_list', 2, '', '', '', 'sysDictData:list', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 11:24:58', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806455, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户更新信息', 'sys_user_mgr_update_info', 2, '', '', '', 'sysUser:updateInfo', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 16:19:32', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265474261896806456, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户修改密码', 'sys_user_mgr_update_pwd', 2, '', '', '', 'sysUser:updatePwd', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-04-01 16:20:25', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265569017708572674, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置查询', 'system_tools_config_page', 2, '', '', '', 'sysConfig:page', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:02:22', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265569101544321025, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置列表', 'system_tools_config_list', 2, '', '', '', 'sysConfig:list', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:02:42', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265569176311984129, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置详情', 'system_tools_config_detail', 2, '', '', '', 'sysConfig:detail', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:02:59', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265569306834530306, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置增加', 'system_tools_config_add', 2, '', '', '', 'sysConfig:add', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:03:31', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265569365085024257, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置删除', 'system_tools_config_delete', 2, '', '', '', 'sysConfig:delete', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:03:44', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265569410756800513, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置编辑', 'system_tools_config_edit', 2, '', '', '', 'sysConfig:edit', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:03:55', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1265569017708572674, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置查询', 'system_tools_config_page', 2, '', '', '', 'sysConfig:page', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:02:22', 1265476890672672808, '2020-07-15 16:08:27', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265569101544321025, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置列表', 'system_tools_config_list', 2, '', '', '', 'sysConfig:list', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:02:42', 1265476890672672808, '2020-07-15 16:08:27', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265569176311984129, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置详情', 'system_tools_config_detail', 2, '', '', '', 'sysConfig:detail', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:02:59', 1265476890672672808, '2020-07-15 16:08:27', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265569306834530306, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置增加', 'system_tools_config_add', 2, '', '', '', 'sysConfig:add', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:03:31', 1265476890672672808, '2020-07-15 16:08:27', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265569365085024257, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置删除', 'system_tools_config_delete', 2, '', '', '', 'sysConfig:delete', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:03:44', 1265476890672672808, '2020-07-15 16:08:27', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1265569410756800513, 1264620409496645634, '[0],[1264619904766685186],[1264620409496645634],', '配置编辑', 'system_tools_config_edit', 2, '', '', '', 'sysConfig:edit', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-27 17:03:55', 1265476890672672808, '2020-07-15 16:08:27', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1266253410563497986, 1265474261896806430, '[0],[1265474261896806402],[1265474261896806430],', '角色拥有菜单', 'sys_role_mgr_own_menu', 2, '', '', '', 'sysRole:ownMenu', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-29 14:21:54', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1266253721189457921, 1265474261896806430, '[0],[1265474261896806402],[1265474261896806430],', '角色拥有数据', 'sys_role_mgr_own_data', 2, '', '', '', 'sysRole:ownData', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-29 14:23:08', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1266254786341347330, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户拥有角色', 'sys_user_mgr_own_role', 2, '', '', '', 'sysUser:ownRole', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-05-29 14:27:22', 1265476890672672808, NULL, NULL);
@ -432,23 +424,24 @@ INSERT INTO `sys_menu` VALUES (1278508097945509889, 1265474261896806441, '[0],[1
INSERT INTO `sys_menu` VALUES (1278508241906606081, 1265474261896806441, '[0],[1265474261896806439],[1265474261896806441],', '操作日志清空', 'sys_log_mgr_op_log_delete', 2, '', '', '', 'sysOpLog:delete', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 09:58:13', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278509840213254146, 1265474261896806408, '[0],[1265474261896806402],[1265474261896806408],', '应用编辑', 'sys_app_mgr_edit', 2, '', '', '', 'sysApp:edit', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 10:04:34', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278509945922297857, 1265474261896806408, '[0],[1265474261896806402],[1265474261896806408],', '应用列表', 'sys_app_mgr_list', 2, '', '', '', 'sysApp:list', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 10:04:59', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278534949191852033, 1264619904766685186, '[0],[1264619904766685186],', '邮件发送', 'sys_email_mgr', 1, '', '/email', 'system/email/index', '', 'devtools', 1, 'Y', NULL, '', 1, 100, NULL, 0, '2020-07-02 11:44:21', 1265476890672672808, '2020-07-04 00:16:26', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278535276146237442, 1278534949191852033, '[0],[1264619904766685186],[1278534949191852033],', '发送文本邮件', 'sys_email_mgr_send_email', 2, '', '', '', 'email:sendEmail', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:45:39', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278535352889417730, 1278534949191852033, '[0],[1264619904766685186],[1278534949191852033],', '发送html邮件', 'sys_email_mgr_send_email_html', 2, '', '', '', 'email:sendEmailHtml', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:45:57', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278534949191852033, 1264619904766685186, '[0],[1264619904766685186],', '邮件发送', 'sys_email_mgr', 1, '', '/email', 'system/email/index', '', 'system', 1, 'Y', NULL, '', 1, 100, NULL, 0, '2020-07-02 11:44:21', 1265476890672672808, '2020-07-15 16:08:58', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278535276146237442, 1278534949191852033, '[0],[1264619904766685186],[1278534949191852033],', '发送文本邮件', 'sys_email_mgr_send_email', 2, '', '', '', 'email:sendEmail', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:45:39', 1265476890672672808, '2020-07-15 16:08:58', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278535352889417730, 1278534949191852033, '[0],[1264619904766685186],[1278534949191852033],', '发送html邮件', 'sys_email_mgr_send_email_html', 2, '', '', '', 'email:sendEmailHtml', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:45:57', 1265476890672672808, '2020-07-15 16:08:58', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278536878072569857, 1265474261896806424, '[0],[1265474261896806402],[1265474261896806424],', '菜单编辑', 'sys_menu_mgr_edit', 2, '', '', '', 'sysMenu:edit', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:52:00', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278537486905155586, 1265474261896806413, '[0],[1265474261896806402],[1265474261896806413],', '机构列表', 'sys_org_mgr_list', 2, '', '', '', 'sysOrg:list', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:54:26', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278537535882043393, 1265474261896806413, '[0],[1265474261896806402],[1265474261896806413],', '机构编辑', 'sys_org_mgr_edit', 2, '', '', '', 'sysOrg:edit', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:54:37', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278537871925485570, 1265474261896806419, '[0],[1265474261896806402],[1265474261896806419],', '职位列表', 'sys_pos_mgr_list', 2, '', '', '', 'sysPos:list', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:55:57', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278537914929684481, 1265474261896806419, '[0],[1265474261896806402],[1265474261896806419],', '职位编辑', 'sys_pos_mgr_edit', 2, '', '', '', 'sysPos:edit', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:56:08', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278538248938889218, 1265474261896806430, '[0],[1265474261896806402],[1265474261896806430],', '角色编辑', 'sys_role_mgr_edit', 2, '', '', '', 'sysRole:edit', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 11:57:27', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278538938717347842, 1264619904766685186, '[0],[1264619904766685186],', '短信管理', 'sys_sms_mgr', 1, '', '/sms', 'system/sms/index', '', 'devtools', 1, 'Y', NULL, '', 1, 100, NULL, 0, '2020-07-02 12:00:12', 1265476890672672808, '2020-07-04 00:16:38', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278539520958025730, 1278538938717347842, '[0],[1264619904766685186],[1278538938717347842],', '发送验证码短信', 'sys_sms_mgr_send_login_message', 2, '', '', '', 'sms:sendLoginMessage', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:02:31', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278539601320890370, 1278538938717347842, '[0],[1264619904766685186],[1278538938717347842],', '验证短信验证码', 'sys_sms_mgr_validate_message', 2, '', '', '', 'sms:validateMessage', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:02:50', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278543148905136129, 1278538938717347842, '[0],[1264619904766685186],[1278538938717347842],', '短信发送记录查询', 'sys_sms_mgr_page', 2, '', '', '', 'sms:page', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:16:56', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278538938717347842, 1264619904766685186, '[0],[1264619904766685186],', '短信管理', 'sys_sms_mgr', 1, '', '/sms', 'system/sms/index', '', 'system', 1, 'Y', NULL, '', 1, 100, NULL, 0, '2020-07-02 12:00:12', 1265476890672672808, '2020-07-15 16:08:39', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278539520958025730, 1278538938717347842, '[0],[1264619904766685186],[1278538938717347842],', '发送验证码短信', 'sys_sms_mgr_send_login_message', 2, '', '', '', 'sms:sendLoginMessage', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:02:31', 1265476890672672808, '2020-07-15 16:08:39', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278539601320890370, 1278538938717347842, '[0],[1264619904766685186],[1278538938717347842],', '验证短信验证码', 'sys_sms_mgr_validate_message', 2, '', '', '', 'sms:validateMessage', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:02:50', 1265476890672672808, '2020-07-15 16:08:39', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278543148905136129, 1278538938717347842, '[0],[1264619904766685186],[1278538938717347842],', '短信发送记录查询', 'sys_sms_mgr_page', 2, '', '', '', 'sms:page', 'devtools', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:16:56', 1265476890672672808, '2020-07-15 16:08:39', 1265476890672672808);
INSERT INTO `sys_menu` VALUES (1278544017260281858, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户编辑', 'sys_user_mgr_edit', 2, '', '', '', 'sysUser:edit', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:20:23', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278544348966813698, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户修改头像', 'sys_user_mgr_update_avatar', 2, '', '', '', 'sysUser:updateAvatar', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:21:42', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278544420391616514, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户导出', 'sys_user_mgr_export', 2, '', '', '', 'sysUser:export', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-02 12:21:59', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1278923983416270850, 1265474261896806403, '[0],[1265474261896806402],[1265474261896806403],', '用户选择器', 'sys_user_mgr_selector', 2, '', '', '', 'sysUser:selector', 'system', 0, 'Y', NULL, '', 1, 100, '', 0, '2020-07-03 13:30:14', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1283308304890847233, 0, '[0],', '权限管理', 'auth_manager', 0, 'safety-certificate', '/auth', 'PageView', '', 'system', 0, 'Y', NULL, '', 1, 100, NULL, 0, '2020-07-15 15:51:57', 1265476890672672808, '2020-07-15 15:54:21', 1265476890672672808);
-- ----------------------------
-- Table structure for sys_notice
@ -471,11 +464,7 @@ CREATE TABLE `sys_notice`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '通知表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '通知表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for sys_notice_user
@ -488,11 +477,7 @@ CREATE TABLE `sys_notice_user`  (
  `status` tinyint(4) NOT NULL COMMENT '状态(字典 0未读 1已读)',
  `read_time` datetime(0) NULL DEFAULT NULL COMMENT '阅读时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户数据范围表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户数据范围表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for sys_op_log
@ -517,7 +502,7 @@ CREATE TABLE `sys_op_log`  (
  `op_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间',
  `account` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作账号',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统操作日志表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统操作日志表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_op_log
@ -541,7 +526,7 @@ CREATE TABLE `sys_org`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统组织机构表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统组织机构表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_org
@ -572,7 +557,7 @@ CREATE TABLE `sys_pos`  (
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `CODE_UNI`(`code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统职位表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统职位表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_pos
@ -599,7 +584,7 @@ CREATE TABLE `sys_role`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统角色表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统角色表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_role
@ -617,7 +602,7 @@ CREATE TABLE `sys_role_data_scope`  (
  `role_id` bigint(20) NOT NULL COMMENT '角色id',
  `org_id` bigint(20) NOT NULL COMMENT '机构id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统角色数据范围表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统角色数据范围表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_role_data_scope
@ -640,7 +625,7 @@ CREATE TABLE `sys_role_menu`  (
  `role_id` bigint(20) NOT NULL COMMENT '角色id',
  `menu_id` bigint(20) NOT NULL COMMENT '菜单id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统角色菜单表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统角色菜单表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_role_menu
@ -784,11 +769,7 @@ CREATE TABLE `sys_sms`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '短信信息发送表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '短信信息发送表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for sys_timers
@ -806,7 +787,7 @@ CREATE TABLE `sys_timers`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_timers
@ -839,12 +820,12 @@ CREATE TABLE `sys_user`  (
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (1265476890672672808, 'superAdmin', '0c45ea6e80876cf93e49677873c6af22', '超级管理员', '超级管理员', NULL, 'r10kd', '2020-03-18', 1, 'superAdmin@qq.com', '15228937093', '12345678', '127.0.0.1', '2020-07-12 15:24:01', 1, 0, '2020-05-29 16:39:28', -1, '2020-07-12 15:24:01', -1);
INSERT INTO `sys_user` VALUES (1265476890672672808, 'superAdmin', '0c45ea6e80876cf93e49677873c6af22', '超级管理员', '超级管理员', NULL, 'r10kd', '2020-03-18', 1, 'superAdmin@qq.com', '15228937093', '12345678', '127.0.0.1', '2020-07-15 16:24:41', 1, 0, '2020-05-29 16:39:28', -1, '2020-07-15 16:24:41', -1);
INSERT INTO `sys_user` VALUES (1275735541155614721, 'yubaoshan', 'bf93b090ac9289229e851ef5ca6cf20d', 'Await', '俞宝山', NULL, 'wbd7u', '1992-10-03', 1, 'await183@qq.com', '18200001102', '', '127.0.0.1', '2020-07-08 15:38:59', 2, 0, '2020-06-24 18:20:30', 1265476890672672808, '2020-07-08 15:48:39', 1265476890672672808);
INSERT INTO `sys_user` VALUES (1280700700074041345, 'fengshuonan', 'fc7b5930be8bf14c64e9cb2f88f4b7f3', 'stylefeng', '冯硕楠', NULL, 'syh39', '2020-07-01', 1, NULL, '18200001103', NULL, '39.106.98.24', '2020-07-12 14:59:41', 2, 0, '2020-07-08 11:10:16', 1265476890672672808, '2020-07-12 14:59:41', -1);
INSERT INTO `sys_user` VALUES (1280709549107552257, 'xuyuxiang', '2a4ff388bf923a7b3382fc904b015d2e', '就是那个锅', '徐玉祥', NULL, 'j4di1', '2020-07-01', 1, NULL, '18200001100', NULL, '127.0.0.1', '2020-07-09 10:58:59', 2, 0, '2020-07-08 11:45:26', 1265476890672672808, '2020-07-09 10:58:59', -1);
@ -858,7 +839,7 @@ CREATE TABLE `sys_user_data_scope`  (
  `user_id` bigint(20) NOT NULL COMMENT '用户id',
  `org_id` bigint(20) NOT NULL COMMENT '机构id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户数据范围表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户数据范围表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_user_data_scope
@ -889,7 +870,7 @@ CREATE TABLE `sys_user_role`  (
  `user_id` bigint(20) NOT NULL COMMENT '用户id',
  `role_id` bigint(20) NOT NULL COMMENT '角色id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户角色表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户角色表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_user_role
@ -915,10 +896,6 @@ CREATE TABLE `sys_vis_log`  (
  `vis_time` datetime(0) NULL DEFAULT NULL COMMENT '访问时间',
  `account` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '访问账号',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统访问日志表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统访问日志表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;

+ 0 - 48
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/app/service/impl/SysAppServiceImpl.java

@ -67,12 +67,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
    @Resource
    private SysMenuService sysMenuService;
    /**
     * 获取用户应用相关信息
     *
     * @author xuyuxiang
     * @date 2020/3/13 16:27
     */
    @Override
    public List<Dict> getLoginApps(Long userId) {
        List<Dict> userAppDictList = CollectionUtil.newArrayList();
@ -125,12 +119,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
        return userAppDictList;
    }
    /**
     * 查询系统应用分页
     *
     * @author xuyuxiang
     * @date 2020/3/24 20:56
     */
    @Override
    public PageResult<SysApp> page(SysAppParam sysAppParam) {
        LambdaQueryWrapper<SysApp> queryWrapper = new LambdaQueryWrapper<>();
@ -148,12 +136,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
        return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
    }
    /**
     * 添加系统应用
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:54
     */
    @Override
    public void add(SysAppParam sysAppParam) {
        //校验参数,检查是否存在相同的名称和编码,以及默认激活的系统的数量是否合理
@ -164,12 +146,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
        this.save(sysApp);
    }
    /**
     * 删除系统应用
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:59
     */
    @Override
    public void delete(SysAppParam sysAppParam) {
        SysApp sysApp = this.querySysApp(sysAppParam);
@ -184,12 +160,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
        this.updateById(sysApp);
    }
    /**
     * 编辑系统应用
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:59
     */
    @Override
    public void edit(SysAppParam sysAppParam) {
        SysApp sysApp = this.querySysApp(sysAppParam);
@ -201,23 +171,11 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
        this.updateById(sysApp);
    }
    /**
     * 查看系统应用
     *
     * @author xuyuxiang
     * @date 2020/3/26 9:56
     */
    @Override
    public SysApp detail(SysAppParam sysAppParam) {
        return this.querySysApp(sysAppParam);
    }
    /**
     * 系统应用列表
     *
     * @author xuyuxiang
     * @date 2020/4/19 14:56
     */
    @Override
    public List<SysApp> list(SysAppParam sysAppParam) {
        LambdaQueryWrapper<SysApp> appQueryWrapper = new LambdaQueryWrapper<>();
@ -225,12 +183,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
        return this.list(appQueryWrapper);
    }
    /**
     * 设为默认应用
     *
     * @author xuyuxiang
     * @date 2020/6/29 16:50
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void setAsDefault(SysAppParam sysAppParam) {

+ 38 - 86
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/auth/service/impl/AuthServiceImpl.java

@ -73,12 +73,6 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
    @Resource
    private UserCache userCache;
    /**
     * 账号密码登录
     *
     * @author xuyuxiang
     * @date 2020/3/11 16:59
     */
    @Override
    public String login(String account, String password) {
@ -116,12 +110,6 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
        return this.doLogin(sysUser);
    }
    /**
     * 根据请求头获取token,存在可能为空的情况
     *
     * @author xuyuxiang
     * @date 2020/3/13 11:49
     */
    @Override
    public String getTokenFromRequest(HttpServletRequest request) {
        String authToken = request.getHeader(CommonConstant.AUTHORIZATION);
@ -142,12 +130,6 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
        return authToken;
    }
    /**
     * 根据token获取当前登录用户信息
     *
     * @author xuyuxiang
     * @date 2020/3/13 12:00
     */
    @Override
    public SysLoginUser getLoginUserByToken(String token) {
@ -175,33 +157,6 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
        return sysLoginUser;
    }
    /**
     * 校验token,错误则抛异常
     *
     * @author xuyuxiang
     * @date 2020/3/19 19:15
     */
    @Override
    public void checkToken(String token) {
        //校验token是否正确
        Boolean tokenCorrect = JwtTokenUtil.checkToken(token);
        if (!tokenCorrect) {
            throw new AuthException(AuthExceptionEnum.REQUEST_TOKEN_ERROR);
        }
        //校验token是否失效
        Boolean tokenExpired = JwtTokenUtil.isTokenExpired(token);
        if (tokenExpired) {
            throw new AuthException(AuthExceptionEnum.LOGIN_EXPIRED);
        }
    }
    /**
     * 退出登录
     *
     * @author xuyuxiang, fengshuonan
     * @date 2020/3/16 15:05
     */
    @Override
    public void logout() {
@ -232,6 +187,44 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
        }
    }
    @Override
    public void setSpringSecurityContextAuthentication(SysLoginUser sysLoginUser) {
        UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken =
                new UsernamePasswordAuthenticationToken(
                        sysLoginUser,
                        null,
                        sysLoginUser.getAuthorities());
        SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);
    }
    @Override
    public Authentication getAuthentication() {
        return SecurityContextHolder.getContext().getAuthentication();
    }
    @Override
    public void checkToken(String token) {
        //校验token是否正确
        Boolean tokenCorrect = JwtTokenUtil.checkToken(token);
        if (!tokenCorrect) {
            throw new AuthException(AuthExceptionEnum.REQUEST_TOKEN_ERROR);
        }
        //校验token是否失效
        Boolean tokenExpired = JwtTokenUtil.isTokenExpired(token);
        if (tokenExpired) {
            throw new AuthException(AuthExceptionEnum.LOGIN_EXPIRED);
        }
    }
    @Override
    public SysLoginUser loadUserByUsername(String account) throws UsernameNotFoundException {
        SysLoginUser sysLoginUser = new SysLoginUser();
        SysUser user = sysUserService.getUserByCount(account);
        BeanUtil.copyProperties(user, sysLoginUser);
        return sysLoginUser;
    }
    /**
     * 根据key清空登陆信息
     *
@ -315,33 +308,6 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
        return token;
    }
    /**
     * 设置SpringSecurityContext上下文,方便获取用户
     *
     * @author xuyuxiang
     * @date 2020/3/19 19:58
     */
    @Override
    public void setSpringSecurityContextAuthentication(SysLoginUser sysLoginUser) {
        UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken =
                new UsernamePasswordAuthenticationToken(
                        sysLoginUser,
                        null,
                        sysLoginUser.getAuthorities());
        SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);
    }
    /**
     * 获取SpringSecurityContext中认证信息
     *
     * @author xuyuxiang
     * @date 2020/3/19 20:04
     */
    @Override
    public Authentication getAuthentication() {
        return SecurityContextHolder.getContext().getAuthentication();
    }
    /**
     * 构造登录用户信息
     *
@ -365,18 +331,4 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
        String redisLoginUserKey = jwtPayLoad.getUuid();
        userCache.put(redisLoginUserKey, sysLoginUser);
    }
    /**
     * 根据用户名获取用户
     *
     * @author xuyuxiang
     * @date 2020/4/2 16:04
     */
    @Override
    public SysLoginUser loadUserByUsername(String account) throws UsernameNotFoundException {
        SysLoginUser sysLoginUser = new SysLoginUser();
        SysUser user = sysUserService.getUserByCount(account);
        BeanUtil.copyProperties(user, sysLoginUser);
        return sysLoginUser;
    }
}

+ 1 - 31
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/emp/service/impl/SysEmpExtOrgPosPosServiceImpl.java

@ -85,12 +85,6 @@ public class SysEmpExtOrgPosPosServiceImpl extends ServiceImpl<SysEmpExtOrgPosMa
     */
    private static final String EXT_POS_NAME_DICT_KEY = "posName";
    /**
     * 保存附属机构职位相关信息
     *
     * @author xuyuxiang
     * @date 2020/4/2 9:00
     */
    @Override
    public void addOrEdit(Long empId, List<Dict> extIdList) {
        LambdaQueryWrapper<SysEmpExtOrgPos> queryWrapper = new LambdaQueryWrapper<>();
@ -109,12 +103,6 @@ public class SysEmpExtOrgPosPosServiceImpl extends ServiceImpl<SysEmpExtOrgPosMa
        });
    }
    /**
     * 获取附属机构和职位信息
     *
     * @author xuyuxiang
     * @date 2020/4/2 20:07
     */
    @Override
    public List<Dict> getEmpExtOrgPosDictList(Long empId, boolean isFillId) {
        List<Dict> dictList = CollectionUtil.newArrayList();
@ -134,7 +122,7 @@ public class SysEmpExtOrgPosPosServiceImpl extends ServiceImpl<SysEmpExtOrgPosMa
            dict.put(EXT_POS_CODE_DICT_KEY, sysPos.getCode());
            dict.put(EXT_POS_NAME_DICT_KEY, sysPos.getName());
            if(isFillId) {
            if (isFillId) {
                dict.put(EXT_ORG_ID_DICT_KEY, orgId);
                dict.put(EXT_POS_ID_DICT_KEY, posId);
            }
@ -144,12 +132,6 @@ public class SysEmpExtOrgPosPosServiceImpl extends ServiceImpl<SysEmpExtOrgPosMa
        return dictList;
    }
    /**
     * 根据机构id判断该附属机构下是否有员工
     *
     * @author xuyuxiang
     * @date 2020/6/23 10:31
     */
    @Override
    public boolean hasExtOrgEmp(Long orgId) {
        LambdaQueryWrapper<SysEmpExtOrgPos> queryWrapper = new LambdaQueryWrapper<>();
@ -158,12 +140,6 @@ public class SysEmpExtOrgPosPosServiceImpl extends ServiceImpl<SysEmpExtOrgPosMa
        return list.size() != 0;
    }
    /**
     * 根据职位id判断该附属职位下是否有员工
     *
     * @author xuyuxiang
     * @date 2020/6/23 10:39
     */
    @Override
    public boolean hasExtPosEmp(Long posId) {
        LambdaQueryWrapper<SysEmpExtOrgPos> queryWrapper = new LambdaQueryWrapper<>();
@ -172,12 +148,6 @@ public class SysEmpExtOrgPosPosServiceImpl extends ServiceImpl<SysEmpExtOrgPosMa
        return list.size() != 0;
    }
    /**
     * 根据员工id删除对应的员工-附属信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:57
     */
    @Override
    public void deleteEmpExtInfoByUserId(Long empId) {
        LambdaQueryWrapper<SysEmpExtOrgPos> queryWrapper = new LambdaQueryWrapper<>();

+ 1 - 25
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/emp/service/impl/SysEmpPosServiceImpl.java

@ -66,12 +66,6 @@ public class SysEmpPosServiceImpl extends ServiceImpl<SysEmpPosMapper, SysEmpPos
     */
    private static final String POS_NAME_DICT_KEY = "posName";
    /**
     * 保存附属机构相关信息
     *
     * @author xuyuxiang
     * @date 2020/4/2 9:01
     */
    @Override
    public void addOrEdit(Long empId, List<Long> posIdList) {
        LambdaQueryWrapper<SysEmpPos> queryWrapper = new LambdaQueryWrapper<>();
@ -89,12 +83,6 @@ public class SysEmpPosServiceImpl extends ServiceImpl<SysEmpPosMapper, SysEmpPos
        });
    }
    /**
     * 获取所属职位信息
     *
     * @author xuyuxiang
     * @date 2020/4/2 20:07
     */
    @Override
    public List<Dict> getEmpPosDictList(Long empId, boolean isFillId) {
        List<Dict> dictList = CollectionUtil.newArrayList();
@ -106,7 +94,7 @@ public class SysEmpPosServiceImpl extends ServiceImpl<SysEmpPosMapper, SysEmpPos
            Dict dict = Dict.create();
            Long posId = sysEmpPos.getPosId();
            SysPos sysPos = sysPosService.getById(posId);
            if(isFillId) {
            if (isFillId) {
                dict.put(POS_ID_DICT_KEY, posId);
            }
            dict.put(POS_CODE_DICT_KEY, sysPos.getCode());
@ -116,12 +104,6 @@ public class SysEmpPosServiceImpl extends ServiceImpl<SysEmpPosMapper, SysEmpPos
        return dictList;
    }
    /**
     * 根据职位id判断该职位下是否有员工
     *
     * @author xuyuxiang
     * @date 2020/6/23 10:41
     */
    @Override
    public boolean hasPosEmp(Long posId) {
        LambdaQueryWrapper<SysEmpPos> queryWrapper = new LambdaQueryWrapper<>();
@ -130,12 +112,6 @@ public class SysEmpPosServiceImpl extends ServiceImpl<SysEmpPosMapper, SysEmpPos
        return list.size() != 0;
    }
    /**
     * 根据员工id删除对用的员工-职位信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:58
     */
    @Override
    public void deleteEmpPosInfoByUserId(Long empId) {
        LambdaQueryWrapper<SysEmpPos> queryWrapper = new LambdaQueryWrapper<>();

+ 3 - 40
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/emp/service/impl/SysEmpServiceImpl.java

@ -59,20 +59,13 @@ public class SysEmpServiceImpl extends ServiceImpl<SysEmpMapper, SysEmp> impleme
    @Resource
    private SysEmpPosService sysEmpPosService;
    /**
     * 获取登录用户员工相关信息
     *
     * @author xuyuxiang
     * @date 2020/3/13 16:27
     */
    @Override
    public LoginEmpInfo getLoginEmpInfo(Long empId) {
        LoginEmpInfo loginEmpInfo = new LoginEmpInfo();
        //获取员工信息
        SysEmp sysEmp = this.getById(empId);
        if(ObjectUtil.isNotNull(sysEmp)){
        if (ObjectUtil.isNotNull(sysEmp)) {
            BeanUtil.copyProperties(sysEmp, loginEmpInfo);
            //获取附属机构和职位信息
            List<Dict> empExtOrgPosDictList = sysEmpExtOrgPosService.getEmpExtOrgPosDictList(sysEmp.getId(), false);
@ -88,18 +81,12 @@ public class SysEmpServiceImpl extends ServiceImpl<SysEmpMapper, SysEmp> impleme
        return loginEmpInfo;
    }
    /**
     * 获取用户员工相关信息
     *
     * @author xuyuxiang
     * @date 2020/4/2 20:33
     */
    @Override
    public SysEmpInfo getSysEmpInfo(Long empId) {
        SysEmpInfo sysEmpInfo = new SysEmpInfo();
        //获取员工信息
        SysEmp sysEmp = this.getById(empId);
        if(ObjectUtil.isNotNull(sysEmp)){
        if (ObjectUtil.isNotNull(sysEmp)) {
            BeanUtil.copyProperties(sysEmp, sysEmpInfo);
            //获取附属机构和职位信息
            List<Dict> empExtOrgPosDictList = sysEmpExtOrgPosService.getEmpExtOrgPosDictList(sysEmp.getId(), true);
@ -115,18 +102,12 @@ public class SysEmpServiceImpl extends ServiceImpl<SysEmpMapper, SysEmp> impleme
        return sysEmpInfo;
    }
    /**
     * 编辑员工相关信息
     *
     * @author xuyuxiang
     * @date 2020/4/2 9:10
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void addOrUpdate(SysEmpParam sysEmpParam) {
        Long empId = sysEmpParam.getId();
        SysEmp sysEmp = this.getById(empId);
        if(ObjectUtil.isNull(sysEmp)) {
        if (ObjectUtil.isNull(sysEmp)) {
            sysEmp = new SysEmp();
        }
        BeanUtil.copyProperties(sysEmpParam, sysEmp);
@ -139,12 +120,6 @@ public class SysEmpServiceImpl extends ServiceImpl<SysEmpMapper, SysEmp> impleme
        sysEmpPosService.addOrEdit(empId, posIdList);
    }
    /**
     * 修改员工相关机构信息
     *
     * @author xuyuxiang
     * @date 2020/6/23 9:58
     */
    @Override
    public void updateEmpOrgInfo(Long orgId, String orgName) {
        LambdaQueryWrapper<SysEmp> queryWrapper = new LambdaQueryWrapper<>();
@ -155,12 +130,6 @@ public class SysEmpServiceImpl extends ServiceImpl<SysEmpMapper, SysEmp> impleme
        });
    }
    /**
     * 根据机构id判断该机构下是否有员工
     *
     * @author xuyuxiang
     * @date 2020/6/23 10:31
     */
    @Override
    public boolean hasOrgEmp(Long orgId) {
        LambdaQueryWrapper<SysEmp> queryWrapper = new LambdaQueryWrapper<>();
@ -169,12 +138,6 @@ public class SysEmpServiceImpl extends ServiceImpl<SysEmpMapper, SysEmp> impleme
        return list.size() != 0;
    }
    /**
     * 根据员工id删除对应的员工表信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:55
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void deleteEmpInfoByUserId(Long empId) {

+ 4 - 22
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/file/service/impl/SysFileInfoServiceImpl.java

@ -86,7 +86,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
        LambdaQueryWrapper<SysFileInfo> queryWrapper = new LambdaQueryWrapper<>();
        // 拼接查询条件-文件存储位置(1:阿里云,2:腾讯云,3:minio,4:本地)
        if(ObjectUtil.isNotNull(sysFileInfoParam)) {
        if (ObjectUtil.isNotNull(sysFileInfoParam)) {
            if (ObjectUtil.isNotEmpty(sysFileInfoParam.getFileLocation())) {
                queryWrapper.like(SysFileInfo::getFileLocation, sysFileInfoParam.getFileLocation());
            }
@ -160,7 +160,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
        // 获取文件后缀
        String fileSuffix = null;
        if(ObjectUtil.isNotEmpty(originalFilename)) {
        if (ObjectUtil.isNotEmpty(originalFilename)) {
            fileSuffix = StrUtil.subAfter(originalFilename, SymbolConstant.PERIOD, true);
        }
        // 生成文件的最终名称
@ -221,12 +221,6 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
        return sysFileInfoResult;
    }
    /**
     * 判断文件是否存在
     *
     * @author xuyuxiang
     * @date 2020/6/28 15:55
     */
    @Override
    public void assertFile(Long field) {
        SysFileInfo sysFileInfo = this.getById(field);
@ -235,12 +229,6 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
        }
    }
    /**
     * 文件预览
     *
     * @author xuyuxiang
     * @date 2020/7/7 11:23
     */
    @Override
    public void preview(SysFileInfoParam sysFileInfoParam, HttpServletResponse response) {
@ -252,7 +240,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
        //获取文件字节码
        fileBytes = sysFileInfoResult.getFileBytes();
        //如果是图片类型,则直接输出
        if(LibreOfficeUtil.isPic(fileSuffix)) {
        if (LibreOfficeUtil.isPic(fileSuffix)) {
            try {
                //设置contentType
                response.setContentType("image/jpeg");
@ -264,7 +252,7 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
                throw new ServiceException(SysFileInfoExceptionEnum.PREVIEW_ERROR_NOT_SUPPORT);
            }
        } else if(LibreOfficeUtil.isDoc(fileSuffix)){
        } else if (LibreOfficeUtil.isDoc(fileSuffix)) {
            try {
                //如果是文档类型,则使用libreoffice转换为pdf或html
                InputStream inputStream = IoUtil.toStream(fileBytes);
@ -298,12 +286,6 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
        }
    }
    /**
     * 文件下载
     *
     * @author xuyuxiang
     * @date 2020/7/7 12:09
     */
    @Override
    public void download(SysFileInfoParam sysFileInfoParam, HttpServletResponse response) {
        // 获取文件信息结果集

+ 4 - 16
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/log/service/impl/SysOpLogServiceImpl.java

@ -46,26 +46,20 @@ import org.springframework.stereotype.Service;
@Service
public class SysOpLogServiceImpl extends ServiceImpl<SysOpLogMapper, SysOpLog> implements SysOpLogService {
    /**
     * 查询系统操作日志
     *
     * @author xuyuxiang
     * @date 2020/3/30 10:32
     */
    @Override
    public PageResult<SysOpLog> page(SysOpLogParam sysOpLogParam) {
        LambdaQueryWrapper<SysOpLog> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysOpLogParam)) {
        if (ObjectUtil.isNotNull(sysOpLogParam)) {
            //根据名称模糊查询
            if(ObjectUtil.isNotEmpty(sysOpLogParam.getName())) {
            if (ObjectUtil.isNotEmpty(sysOpLogParam.getName())) {
                queryWrapper.like(SysOpLog::getName, sysOpLogParam.getName());
            }
            //根据操作类型查询
            if(ObjectUtil.isNotEmpty(sysOpLogParam.getOpType())) {
            if (ObjectUtil.isNotEmpty(sysOpLogParam.getOpType())) {
                queryWrapper.eq(SysOpLog::getOpType, sysOpLogParam.getOpType());
            }
            //根据是否成功查询
            if(ObjectUtil.isNotEmpty(sysOpLogParam.getSuccess())) {
            if (ObjectUtil.isNotEmpty(sysOpLogParam.getSuccess())) {
                queryWrapper.eq(SysOpLog::getSuccess, sysOpLogParam.getSuccess());
            }
        }
@ -73,12 +67,6 @@ public class SysOpLogServiceImpl extends ServiceImpl<SysOpLogMapper, SysOpLog> i
        return new PageResult<>(page);
    }
    /**
     * 清空系统操作日志
     *
     * @author xuyuxiang
     * @date 2020/6/1 11:06
     */
    @Override
    public void delete() {
        this.remove(new QueryWrapper<>());

+ 4 - 16
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/log/service/impl/SysVisLogServiceImpl.java

@ -45,38 +45,26 @@ import org.springframework.stereotype.Service;
@Service
public class SysVisLogServiceImpl extends ServiceImpl<SysVisLogMapper, SysVisLog> implements SysVisLogService {
    /**
     * 查询系统访问日志
     *
     * @author xuyuxiang
     * @date 2020/3/24 20:55
     */
    @Override
    public PageResult<SysVisLog> page(SysVisLogParam sysVisLogParam) {
        LambdaQueryWrapper<SysVisLog> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysVisLogParam)) {
        if (ObjectUtil.isNotNull(sysVisLogParam)) {
            //根据名称模糊查询
            if(ObjectUtil.isNotEmpty(sysVisLogParam.getName())) {
            if (ObjectUtil.isNotEmpty(sysVisLogParam.getName())) {
                queryWrapper.like(SysVisLog::getName, sysVisLogParam.getName());
            }
            //跟据访问类型(字典 1登入 2登出)查询
            if(ObjectUtil.isNotEmpty(sysVisLogParam.getVisType())) {
            if (ObjectUtil.isNotEmpty(sysVisLogParam.getVisType())) {
                queryWrapper.eq(SysVisLog::getVisType, sysVisLogParam.getVisType());
            }
            //根据是否成功查询
            if(ObjectUtil.isNotEmpty(sysVisLogParam.getSuccess())) {
            if (ObjectUtil.isNotEmpty(sysVisLogParam.getSuccess())) {
                queryWrapper.eq(SysVisLog::getSuccess, sysVisLogParam.getSuccess());
            }
        }
        return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
    }
    /**
     * 清空系统访问日志
     *
     * @author xuyuxiang
     * @date 2020/6/1 11:06
     */
    @Override
    public void delete() {
        this.remove(new QueryWrapper<>());

+ 18 - 67
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/menu/service/impl/SysMenuServiceImpl.java

@ -99,12 +99,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
        return CollectionUtil.newArrayList(permissions);
    }
    /**
     * 根据应用分类编码获取当前用户AntDesign菜单相关信息,前端使用
     *
     * @author yubaoshan
     * @date 2020/4/17 17:51
     */
    @Override
    public List<LoginMenuTreeNode> getLoginMenusAntDesign(Long userId, String appCode) {
        List<SysMenu> sysMenuList;
@ -186,12 +180,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
        return antDesignMenuTreeNodeList;
    }
    /**
     * 获取用户菜单所属的应用编码集合
     *
     * @author xuyuxiang
     * @date 2020/3/21 11:01
     */
    @Override
    public List<String> getUserMenuAppCodeList(Long userId) {
        Set<String> appCodeSet = CollectionUtil.newHashSet();
@ -212,12 +200,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
        return CollectionUtil.newArrayList(appCodeSet);
    }
    /**
     * 系统菜单列表(树表)
     *
     * @author xuyuxiang
     * @date 2020/3/26 20:45
     */
    @Override
    public List<SysMenu> list(SysMenuParam sysMenuParam) {
        LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
@ -237,12 +219,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
        return new TreeBuildFactory<SysMenu>().doTreeBuild(sysMenuList);
    }
    /**
     * 添加系统菜单
     *
     * @author xuyuxiang
     * @date 2020/3/27 9:10
     */
    @Override
    public void add(SysMenuParam sysMenuParam) {
        //校验参数
@ -254,12 +230,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
        this.save(sysMenu);
    }
    /**
     * 删除系统菜单
     *
     * @author xuyuxiang
     * @date 2020/3/27 9:11
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void delete(SysMenuParam sysMenuParam) {
@ -275,61 +245,54 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
        sysRoleMenuService.deleteRoleMenuListByMenuIdList(childIdList);
    }
    /**
     * 编辑系统菜单
     *
     * @author xuyuxiang
     * @date 2020/3/27 9:11
     */
    @Override
    public void edit(SysMenuParam sysMenuParam) {
        SysMenu sysMenu = this.querySysMenu(sysMenuParam);
        //校验参数
        checkParam(sysMenuParam, true);
        //如果应用有变化
        if (!sysMenuParam.getApplication().equals(sysMenu.getApplication())) {
            //如果该菜单不为叶子节点,则将其子节点的数据全部修改为该应用
            // 查找所有叶子节点,包含子节点的子节点
            LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.like(SysMenu::getPids, sysMenu.getId());
            List<SysMenu> list = this.list(queryWrapper);
            if(ObjectUtil.isNotEmpty(list)) {
                list.forEach(child -> child.setApplication(sysMenu.getApplication()));
            // 更新所有子节点的应用为当前菜单的应用
            if (ObjectUtil.isNotEmpty(list)) {
                list.forEach(child -> child.setApplication(sysMenuParam.getApplication()));
                this.updateBatchById(list);
            } else {
                //否则查询父节点
            }
            // 如果没有子几点,查询父节点
            else {
                Long pid = sysMenu.getPid();
                // 如果父节点不是根节点
                if (!pid.equals(0L)) {
                    SysMenu pSysMenu = this.getById(pid);
                    //如果父节点不属于该应用,则无法修改其为该应用
                    // 如果父节点不属于该应用,则无法修改其为该应用
                    if (!pSysMenu.getApplication().equals(sysMenu.getApplication())) {
                        throw new ServiceException(SysMenuExceptionEnum.MENU_PARENT_APPLICATION_ERROR);
                    }
                }
            }
        }
        BeanUtil.copyProperties(sysMenuParam, sysMenu);
        this.fillPids(sysMenu);
        this.updateById(sysMenu);
    }
    /**
     * 查看系统菜单
     *
     * @author xuyuxiang
     * @date 2020/3/26 9:56
     */
    @Override
    public SysMenu detail(SysMenuParam sysMenuParam) {
        return this.querySysMenu(sysMenuParam);
    }
    /**
     * 获取系统菜单树,用于新增编辑时获取上级菜单
     *
     * @author xuyuxiang
     * @date 2020/3/27 15:57
     */
    @Override
    public List<MenuTreeNode> tree(SysMenuParam sysMenuParam) {
        List<MenuTreeNode> menuTreeNodeList = CollectionUtil.newArrayList();
@ -356,12 +319,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
        return new TreeBuildFactory<MenuTreeNode>().doTreeBuild(menuTreeNodeList);
    }
    /**
     * 获取系统菜单树,用于给角色授权时选择
     *
     * @author xuyuxiang
     * @date 2020/4/5 15:01
     */
    @Override
    public List<MenuTreeNode> treeForGrant(SysMenuParam sysMenuParam) {
        List<MenuTreeNode> menuTreeNodeList = CollectionUtil.newArrayList();
@ -406,12 +363,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
        return new TreeBuildFactory<MenuTreeNode>().doTreeBuild(menuTreeNodeList);
    }
    /**
     * 根据应用编码判断该机构下是否有状态为正常的菜单
     *
     * @author xuyuxiang
     * @date 2020/6/28 12:17
     */
    @Override
    public boolean hasMenu(String appCode) {
        LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();

+ 1 - 7
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/monitor/service/impl/SysMachineServiceImpl.java

@ -43,13 +43,7 @@ import java.text.DecimalFormat;
 */
@Service
public class SysMachineServiceImpl implements SysMachineService {
    
    /**
     * 系统属性监控
     *
     * @author xuyuxiang
     * @date 2020/6/5 14:46
     */
    @Override
    public SysMachineResult query() {
        JvmInfo jvmInfo = SystemUtil.getJvmInfo();

+ 0 - 12
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/monitor/service/impl/SysOnlineUserServiceImpl.java

@ -54,12 +54,6 @@ public class SysOnlineUserServiceImpl implements SysOnlineUserService {
    @Resource
    private UserCache userCache;
    /**
     * 系统在线用户列表
     *
     * @author xuyuxiang
     * @date 2020/4/7 17:10
     */
    @Override
    public List<SysOnlineUserResult> list(SysOnlineUserParam sysOnlineUserParam) {
        List<SysOnlineUserResult> resultList = CollectionUtil.newArrayList();
@ -75,12 +69,6 @@ public class SysOnlineUserServiceImpl implements SysOnlineUserService {
        return resultList;
    }
    /**
     * 系统在线用户强退
     *
     * @author xuyuxiang
     * @date 2020/4/7 20:21
     */
    @Override
    public void forceExist(SysOnlineUserParam sysOnlineUserParam) {
        Boolean demoEnvFlag = ConstantContextHolder.getDemoEnvFlag();

+ 50 - 91
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/notice/service/impl/SysNoticeServiceImpl.java

@ -70,23 +70,17 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
    @Resource
    private SysUserService sysUserService;
    /**
     * 查询系统通知公告
     *
     * @author xuyuxiang
     * @date 2020/6/28 17:23
     */
    @Override
    public PageResult<SysNotice> page(SysNoticeParam sysNoticeParam) {
        LambdaQueryWrapper<SysNotice> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysNoticeParam)) {
        if (ObjectUtil.isNotNull(sysNoticeParam)) {
            //根据标题或内容模糊查询
            if(ObjectUtil.isNotEmpty(sysNoticeParam.getSearchValue())) {
            if (ObjectUtil.isNotEmpty(sysNoticeParam.getSearchValue())) {
                queryWrapper.like(SysNotice::getTitle, sysNoticeParam.getSearchValue())
                        .or().like(SysNotice::getContent, sysNoticeParam.getSearchValue());
            }
            //根据类型查询
            if(ObjectUtil.isNotEmpty(sysNoticeParam.getType())) {
            if (ObjectUtil.isNotEmpty(sysNoticeParam.getType())) {
                queryWrapper.eq(SysNotice::getType, sysNoticeParam.getType());
            }
        }
@ -95,12 +89,6 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
        return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
    }
    /**
     * 添加系统通知公告
     *
     * @author xuyuxiang
     * @date 2020/6/28 17:23
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void add(SysNoticeParam sysNoticeParam) {
@ -114,7 +102,7 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
        sysNotice.setPublicOrgId(sysLoginUser.getLoginEmpInfo().getOrgId());
        sysNotice.setPublicOrgName(sysLoginUser.getLoginEmpInfo().getOrgName());
        //如果是发布,则设置发布时间
        if(NoticeStatusEnum.PUBLIC.getCode().equals(sysNotice.getStatus())) {
        if (NoticeStatusEnum.PUBLIC.getCode().equals(sysNotice.getStatus())) {
            sysNotice.setPublicTime(new Date());
        }
        this.save(sysNotice);
@ -124,29 +112,17 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
        sysNoticeUserService.add(sysNotice.getId(), noticeUserIdList, noticeUserStatus);
    }
    /**
     * 删除系统通知公告
     *
     * @author xuyuxiang
     * @date 2020/6/28 17:23
     */
    @Override
    public void delete(SysNoticeParam sysNoticeParam) {
        SysNotice sysNotice = this.querySysNotice(sysNoticeParam);
        Integer status = sysNotice.getStatus();
        if(!NoticeStatusEnum.DRAFT.getCode().equals(status) && !NoticeStatusEnum.CANCEL.getCode().equals(status)) {
        if (!NoticeStatusEnum.DRAFT.getCode().equals(status) && !NoticeStatusEnum.CANCEL.getCode().equals(status)) {
            throw new ServiceException(SysNoticeExceptionEnum.NOTICE_CANNOT_DELETE);
        }
        sysNotice.setStatus(NoticeStatusEnum.DELETED.getCode());
        this.updateById(sysNotice);
    }
    /**
     * 编辑系统通知公告
     *
     * @author xuyuxiang
     * @date 2020/6/28 17:23
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void edit(SysNoticeParam sysNoticeParam) {
@ -155,12 +131,12 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
        checkParam(sysNoticeParam, true);
        //非草稿状态
        Integer status = sysNotice.getStatus();
        if(!NoticeStatusEnum.DRAFT.getCode().equals(status)) {
        if (!NoticeStatusEnum.DRAFT.getCode().equals(status)) {
            throw new ServiceException(SysNoticeExceptionEnum.NOTICE_CANNOT_EDIT);
        }
        BeanUtil.copyProperties(sysNoticeParam, sysNotice);
        //如果是发布,则设置发布时间
        if(NoticeStatusEnum.PUBLIC.getCode().equals(sysNotice.getStatus())) {
        if (NoticeStatusEnum.PUBLIC.getCode().equals(sysNotice.getStatus())) {
            sysNotice.setPublicTime(new Date());
        }
        this.updateById(sysNotice);
@ -170,12 +146,6 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
        sysNoticeUserService.edit(sysNotice.getId(), noticeUserIdList, noticeUserStatus);
    }
    /**
     * 查看系统通知公告
     *
     * @author xuyuxiang
     * @date 2020/6/28 17:23
     */
    @Override
    public SysNoticeDetailResult detail(SysNoticeParam sysNoticeParam) {
        SysNotice sysNotice = this.querySysNotice(sysNoticeParam);
@ -186,7 +156,7 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
        List<Dict> noticeUserReadInfoList = CollectionUtil.newArrayList();
        SysNoticeDetailResult sysNoticeResult = new SysNoticeDetailResult();
        BeanUtil.copyProperties(sysNotice, sysNoticeResult);
        if(ObjectUtil.isNotEmpty(sysNoticeUserList)) {
        if (ObjectUtil.isNotEmpty(sysNoticeUserList)) {
            sysNoticeUserList.forEach(sysNoticeUser -> {
                //遍历通知到的用户,并构造
                noticeUserIdList.add(sysNoticeUser.getUserId());
@ -201,13 +171,50 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
        sysNoticeResult.setNoticeUserIdList(noticeUserIdList);
        sysNoticeResult.setNoticeUserReadInfoList(noticeUserReadInfoList);
        //如果该条通知公告为已发布,则将当前用户的该条通知公告设置为已读
        if(sysNotice.getStatus().equals(NoticeStatusEnum.PUBLIC.getCode())) {
        if (sysNotice.getStatus().equals(NoticeStatusEnum.PUBLIC.getCode())) {
            sysNoticeUserService.read(sysNotice.getId(),
                    LoginContextHolder.me().getSysLoginUserId(), NoticeUserStatusEnum.READ.getCode());
        }
        return sysNoticeResult;
    }
    @Override
    public void changeStatus(SysNoticeParam sysNoticeParam) {
        SysNotice sysNotice = this.querySysNotice(sysNoticeParam);
        //校验参数,检查状态是否正确
        checkParam(sysNoticeParam, false);
        sysNotice.setStatus(sysNoticeParam.getStatus());
        //如果是撤回,则设置撤回时间
        if (NoticeStatusEnum.CANCEL.getCode().equals(sysNotice.getStatus())) {
            sysNotice.setCancelTime(new Date());
        } else if (NoticeStatusEnum.PUBLIC.getCode().equals(sysNotice.getStatus())) {
            //如果是发布,则设置发布时间
            sysNotice.setPublicTime(new Date());
        }
        this.updateById(sysNotice);
    }
    @Override
    public PageResult<SysNoticeReceiveResult> received(SysNoticeParam sysNoticeParam) {
        QueryWrapper<SysNoticeReceiveResult> queryWrapper = new QueryWrapper<>();
        //查询当前用户的
        queryWrapper.eq("sys_notice_user.user_id", LoginContextHolder.me().getSysLoginUserId());
        if (ObjectUtil.isNotNull(sysNoticeParam)) {
            //根据标题或内容模糊查询
            if (ObjectUtil.isNotEmpty(sysNoticeParam.getSearchValue())) {
                queryWrapper.like("sys_notice.title", sysNoticeParam.getSearchValue())
                        .or().like("sys_notice.content", sysNoticeParam.getSearchValue());
            }
            //根据类型查询
            if (ObjectUtil.isNotEmpty(sysNoticeParam.getType())) {
                queryWrapper.eq("sys_notice.type", sysNoticeParam.getType());
            }
        }
        //查询未删除的
        queryWrapper.ne("sys_notice.status", NoticeStatusEnum.DELETED.getCode());
        return new PageResult<>(this.baseMapper.page(PageFactory.defaultPage(), queryWrapper));
    }
    /**
     * 校验参数,判断状态是否正确
     *
@ -217,14 +224,14 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
    private void checkParam(SysNoticeParam sysNoticeParam, boolean isAddOrEdit) {
        //保存或编辑时,传递的状态参数应为草稿,或发布
        Integer status = sysNoticeParam.getStatus();
        if(isAddOrEdit) {
            if(!NoticeStatusEnum.DRAFT.getCode().equals(status) &&
        if (isAddOrEdit) {
            if (!NoticeStatusEnum.DRAFT.getCode().equals(status) &&
                    !NoticeStatusEnum.PUBLIC.getCode().equals(status)) {
                throw new ServiceException(SysNoticeExceptionEnum.NOTICE_STATUS_ERROR);
            }
        } else {
            //修改状态时,传递的状态参数应为撤回或删除或发布
            if(!NoticeStatusEnum.CANCEL.getCode().equals(status) &&
            if (!NoticeStatusEnum.CANCEL.getCode().equals(status) &&
                    !NoticeStatusEnum.DELETED.getCode().equals(status) &&
                    !NoticeStatusEnum.PUBLIC.getCode().equals(status)) {
                throw new ServiceException(SysNoticeExceptionEnum.NOTICE_STATUS_ERROR);
@ -241,58 +248,10 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
     */
    private SysNotice querySysNotice(SysNoticeParam sysNoticeParam) {
        SysNotice sysNotice = this.getById(sysNoticeParam.getId());
        if(ObjectUtil.isNull(sysNotice)) {
        if (ObjectUtil.isNull(sysNotice)) {
            throw new ServiceException(SysNoticeExceptionEnum.NOTICE_NOT_EXIST);
        }
        return sysNotice;
    }
    /**
     * 修改状态
     *
     * @author xuyuxiang
     * @date 2020/6/29 9:45
     */
    @Override
    public void changeStatus(SysNoticeParam sysNoticeParam) {
        SysNotice sysNotice = this.querySysNotice(sysNoticeParam);
        //校验参数,检查状态是否正确
        checkParam(sysNoticeParam, false);
        sysNotice.setStatus(sysNoticeParam.getStatus());
        //如果是撤回,则设置撤回时间
        if(NoticeStatusEnum.CANCEL.getCode().equals(sysNotice.getStatus())) {
            sysNotice.setCancelTime(new Date());
        } else if(NoticeStatusEnum.PUBLIC.getCode().equals(sysNotice.getStatus())) {
            //如果是发布,则设置发布时间
            sysNotice.setPublicTime(new Date());
        }
        this.updateById(sysNotice);
    }
    /**
     * 查询当前登陆用户已收公告
     *
     * @author xuyuxiang
     * @date 2020/6/29 12:13
     */
    @Override
    public PageResult<SysNoticeReceiveResult> received(SysNoticeParam sysNoticeParam) {
        QueryWrapper<SysNoticeReceiveResult> queryWrapper = new QueryWrapper<>();
        //查询当前用户的
        queryWrapper.eq("sys_notice_user.user_id", LoginContextHolder.me().getSysLoginUserId());
        if(ObjectUtil.isNotNull(sysNoticeParam)) {
            //根据标题或内容模糊查询
            if(ObjectUtil.isNotEmpty(sysNoticeParam.getSearchValue())) {
                queryWrapper.like("sys_notice.title", sysNoticeParam.getSearchValue())
                        .or().like("sys_notice.content", sysNoticeParam.getSearchValue());
            }
            //根据类型查询
            if(ObjectUtil.isNotEmpty(sysNoticeParam.getType())) {
                queryWrapper.eq("sys_notice.type", sysNoticeParam.getType());
            }
        }
        //查询未删除的
        queryWrapper.ne("sys_notice.status", NoticeStatusEnum.DELETED.getCode());
        return new PageResult<>(this.baseMapper.page(PageFactory.defaultPage(), queryWrapper));
    }
}

+ 1 - 25
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/notice/service/impl/SysNoticeUserServiceImpl.java

@ -45,12 +45,6 @@ import java.util.List;
@Service
public class SysNoticeUserServiceImpl extends ServiceImpl<SysNoticeUserMapper, SysNoticeUser> implements SysNoticeUserService {
    /**
     * 添加
     *
     * @author xuyuxiang
     * @date 2020/6/29 11:06
     */
    @Override
    public void add(Long noticeId, List<Long> noticeUserIdList, Integer noticeUserStatus) {
        noticeUserIdList.forEach(userId -> {
@ -62,12 +56,6 @@ public class SysNoticeUserServiceImpl extends ServiceImpl<SysNoticeUserMapper, S
        });
    }
    /**
     * 编辑
     *
     * @author xuyuxiang
     * @date 2020/6/29 11:40
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void edit(Long noticeId, List<Long> noticeUserIdList, Integer noticeUserStatus) {
@ -79,12 +67,6 @@ public class SysNoticeUserServiceImpl extends ServiceImpl<SysNoticeUserMapper, S
        this.add(noticeId, noticeUserIdList, noticeUserStatus);
    }
    /**
     * 根据通知公告id查询通知人员信息集合
     *
     * @author xuyuxiang
     * @date 2020/6/29 11:50
     */
    @Override
    public List<SysNoticeUser> getSysNoticeUserListByNoticeId(Long noticeId) {
        LambdaQueryWrapper<SysNoticeUser> queryWrapper = new LambdaQueryWrapper<>();
@ -92,19 +74,13 @@ public class SysNoticeUserServiceImpl extends ServiceImpl<SysNoticeUserMapper, S
        return this.list(queryWrapper);
    }
    /**
     * 设为已读
     *
     * @author xuyuxiang
     * @date 2020/6/29 12:06
     */
    @Override
    public void read(Long noticeId, Long userId, Integer status) {
        LambdaQueryWrapper<SysNoticeUser> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SysNoticeUser::getNoticeId, noticeId)
                .eq(SysNoticeUser::getUserId, userId);
        SysNoticeUser sysNoticeUser = this.getOne(queryWrapper);
        if(ObjectUtil.isNotNull(sysNoticeUser)) {
        if (ObjectUtil.isNotNull(sysNoticeUser)) {
            sysNoticeUser.setStatus(status);
            sysNoticeUser.setReadTime(new Date());
            this.updateById(sysNoticeUser);

+ 2 - 1
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/org/service/SysOrgService.java

@ -29,6 +29,7 @@ import cn.stylefeng.guns.core.pojo.page.PageResult;
import cn.stylefeng.guns.sys.modular.org.entity.SysOrg;
import cn.stylefeng.guns.sys.modular.org.param.SysOrgParam;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
@ -110,7 +111,7 @@ public interface SysOrgService extends IService<SysOrg> {
     * 根据数据范围类型获取当前登录用户的数据范围id集合
     *
     * @param dataScopeType 数据范围类型(1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据)
     * @param orgId 组织机构id
     * @param orgId         组织机构id
     * @return 数据范围id集合
     * @author xuyuxiang
     * @date 2020/4/5 18:29

+ 16 - 67
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/org/service/impl/SysOrgServiceImpl.java

@ -81,12 +81,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
    @Resource
    private SysUserDataScopeService sysUserDataScopeService;
    /**
     * 查询系统机构
     *
     * @author yubaoshan,fengshuonan
     * @date 2020/5/11 15:49
     */
    @Override
    public PageResult<SysOrg> page(SysOrgParam sysOrgParam) {
        LambdaQueryWrapper<SysOrg> queryWrapper = new LambdaQueryWrapper<>();
@ -135,12 +129,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
        return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
    }
    /**
     * 系统组织机构列表
     *
     * @author xuyuxiang
     * @date 2020/3/26 10:20
     */
    @Override
    public List<SysOrg> list(SysOrgParam sysOrgParam) {
        LambdaQueryWrapper<SysOrg> queryWrapper = new LambdaQueryWrapper<>();
@ -170,12 +158,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
        return this.list(queryWrapper);
    }
    /**
     * 添加系统组织机构
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:54
     */
    @Override
    public void add(SysOrgParam sysOrgParam) {
        //校验参数,检查是否存在相同的名称和编码
@ -186,12 +168,12 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
        //如果登录用户不是超级管理员
        if (!superAdmin) {
            //如果新增的机构父id不是0,则进行数据权限校验
            if(!pid.equals(0L)) {
            if (!pid.equals(0L)) {
                List<Long> dataScope = sysOrgParam.getDataScope();
                //数据范围为空
                if (ObjectUtil.isEmpty(dataScope)) {
                    throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
                } else if(!dataScope.contains(pid)) {
                } else if (!dataScope.contains(pid)) {
                    //所添加的组织机构的父机构不在自己的数据范围内
                    throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
                }
@ -208,12 +190,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
        this.save(sysOrg);
    }
    /**
     * 删除系统组织机构
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:59
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void delete(SysOrgParam sysOrgParam) {
@ -225,7 +201,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
            //数据范围为空
            if (ObjectUtil.isEmpty(dataScope)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            } else if(!dataScope.contains(id)) {
            } else if (!dataScope.contains(id)) {
                //所操作的数据不在自己的数据范围内
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
@ -258,12 +234,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
    }
    /**
     * 编辑系统组织机构
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:59
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void edit(SysOrgParam sysOrgParam) {
@ -275,7 +245,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
            //数据范围为空
            if (ObjectUtil.isEmpty(dataScope)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            } else if(!dataScope.contains(id)) {
            } else if (!dataScope.contains(id)) {
                //所操作的数据不在自己的数据范围内
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
@ -293,23 +263,11 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
        this.updateById(sysOrg);
    }
    /**
     * 查看系统组织机构
     *
     * @author xuyuxiang
     * @date 2020/3/26 9:56
     */
    @Override
    public SysOrg detail(SysOrgParam sysOrgParam) {
        return this.querySysOrg(sysOrgParam);
    }
    /**
     * 获取组织机构树
     *
     * @author xuyuxiang
     * @date 2020/3/26 14:12
     */
    @Override
    public List<AntdTreeNode> tree(SysOrgParam sysOrgParam) {
        List<AntdTreeNode> treeNodeList = CollectionUtil.newArrayList();
@ -348,13 +306,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
        return new TreeBuildFactory<AntdTreeNode>().doTreeBuild(treeNodeList);
    }
    /**
     * 根据数据范围类型获取当前登录用户的数据范围id集合
     * 1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据
     *
     * @author xuyuxiang
     * @date 2020/4/5 18:30
     */
    @Override
    public List<Long> getDataScopeListByDataScopeType(Integer dataScopeType, Long orgId) {
        List<Long> resultList = CollectionUtil.newArrayList();
@ -363,21 +314,19 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
            return CollectionUtil.newArrayList();
        }
        //本部门id集合,即自己
        List<Long> thisOrgIdList = CollectionUtil.newArrayList();
        thisOrgIdList.add(orgId);
        //本部门及子节点id集合,包含自己
        List<Long> thisOrgWithChildIdList = this.getChildIdListWithSelfById(orgId);
        //1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据
        // 如果是范围类型是全部数据,则获取当前系统所有的组织架构id
        if (DataScopeTypeEnum.ALL.getCode().equals(dataScopeType)) {
            resultList = this.getOrgIdAll();
        } else if (DataScopeTypeEnum.DEPT_WITH_CHILD.getCode().equals(dataScopeType)) {
            resultList = thisOrgWithChildIdList;
        } else if (DataScopeTypeEnum.DEPT.getCode().equals(dataScopeType)) {
            resultList = thisOrgIdList;
        }
        // 如果范围类型是本部门及以下部门,则查询本节点和子节点集合,包含本节点
        else if (DataScopeTypeEnum.DEPT_WITH_CHILD.getCode().equals(dataScopeType)) {
            resultList = this.getChildIdListWithSelfById(orgId);
        }
        // 如果数据范围是本部门,不含子节点,则直接返回本部门
        else if (DataScopeTypeEnum.DEPT.getCode().equals(dataScopeType)) {
            resultList.add(orgId);
        }
        return resultList;
    }
@ -410,9 +359,9 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
        String code = sysOrgParam.getCode();
        Long pid = sysOrgParam.getPid();
        //如果父id不是根节点
        if(!pid.equals(0L)) {
        if (!pid.equals(0L)) {
            SysOrg pOrg = this.getById(pid);
            if(ObjectUtil.isNull(pOrg)) {
            if (ObjectUtil.isNull(pOrg)) {
                //父机构不存在
                throw new ServiceException(SysOrgExceptionEnum.ORG_NOT_EXIST);
            }

+ 9 - 45
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/pos/service/impl/SysPosServiceImpl.java

@ -60,22 +60,16 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
    @Resource
    private SysEmpExtOrgPosService sysEmpExtOrgPosService;
    /**
     * 查询系统职位
     *
     * @author xuyuxiang
     * @date 2020/3/26 10:20
     */
    @Override
    public PageResult<SysPos> page(SysPosParam sysPosParam) {
        LambdaQueryWrapper<SysPos> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysPosParam)) {
        if (ObjectUtil.isNotNull(sysPosParam)) {
            //根据职位名称模糊查询
            if(ObjectUtil.isNotEmpty(sysPosParam.getName())) {
            if (ObjectUtil.isNotEmpty(sysPosParam.getName())) {
                queryWrapper.like(SysPos::getName, sysPosParam.getName());
            }
            //根据职位编码模糊查询
            if(ObjectUtil.isNotEmpty(sysPosParam.getCode())) {
            if (ObjectUtil.isNotEmpty(sysPosParam.getCode())) {
                queryWrapper.like(SysPos::getCode, sysPosParam.getCode());
            }
        }
@ -83,18 +77,12 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
        return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
    }
    /**
     * 系统职位列表
     *
     * @author yubaoshan
     * @date 2020/6/21 23:44
     */
    @Override
    public List<SysPos> list(SysPosParam sysPosParam) {
        LambdaQueryWrapper<SysPos> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysPosParam)) {
        if (ObjectUtil.isNotNull(sysPosParam)) {
            //根据职位编码模糊查询
            if(ObjectUtil.isNotEmpty(sysPosParam.getCode())) {
            if (ObjectUtil.isNotEmpty(sysPosParam.getCode())) {
                queryWrapper.eq(SysPos::getCode, sysPosParam.getCode());
            }
        }
@ -102,12 +90,6 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
        return this.list(queryWrapper);
    }
    /**
     * 添加系统职位
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:54
     */
    @Override
    public void add(SysPosParam sysPosParam) {
        //校验参数,检查是否存在相同的名称和编码
@ -118,12 +100,6 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
        this.save(sysPos);
    }
    /**
     * 删除系统职位
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:59
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void delete(SysPosParam sysPosParam) {
@ -132,25 +108,19 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
        //该职位下是否有员工
        boolean hasPosEmp = sysEmpPosService.hasPosEmp(id);
        //只要还有,则不能删
        if(hasPosEmp) {
        if (hasPosEmp) {
            throw new ServiceException(SysPosExceptionEnum.POS_CANNOT_DELETE);
        }
        //该附属职位下是否有员工
        boolean hasExtPosEmp = sysEmpExtOrgPosService.hasExtPosEmp(id);
        //只要还有,则不能删
        if(hasExtPosEmp) {
        if (hasExtPosEmp) {
            throw new ServiceException(SysPosExceptionEnum.POS_CANNOT_DELETE);
        }
        sysPos.setStatus(CommonStatusEnum.DELETED.getCode());
        this.updateById(sysPos);
    }
    /**
     * 编辑系统职位
     *
     * @author xuyuxiang
     * @date 2020/3/25 14:59
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void edit(SysPosParam sysPosParam) {
@ -163,12 +133,6 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
        this.updateById(sysPos);
    }
    /**
     * 查看系统职位
     *
     * @author xuyuxiang
     * @date 2020/3/26 9:56
     */
    @Override
    public SysPos detail(SysPosParam sysPosParam) {
        return this.querySysPos(sysPosParam);
@ -193,7 +157,7 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
        queryWrapperByCode.eq(SysPos::getCode, code)
                .ne(SysPos::getStatus, CommonStatusEnum.DELETED.getCode());
        if(isExcludeSelf) {
        if (isExcludeSelf) {
            queryWrapperByName.ne(SysPos::getId, id);
            queryWrapperByCode.ne(SysPos::getId, id);
        }
@ -217,7 +181,7 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
     */
    private SysPos querySysPos(SysPosParam sysPosParam) {
        SysPos sysPos = this.getById(sysPosParam.getId());
        if(ObjectUtil.isNull(sysPos)) {
        if (ObjectUtil.isNull(sysPos)) {
            throw new ServiceException(SysPosExceptionEnum.POS_NOT_EXIST);
        }
        return sysPos;

+ 2 - 26
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/role/service/impl/SysRoleDataScopeServiceImpl.java

@ -43,14 +43,8 @@ import java.util.List;
 * @date 2020/3/13 15:55
 */
@Service
public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMapper, SysRoleDataScope>implements SysRoleDataScopeService {
public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMapper, SysRoleDataScope> implements SysRoleDataScopeService {
    /**
     * 授权数据
     *
     * @author xuyuxiang
     * @date 2020/3/28 16:49
     */
    @Override
    public void grantDataScope(SysRoleParam sysRoleParam) {
        Long roleId = sysRoleParam.getId();
@ -67,16 +61,10 @@ public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMap
        });
    }
    /**
     * 根据角色id获取角色数据范围集合
     *
     * @author xuyuxiang
     * @date 2020/4/5 18:24
     */
    @Override
    public List<Long> getRoleDataScopeIdList(List<Long> roleIdList) {
        List<Long> resultList = CollectionUtil.newArrayList();
        if(ObjectUtil.isNotEmpty(roleIdList)) {
        if (ObjectUtil.isNotEmpty(roleIdList)) {
            LambdaQueryWrapper<SysRoleDataScope> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.in(SysRoleDataScope::getRoleId, roleIdList);
            this.list(queryWrapper).forEach(sysRoleDataScope -> resultList.add(sysRoleDataScope.getOrgId()));
@ -84,12 +72,6 @@ public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMap
        return resultList;
    }
    /**
     * 根据机构id集合删除对应的角色-数据范围关联信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:15
     */
    @Override
    public void deleteRoleDataScopeListByOrgIdList(List<Long> orgIdList) {
        LambdaQueryWrapper<SysRoleDataScope> queryWrapper = new LambdaQueryWrapper<>();
@ -97,12 +79,6 @@ public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMap
        this.remove(queryWrapper);
    }
    /**
     * 根据角色id删除对应的角色-数据范围关联信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:48
     */
    @Override
    public void deleteRoleDataScopeListByRoleId(Long roleId) {
        LambdaQueryWrapper<SysRoleDataScope> queryWrapper = new LambdaQueryWrapper<>();

+ 1 - 25
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java

@ -43,13 +43,7 @@ import java.util.List;
 */
@Service
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
    
    /**
     * 获取角色的菜单id集合
     *
     * @author xuyuxiang
     * @date 2020/3/21 10:18
     */
    @Override
    public List<Long> getRoleMenuIdList(List<Long> roleIdList) {
        List<Long> menuIdList = CollectionUtil.newArrayList();
@ -63,12 +57,6 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
        return menuIdList;
    }
    /**
     * 授权菜单
     *
     * @author xuyuxiang
     * @date 2020/3/28 16:40
     */
    @Override
    public void grantMenu(SysRoleParam sysRoleParam) {
        Long roleId = sysRoleParam.getId();
@ -85,12 +73,6 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
        });
    }
    /**
     * 根据菜单id集合删除对应的角色-菜单表信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:20
     */
    @Override
    public void deleteRoleMenuListByMenuIdList(List<Long> menuIdList) {
        LambdaQueryWrapper<SysRoleMenu> queryWrapper = new LambdaQueryWrapper<>();
@ -98,12 +80,6 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
        this.remove(queryWrapper);
    }
    /**
     * 根据角色id删除对应的角色-菜单表关联信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:43
     */
    @Override
    public void deleteRoleMenuListByRoleId(Long roleId) {
        LambdaQueryWrapper<SysRoleMenu> queryWrapper = new LambdaQueryWrapper<>();

+ 36 - 127
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/role/service/impl/SysRoleServiceImpl.java

@ -28,7 +28,6 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.guns.core.annotion.DataScope;
import cn.stylefeng.guns.core.consts.CommonConstant;
import cn.stylefeng.guns.core.consts.SymbolConstant;
import cn.stylefeng.guns.core.context.login.LoginContextHolder;
@ -39,7 +38,6 @@ import cn.stylefeng.guns.sys.core.enums.DataScopeTypeEnum;
import cn.stylefeng.guns.core.exception.ServiceException;
import cn.stylefeng.guns.core.factory.PageFactory;
import cn.stylefeng.guns.core.pojo.page.PageResult;
import cn.stylefeng.guns.sys.modular.emp.result.SysEmpInfo;
import cn.stylefeng.guns.sys.modular.org.service.SysOrgService;
import cn.stylefeng.guns.sys.modular.role.entity.SysRole;
import cn.stylefeng.guns.sys.modular.role.enums.SysRoleExceptionEnum;
@ -55,10 +53,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.util.List;
import java.util.Set;
@ -83,18 +77,12 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
    @Resource
    private SysOrgService sysOrgService;
    /**
     * 获取用户角色相关信息
     *
     * @author xuyuxiang
     * @date 2020/3/13 16:28
     */
    @Override
    public List<Dict> getLoginRoles(Long userId) {
        List<Dict> dictList = CollectionUtil.newArrayList();
        //获取用户角色id集合
        List<Long> roleIdList = sysUserRoleService.getUserRoleIdList(userId);
        if(ObjectUtil.isNotEmpty(roleIdList)) {
        if (ObjectUtil.isNotEmpty(roleIdList)) {
            LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.in(SysRole::getId, roleIdList).eq(SysRole::getStatus, CommonStatusEnum.ENABLE.getCode());
            //根据角色id集合查询并返回结果
@ -109,31 +97,25 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        return dictList;
    }
    /**
     * 查询系统角色
     *
     * @author xuyuxiang
     * @date 2020/3/28 14:57
     */
    @Override
    public PageResult<SysRole> page(SysRoleParam sysRoleParam) {
        LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysRoleParam)) {
        if (ObjectUtil.isNotNull(sysRoleParam)) {
            //根据名称模糊查询
            if(ObjectUtil.isNotEmpty(sysRoleParam.getName())) {
            if (ObjectUtil.isNotEmpty(sysRoleParam.getName())) {
                queryWrapper.like(SysRole::getName, sysRoleParam.getName());
            }
            //根据编码模糊查询
            if(ObjectUtil.isNotEmpty(sysRoleParam.getCode())) {
            if (ObjectUtil.isNotEmpty(sysRoleParam.getCode())) {
                queryWrapper.like(SysRole::getCode, sysRoleParam.getCode());
            }
        }
        //查询角色列表时,如果当前登录用户不是超级管理员,则查询自己拥有的
        if(!LoginContextHolder.me().isSuperAdmin()) {
        if (!LoginContextHolder.me().isSuperAdmin()) {
            //查询自己拥有的
            List<String> loginUserRoleIds = LoginContextHolder.me().getLoginUserRoleIds();
            if(ObjectUtil.isEmpty(loginUserRoleIds)) {
            if (ObjectUtil.isEmpty(loginUserRoleIds)) {
                return new PageResult<>();
            }
            queryWrapper.in(SysRole::getId, loginUserRoleIds);
@ -143,20 +125,14 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
    }
    /**
     * 根据角色名模糊搜索系统角色列表
     *
     * @author xuyuxiang
     * @date 2020/4/14 17:21
     */
    @Override
    public List<Dict> list(SysRoleParam sysRoleParam) {
        List<Dict> dictList = CollectionUtil.newArrayList();
        LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysRoleParam)) {
        if (ObjectUtil.isNotNull(sysRoleParam)) {
            //根据角色名称或编码模糊查询
            if(ObjectUtil.isNotEmpty(sysRoleParam.getName())) {
                queryWrapper.and(i ->i.like(SysRole::getName, sysRoleParam.getName())
            if (ObjectUtil.isNotEmpty(sysRoleParam.getName())) {
                queryWrapper.and(i -> i.like(SysRole::getName, sysRoleParam.getName())
                        .or().like(SysRole::getCode, sysRoleParam.getName()));
            }
        }
@ -172,22 +148,16 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        return dictList;
    }
    /**
     * 系统角色下拉(用于授权角色时选择)
     *
     * @author xuyuxiang
     * @date 2020/4/5 16:48
     */
    @Override
    public List<Dict> dropDown() {
        List<Dict> dictList = CollectionUtil.newArrayList();
        LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
        //如果当前登录用户不是超级管理员,则查询自己拥有的
        if(!LoginContextHolder.me().isSuperAdmin()) {
        if (!LoginContextHolder.me().isSuperAdmin()) {
            //查询自己拥有的
            List<String> loginUserRoleIds = LoginContextHolder.me().getLoginUserRoleIds();
            if(ObjectUtil.isEmpty(loginUserRoleIds)) {
            if (ObjectUtil.isEmpty(loginUserRoleIds)) {
                return dictList;
            }
            queryWrapper.in(SysRole::getId, loginUserRoleIds);
@ -195,22 +165,16 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        //只查询正常状态
        queryWrapper.eq(SysRole::getStatus, CommonStatusEnum.ENABLE.getCode());
        this.list(queryWrapper)
            .forEach(sysRole -> {
            Dict dict = Dict.create();
            dict.put(CommonConstant.ID, sysRole.getId());
            dict.put(CommonConstant.CODE, sysRole.getCode());
            dict.put(CommonConstant.NAME, sysRole.getName());
            dictList.add(dict);
        });
                .forEach(sysRole -> {
                    Dict dict = Dict.create();
                    dict.put(CommonConstant.ID, sysRole.getId());
                    dict.put(CommonConstant.CODE, sysRole.getCode());
                    dict.put(CommonConstant.NAME, sysRole.getName());
                    dictList.add(dict);
                });
        return dictList;
    }
    /**
     * 添加系统角色
     *
     * @author xuyuxiang
     * @date 2020/3/28 14:58
     */
    @Override
    public void add(SysRoleParam sysRoleParam) {
        //校验参数,检查是否存在相同的名称和编码
@ -221,12 +185,6 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        this.save(sysRole);
    }
    /**
     * 删除系统角色
     *
     * @author xuyuxiang
     * @date 2020/3/28 14:58
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void delete(SysRoleParam sysRoleParam) {
@ -244,12 +202,6 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        sysRoleMenuService.deleteRoleMenuListByRoleId(id);
    }
    /**
     * 编辑系统角色
     *
     * @author xuyuxiang
     * @date 2020/3/28 14:58
     */
    @Override
    public void edit(SysRoleParam sysRoleParam) {
        SysRole sysRole = this.querySysRole(sysRoleParam);
@ -261,23 +213,11 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        this.updateById(sysRole);
    }
    /**
     * 查看系统角色
     *
     * @author xuyuxiang
     * @date 2020/3/28 14:59
     */
    @Override
    public SysRole detail(SysRoleParam sysRoleParam) {
        return this.querySysRole(sysRoleParam);
    }
    /**
     * 授权菜单
     *
     * @author xuyuxiang
     * @date 2020/3/28 16:19
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void grantMenu(SysRoleParam sysRoleParam) {
@ -285,12 +225,6 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        sysRoleMenuService.grantMenu(sysRoleParam);
    }
    /**
     * 授权数据
     *
     * @author xuyuxiang
     * @date 2020/3/28 16:20
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void grantData(SysRoleParam sysRoleParam) {
@ -300,19 +234,19 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        if (!superAdmin) {
            Integer dataScopeType = sysRoleParam.getDataScopeType();
            //如果授权的角色的数据范围类型为全部,则没权限,只有超级管理员有
            if(DataScopeTypeEnum.ALL.getCode().equals(dataScopeType)) {
            if (DataScopeTypeEnum.ALL.getCode().equals(dataScopeType)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
            //如果授权的角色数据范围类型为自定义,则要判断授权的数据范围是否在自己的数据范围内
            if(DataScopeTypeEnum.DEFINE.getCode().equals(dataScopeType)){
            if (DataScopeTypeEnum.DEFINE.getCode().equals(dataScopeType)) {
                List<Long> dataScope = sysRoleParam.getDataScope();
                //要授权的数据范围列表
                List<Long> grantOrgIdList = sysRoleParam.getGrantOrgIdList();
                if(ObjectUtil.isNotEmpty(grantOrgIdList)) {
                if (ObjectUtil.isNotEmpty(grantOrgIdList)) {
                    //数据范围为空
                    if (ObjectUtil.isEmpty(dataScope)) {
                        throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
                    } else if(!dataScope.containsAll(grantOrgIdList)) {
                    } else if (!dataScope.containsAll(grantOrgIdList)) {
                        //所要授权的数据不在自己的数据范围内
                        throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
                    }
@ -324,79 +258,54 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
        sysRoleDataScopeService.grantDataScope(sysRoleParam);
    }
    /**
     * 根据角色id集合获取数据范围集合
     * 数据范围类型(字典 1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据 5自定义数据)
     *
     * @author xuyuxiang
     * @date 2020/4/5 17:42
     */
    @Override
    public List<Long> getUserDataScopeIdList(List<Long> roleIdList, Long orgId) {
        Set<Long> resultList = CollectionUtil.newHashSet();
        //自定义数据范围的角色id集合
        Integer minDataScopeType = DataScopeTypeEnum.SELF.getCode();
        //定义角色中最大数据范围的类型,目前系统按最大范围策略来,如果你同时拥有ALL和SELF的权限,系统最后按ALL返回
        Integer strongerDataScopeType = DataScopeTypeEnum.SELF.getCode();
        //固定数据范围的角色id集合
        //获取用户自定义数据范围的角色集合
        List<Long> customDataScopeRoleIdList = CollectionUtil.newArrayList();
        if(ObjectUtil.isNotEmpty(roleIdList)) {
        if (ObjectUtil.isNotEmpty(roleIdList)) {
            List<SysRole> sysRoleList = this.listByIds(roleIdList);
            for (SysRole sysRole: sysRoleList) {
                if(DataScopeTypeEnum.DEFINE.getCode().equals(sysRole.getDataScopeType())) {
            for (SysRole sysRole : sysRoleList) {
                if (DataScopeTypeEnum.DEFINE.getCode().equals(sysRole.getDataScopeType())) {
                    customDataScopeRoleIdList.add(sysRole.getId());
                } else {
                    if(sysRole.getDataScopeType() <= minDataScopeType) {
                        minDataScopeType = sysRole.getDataScopeType();
                    if (sysRole.getDataScopeType() <= strongerDataScopeType) {
                        strongerDataScopeType = sysRole.getDataScopeType();
                    }
                }
            }
        }
        //自定义数据返回id集合
        //自定义数据范围的角色对应的数据范围
        List<Long> roleDataScopeIdList = sysRoleDataScopeService.getRoleDataScopeIdList(customDataScopeRoleIdList);
        //固定数据范围id集合
        List<Long> dataScopeIdList = sysOrgService.getDataScopeListByDataScopeType(minDataScopeType, orgId);
        //角色中拥有最大数据范围类型的数据范围
        List<Long> dataScopeIdList = sysOrgService.getDataScopeListByDataScopeType(strongerDataScopeType, orgId);
        resultList.addAll(dataScopeIdList);
        resultList.addAll(roleDataScopeIdList);
        return CollectionUtil.newArrayList(resultList);
    }
    /**
     * 根据角色id获取名称
     *
     * @author xuyuxiang
     * @date 2020/5/22 16:15
     */
    @Override
    public String getNameByRoleId(Long roleId) {
        SysRole sysRole = this.getById(roleId);
        if(ObjectUtil.isEmpty(sysRole)) {
        if (ObjectUtil.isEmpty(sysRole)) {
            throw new ServiceException(SysRoleExceptionEnum.ROLE_NOT_EXIST);
        }
        return sysRole.getName();
    }
    /**
     * 查询角色拥有菜单
     *
     * @author xuyuxiang
     * @date 2020/5/29 14:04
     */
    @Override
    public List<Long> ownMenu(SysRoleParam sysRoleParam) {
        SysRole sysRole = this.querySysRole(sysRoleParam);
        return sysRoleMenuService.getRoleMenuIdList(CollectionUtil.newArrayList(sysRole.getId()));
    }
    /**
     * 查询角色拥有数据
     *
     * @author xuyuxiang
     * @date 2020/5/29 14:04
     */
    @Override
    public List<Long> ownData(SysRoleParam sysRoleParam) {
        SysRole sysRole = this.querySysRole(sysRoleParam);
@ -423,7 +332,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
                .ne(SysRole::getStatus, CommonStatusEnum.DELETED.getCode());
        //是否排除自己,如果排除自己则不查询自己的id
        if(isExcludeSelf) {
        if (isExcludeSelf) {
            queryWrapperByName.ne(SysRole::getId, id);
            queryWrapperByCode.ne(SysRole::getId, id);
        }
@ -446,7 +355,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     */
    private SysRole querySysRole(SysRoleParam sysRoleParam) {
        SysRole sysRole = this.getById(sysRoleParam.getId());
        if(ObjectUtil.isNull(sysRole)) {
        if (ObjectUtil.isNull(sysRole)) {
            throw new ServiceException(SysRoleExceptionEnum.ROLE_NOT_EXIST);
        }
        return sysRole;

+ 4 - 28
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/sms/service/impl/SysSmsInfoServiceImpl.java

@ -61,12 +61,6 @@ public class SysSmsInfoServiceImpl extends ServiceImpl<SysSmsMapper, SysSms> imp
    private static final Log log = Log.get();
    /**
     * 存储短信验证信息
     *
     * @author stylefeng
     * @date 2018/7/6 16:47
     */
    @Override
    public Long saveSmsInfo(SysSmsSendParam sysSmsSendParam, String validateCode) {
@ -104,12 +98,6 @@ public class SysSmsInfoServiceImpl extends ServiceImpl<SysSmsMapper, SysSms> imp
        return sysSms.getId();
    }
    /**
     * 更新短息发送状态
     *
     * @author stylefeng
     * @date 2018/7/6 17:12
     */
    @Override
    public void updateSmsInfo(Long smsId, SmsSendStatusEnum smsSendStatusEnum) {
        SysSms sysSms = this.getById(smsId);
@ -117,12 +105,6 @@ public class SysSmsInfoServiceImpl extends ServiceImpl<SysSmsMapper, SysSms> imp
        this.updateById(sysSms);
    }
    /**
     * 校验验证码是否正确
     *
     * @author stylefeng
     * @date 2018/7/6 17:16
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public SmsVerifyEnum validateSmsInfo(SysSmsVerifyParam sysSmsVerifyParam) {
@ -187,26 +169,20 @@ public class SysSmsInfoServiceImpl extends ServiceImpl<SysSmsMapper, SysSms> imp
        }
    }
    /**
     * 短信发送记录查询
     *
     * @author xuyuxiang
     * @date 2020/7/2 12:09
     */
    @Override
    public PageResult<SysSms> page(SysSmsInfoParam sysSmsInfoParam) {
        LambdaQueryWrapper<SysSms> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysSmsInfoParam)) {
        if (ObjectUtil.isNotNull(sysSmsInfoParam)) {
            //根据手机号模糊查询
            if(ObjectUtil.isNotEmpty(sysSmsInfoParam.getPhoneNumbers())) {
            if (ObjectUtil.isNotEmpty(sysSmsInfoParam.getPhoneNumbers())) {
                queryWrapper.like(SysSms::getPhoneNumbers, sysSmsInfoParam.getPhoneNumbers());
            }
            //根据发送状态查询(字典 0 未发送,1 发送成功,2 发送失败,3 失效)
            if(ObjectUtil.isNotEmpty(sysSmsInfoParam.getStatus())) {
            if (ObjectUtil.isNotEmpty(sysSmsInfoParam.getStatus())) {
                queryWrapper.eq(SysSms::getStatus, sysSmsInfoParam.getStatus());
            }
            //根据来源查询(字典 1 app, 2 pc, 3 其他)
            if(ObjectUtil.isNotEmpty(sysSmsInfoParam.getSource())) {
            if (ObjectUtil.isNotEmpty(sysSmsInfoParam.getSource())) {
                queryWrapper.eq(SysSms::getSource, sysSmsInfoParam.getSource());
            }
        }

+ 3 - 3
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/user/service/SysUserRoleService.java

@ -58,15 +58,15 @@ public interface SysUserRoleService extends IService<SysUserRole> {
    void grantRole(SysUserParam sysUserParam);
    /**
     * 获取用户的数据范围(组织机构id集合)
     * 获取用户所有角色的数据范围(组织机构id集合)
     *
     * @param userId 用户id
     * @param orgId 组织机构id
     * @param orgId  组织机构id
     * @return 数据范围id集合(组织机构id集合)
     * @author xuyuxiang
     * @date 2020/4/5 17:31
     */
    List<Long> getUserDataScopeIdList(Long userId, Long orgId);
    List<Long> getUserRoleDataScopeIdList(Long userId, Long orgId);
    /**
     * 根据角色id删除对应的用户-角色表关联信息

+ 0 - 24
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/user/service/impl/SysUserDataScopeServiceImpl.java

@ -45,12 +45,6 @@ import java.util.List;
public class SysUserDataScopeServiceImpl extends ServiceImpl<SysUserDataScopeMapper, SysUserDataScope>
        implements SysUserDataScopeService {
    /**
     * 授权数据
     *
     * @author xuyuxiang
     * @date 2020/3/28 16:58
     */
    @Override
    public void grantData(SysUserParam sysUserParam) {
        Long userId = sysUserParam.getId();
@ -67,12 +61,6 @@ public class SysUserDataScopeServiceImpl extends ServiceImpl<SysUserDataScopeMap
        });
    }
    /**
     * 获取用户的数据范围id集合
     *
     * @author xuyuxiang
     * @date 2020/4/5 17:28
     */
    @Override
    public List<Long> getUserDataScopeIdList(Long uerId) {
        List<Long> userDataScopeIdList = CollectionUtil.newArrayList();
@ -82,12 +70,6 @@ public class SysUserDataScopeServiceImpl extends ServiceImpl<SysUserDataScopeMap
        return userDataScopeIdList;
    }
    /**
     * 根据机构id集合删除对应的用户-数据范围关联信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:15
     */
    @Override
    public void deleteUserDataScopeListByOrgIdList(List<Long> orgIdList) {
        LambdaQueryWrapper<SysUserDataScope> queryWrapper = new LambdaQueryWrapper<>();
@ -95,12 +77,6 @@ public class SysUserDataScopeServiceImpl extends ServiceImpl<SysUserDataScopeMap
        this.remove(queryWrapper);
    }
    /**
     * 根据用户id删除对应的用户-数据范围关联信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:54
     */
    @Override
    public void deleteUserDataScopeListByUserId(Long userId) {
        LambdaQueryWrapper<SysUserDataScope> queryWrapper = new LambdaQueryWrapper<>();

+ 6 - 32
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/user/service/impl/SysUserRoleServiceImpl.java

@ -50,12 +50,6 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
    @Resource
    private SysRoleService sysRoleService;
    /**
     * 获取用户的角色id集合
     *
     * @author xuyuxiang
     * @date 2020/3/20 22:33
     */
    @Override
    public List<Long> getUserRoleIdList(Long userId) {
        List<Long> roleIdList = CollectionUtil.newArrayList();
@ -65,12 +59,6 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
        return roleIdList;
    }
    /**
     * 授权角色
     *
     * @author xuyuxiang
     * @date 2020/3/28 16:57
     */
    @Override
    public void grantRole(SysUserParam sysUserParam) {
        Long userId = sysUserParam.getId();
@ -87,30 +75,22 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
        });
    }
    /**
     * 获取用户的数据范围(组织机构id集合)
     *
     * @author xuyuxiang
     * @date 2020/4/5 17:32
     */
    @Override
    public List<Long> getUserDataScopeIdList(Long userId, Long orgId) {
    public List<Long> getUserRoleDataScopeIdList(Long userId, Long orgId) {
        List<Long> roleIdList = CollectionUtil.newArrayList();
        // 获取用户所有角色
        LambdaQueryWrapper<SysUserRole> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SysUserRole::getUserId, userId);
        this.list(queryWrapper).forEach(sysUserRole -> roleIdList.add(sysUserRole.getRoleId()));
        if(ObjectUtil.isNotEmpty(roleIdList)) {
        // 获取这些角色对应的数据范围
        if (ObjectUtil.isNotEmpty(roleIdList)) {
            return sysRoleService.getUserDataScopeIdList(roleIdList, orgId);
        }
        return CollectionUtil.newArrayList();
    }
    /**
     * 根据角色id删除对应的用户-角色表关联信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:23
     */
    @Override
    public void deleteUserRoleListByRoleId(Long roleId) {
        LambdaQueryWrapper<SysUserRole> queryWrapper = new LambdaQueryWrapper<>();
@ -118,12 +98,6 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
        this.remove(queryWrapper);
    }
    /**
     * 根据用户id删除对应的用户-角色表关联信息
     *
     * @author xuyuxiang
     * @date 2020/6/28 14:53
     */
    @Override
    public void deleteUserRoleListByUserId(Long userId) {
        LambdaQueryWrapper<SysUserRole> queryWrapper = new LambdaQueryWrapper<>();

+ 32 - 149
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/user/service/impl/SysUserServiceImpl.java

@ -87,12 +87,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
    @Resource
    private SysFileInfoService sysFileInfoService;
    /**
     * 根据账号获取用户
     *
     * @author xuyuxiang
     * @date 2020/3/11 17:51
     */
    @Override
    public SysUser getUserByCount(String account) {
        LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
@ -100,33 +94,27 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        return this.getOne(queryWrapper);
    }
    /**
     * 查询系统用户
     *
     * @author xuyuxiang yubaoshan
     * @date 2020/3/23 9:37
     */
    @Override
    public PageResult<SysUserResult> page(SysUserParam sysUserParam) {
        QueryWrapper<SysUserResult> queryWrapper = new QueryWrapper<>();
        if(ObjectUtil.isNotNull(sysUserParam)) {
        if (ObjectUtil.isNotNull(sysUserParam)) {
            //根据关键字模糊查询(姓名,账号,手机号)
            if(ObjectUtil.isNotEmpty(sysUserParam.getSearchValue())) {
            if (ObjectUtil.isNotEmpty(sysUserParam.getSearchValue())) {
                queryWrapper.like("sys_user.account", sysUserParam.getSearchValue())
                        .or().like("sys_user.name", sysUserParam.getSearchValue())
                        .or().like("sys_user.phone", sysUserParam.getSearchValue());
            }
            //根据员工所属机构查询
            if(ObjectUtil.isNotEmpty(sysUserParam.getSysEmpParam())) {
            if (ObjectUtil.isNotEmpty(sysUserParam.getSysEmpParam())) {
                SysEmpParam sysEmpParam = sysUserParam.getSysEmpParam();
                if(ObjectUtil.isNotEmpty(sysEmpParam.getOrgId())) {
                if (ObjectUtil.isNotEmpty(sysEmpParam.getOrgId())) {
                    //查询属于该机构的,或该机构下级所有的人员
                    queryWrapper.eq("sys_emp.org_id", sysEmpParam.getOrgId())
                            .or().like("sys_org.pids", sysEmpParam.getOrgId());
                }
            }
            //根据状态查询(0正常 1停用),删除的不会展示在列表
            if(ObjectUtil.isNotEmpty(sysUserParam.getSearchStatus())) {
            if (ObjectUtil.isNotEmpty(sysUserParam.getSearchStatus())) {
                queryWrapper.eq("sys_user.status", sysUserParam.getSearchStatus());
            }
        }
@ -136,9 +124,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        //如果是超级管理员则获取所有用户,否则只获取其数据范围的用户
        boolean superAdmin = LoginContextHolder.me().isSuperAdmin();
        if(!superAdmin) {
        if (!superAdmin) {
            List<Long> dataScope = sysUserParam.getDataScope();
            if(ObjectUtil.isEmpty(dataScope)) {
            if (ObjectUtil.isEmpty(dataScope)) {
                return new PageResult<>(new Page<>());
            } else {
                Set<Long> dataScopeSet = CollectionUtil.newHashSet(dataScope);
@ -148,20 +136,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        return new PageResult<>(this.baseMapper.page(PageFactory.defaultPage(), queryWrapper));
    }
    /**
     * 根据用户账号模糊搜索系统用户列表
     *
     * @author xuyuxiang
     * @date 2020/4/14 9:22
     */
    @Override
    public List<Dict> list(SysUserParam sysUserParam) {
        List<Dict> dictList = CollectionUtil.newArrayList();
        LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotNull(sysUserParam)) {
        if (ObjectUtil.isNotNull(sysUserParam)) {
            //根据账号,姓名模糊查询
            if(ObjectUtil.isNotEmpty(sysUserParam.getAccount())) {
                queryWrapper.and(i ->i.like(SysUser::getAccount, sysUserParam.getAccount())
            if (ObjectUtil.isNotEmpty(sysUserParam.getAccount())) {
                queryWrapper.and(i -> i.like(SysUser::getAccount, sysUserParam.getAccount())
                        .or().like(SysUser::getName, sysUserParam.getAccount()));
            }
        }
@ -178,12 +160,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        return dictList;
    }
    /**
     * 增加系统用户
     *
     * @author xuyuxiang
     * @date 2020/3/23 9:37
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void add(SysUserParam sysUserParam) {
@ -197,7 +173,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
            //数据范围为空
            if (ObjectUtil.isEmpty(dataScope)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            } else if(!dataScope.contains(orgId)) {
            } else if (!dataScope.contains(orgId)) {
                //所添加的用户的所属机构不在自己的数据范围内
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
@ -213,18 +189,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        sysEmpService.addOrUpdate(sysEmpParam);
    }
    /**
     * 删除系统用户
     *
     * @author xuyuxiang
     * @date 2020/3/23 9:37
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void delete(SysUserParam sysUserParam) {
        SysUser sysUser = this.querySysUser(sysUserParam);
        //不能删除超级管理员
        if(AdminTypeEnum.SUPER_ADMIN.getCode().equals(sysUser.getAdminType())) {
        if (AdminTypeEnum.SUPER_ADMIN.getCode().equals(sysUser.getAdminType())) {
            throw new ServiceException(SysUserExceptionEnum.USER_CAN_NOT_DELETE_ADMIN);
        }
        boolean superAdmin = LoginContextHolder.me().isSuperAdmin();
@ -237,7 +207,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
            //数据范围为空
            if (ObjectUtil.isEmpty(dataScope)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            } else if(!dataScope.contains(orgId)) {
            } else if (!dataScope.contains(orgId)) {
                //所要删除的用户的所属机构不在自己的数据范围内
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
@ -255,12 +225,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        sysUserDataScopeService.deleteUserDataScopeListByUserId(id);
    }
    /**
     * 编辑系统用户
     *
     * @author xuyuxiang
     * @date 2020/3/23 9:37
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void edit(SysUserParam sysUserParam) {
@ -275,7 +239,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
            //数据范围为空
            if (ObjectUtil.isEmpty(dataScope)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            } else if(!dataScope.contains(orgId)) {
            } else if (!dataScope.contains(orgId)) {
                //所要编辑的用户的所属机构不在自己的数据范围内
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
@ -295,12 +259,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        sysEmpService.addOrUpdate(sysEmpParam);
    }
    /**
     * 查看系统用户
     *
     * @author xuyuxiang
     * @date 2020/3/26 9:52
     */
    @Override
    public SysUserResult detail(SysUserParam sysUserParam) {
        SysUserResult sysUserResult = new SysUserResult();
@ -314,17 +272,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        return sysUserResult;
    }
    /**
     * 修改状态
     *
     * @author xuyuxiang
     * @date 2020/5/25 14:34
     */
    @Override
    public void changeStatus(SysUserParam sysUserParam) {
        SysUser sysUser = this.querySysUser(sysUserParam);
        //不能修改超级管理员状态
        if(AdminTypeEnum.SUPER_ADMIN.getCode().equals(sysUser.getAdminType())) {
        if (AdminTypeEnum.SUPER_ADMIN.getCode().equals(sysUser.getAdminType())) {
            throw new ServiceException(SysUserExceptionEnum.USER_CAN_NOT_UPDATE_ADMIN);
        }
@ -345,12 +297,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        }
    }
    /**
     * 授权角色
     *
     * @author xuyuxiang
     * @date 2020/3/28 16:55
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void grantRole(SysUserParam sysUserParam) {
@ -365,7 +311,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
            //数据范围为空
            if (ObjectUtil.isEmpty(dataScope)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            } else if(!dataScope.contains(orgId)) {
            } else if (!dataScope.contains(orgId)) {
                //所要授权角色的用户的所属机构不在自己的数据范围内
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
@ -373,12 +319,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        sysUserRoleService.grantRole(sysUserParam);
    }
    /**
     * 授权数据
     *
     * @author xuyuxiang
     * @date 2020/3/28 16:55
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void grantData(SysUserParam sysUserParam) {
@ -393,7 +333,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
            //数据范围为空
            if (ObjectUtil.isEmpty(dataScope)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            } else if(!dataScope.contains(orgId)) {
            } else if (!dataScope.contains(orgId)) {
                //所要授权数据的用户的所属机构不在自己的数据范围内
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
@ -401,12 +341,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        sysUserDataScopeService.grantData(sysUserParam);
    }
    /**
     * 更新信息
     *
     * @author xuyuxiang
     * @date 2020/4/1 14:44
     */
    @Override
    public void updateInfo(SysUserParam sysUserParam) {
        SysUser sysUser = this.querySysUser(sysUserParam);
@ -414,95 +348,62 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        this.updateById(sysUser);
    }
    /**
     * 修改密码
     *
     * @author xuyuxiang
     * @date 2020/4/1 14:44
     */
    @Override
    public void updatePwd(SysUserParam sysUserParam) {
        SysUser sysUser = this.querySysUser(sysUserParam);
        String passwordMd5 = SecureUtil.md5(sysUserParam.getPassword() + sysUser.getSalt());
        String currentPwdMd5 = sysUser.getPassword();
        //原密码错误
        if(!passwordMd5.equals(currentPwdMd5)) {
        if (!passwordMd5.equals(currentPwdMd5)) {
            throw new ServiceException(SysUserExceptionEnum.USER_PWD_ERROR);
        }
        String newPasswordMd5 = SecureUtil.md5(sysUserParam.getNewPassword()+ sysUser.getSalt());
        String newPasswordMd5 = SecureUtil.md5(sysUserParam.getNewPassword() + sysUser.getSalt());
        //新密码与原密码相同
        if(passwordMd5.equals(newPasswordMd5)) {
        if (passwordMd5.equals(newPasswordMd5)) {
            throw new ServiceException(SysUserExceptionEnum.USER_PWD_REPEAT);
        }
        sysUser.setPassword(newPasswordMd5);
        this.updateById(sysUser);
    }
    /**
     * 获取用户的数据范围(组织机构id集合)
     *
     * @author xuyuxiang
     * @date 2020/4/5 17:24
     */
    @Override
    public List<Long> getUserDataScopeIdList(Long userId, Long orgId) {
        Set<Long> userDataScopeIdSet = CollectionUtil.newHashSet();
        if(ObjectUtil.isAllNotEmpty(userId, orgId)) {
        if (ObjectUtil.isAllNotEmpty(userId, orgId)) {
            //获取该用户对应的数据范围集合
            List<Long> userDataScopeIdListForUser = sysUserDataScopeService.getUserDataScopeIdList(userId);
            //获取该用户的角色对应的数据范围集合
            List<Long> userDataScopeIdListForRole = sysUserRoleService.getUserDataScopeIdList(userId, orgId);
            List<Long> userDataScopeIdListForRole = sysUserRoleService.getUserRoleDataScopeIdList(userId, orgId);
            userDataScopeIdSet.addAll(userDataScopeIdListForUser);
            userDataScopeIdSet.addAll(userDataScopeIdListForRole);
        }
        return CollectionUtil.newArrayList(userDataScopeIdSet);
    }
    /**
     * 根据用户id获取姓名
     *
     * @author xuyuxiang
     * @date 2020/5/6 15:02
     */
    @Override
    public String getNameByUserId(Long userId) {
        SysUser sysUser = this.getById(userId);
        if(ObjectUtil.isNull(sysUser)) {
        if (ObjectUtil.isNull(sysUser)) {
            throw new ServiceException(SysUserExceptionEnum.USER_NOT_EXIST);
        }
        return sysUser.getName();
    }
    /**
     * 拥有角色
     *
     * @author xuyuxiang
     * @date 2020/5/29 14:10
     */
    @Override
    public List<Long> ownRole(SysUserParam sysUserParam) {
        SysUser sysUser = this.querySysUser(sysUserParam);
        return sysUserRoleService.getUserRoleIdList(sysUser.getId());
    }
    /**
     * 拥有数据
     *
     * @author xuyuxiang
     * @date 2020/5/29 14:11
     */
    @Override
    public List<Long> ownData(SysUserParam sysUserParam) {
        SysUser sysUser = this.querySysUser(sysUserParam);
        return sysUserDataScopeService.getUserDataScopeIdList(sysUser.getId());
    }
    /**
     * 重置密码
     *
     * @author xuyuxiang
     * @date 2020/5/29 14:57
     */
    @Override
    public void resetPwd(SysUserParam sysUserParam) {
        SysUser sysUser = this.querySysUser(sysUserParam);
@ -511,12 +412,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        this.updateById(sysUser);
    }
    /**
     * 修改头像
     *
     * @author xuyuxiang
     * @date 2020/6/28 15:22
     */
    @Override
    public void updateAvatar(SysUserParam sysUserParam) {
        SysUser sysUser = this.querySysUser(sysUserParam);
@ -526,38 +421,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        this.updateById(sysUser);
    }
    /**
     * 导出系统用户
     *
     * @author xuyuxiang
     * @date 2020/6/30 16:08
     */
    @Override
    public void export(SysUserParam sysUserParam) {
        List<SysUser> list = this.list();
        PoiUtil.exportExcelWithStream("GunsUsers.xls", SysUser.class, list);
    }
    /**
     * 用户选择器
     *
     * @author xuyuxiang
     * @date 2020/7/3 13:18
     */
    @Override
    public List<SysUser> selector(SysUserParam sysUserParam) {
        QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
        if(ObjectUtil.isNotNull(sysUserParam)) {
        if (ObjectUtil.isNotNull(sysUserParam)) {
            //根据姓名模糊查询
            if(ObjectUtil.isNotEmpty(sysUserParam.getName())) {
            if (ObjectUtil.isNotEmpty(sysUserParam.getName())) {
                queryWrapper.like("sys_user.name", sysUserParam.getName());
            }
        }
        //如果是超级管理员则获取所有用户,否则只获取其数据范围的用户
        boolean superAdmin = LoginContextHolder.me().isSuperAdmin();
        if(!superAdmin) {
        if (!superAdmin) {
            List<Long> dataScope = sysUserParam.getDataScope();
            if(ObjectUtil.isEmpty(dataScope)) {
            if (ObjectUtil.isEmpty(dataScope)) {
                return CollectionUtil.newArrayList();
            } else {
                Set<Long> dataScopeSet = CollectionUtil.newHashSet(dataScope);
@ -583,7 +466,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
        queryWrapper.eq(SysUser::getAccount, account)
                .ne(SysUser::getStatus, CommonStatusEnum.DELETED.getCode());
        //是否排除自己,如果是则查询条件排除自己id
        if(isExcludeSelf) {
        if (isExcludeSelf) {
            queryWrapper.ne(SysUser::getId, id);
        }
        int countByAccount = this.count(queryWrapper);
@ -601,7 +484,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     */
    private SysUser querySysUser(SysUserParam sysUserParam) {
        SysUser sysUser = this.getById(sysUserParam.getId());
        if(ObjectUtil.isNull(sysUser)) {
        if (ObjectUtil.isNull(sysUser)) {
            throw new ServiceException(SysUserExceptionEnum.USER_NOT_EXIST);
        }
        return sysUser;