From 7d1fcfbef4e87c30296f62c5e07cc1b8a9f310f3 Mon Sep 17 00:00:00 2001 From: hxr <1490493387@qq.com> Date: Mon, 24 Jun 2024 08:15:46 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=B3=BB=E7=BB=9F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- sql/mysql5/youlai_boot.sql | 20 +- sql/mysql8/youlai_boot.sql | 20 +- .../common/exception/BusinessException.java | 17 +- .../system/controller/SysDeptController.java | 35 +-- .../system/controller/SysDictController.java | 102 ++------ .../system/controller/SysMenuController.java | 19 +- .../system/controller/SysRoleController.java | 7 +- .../system/controller/SysUserController.java | 21 +- .../system/converter/DeptConverter.java | 7 +- .../system/converter/DictConverter.java | 12 +- .../system/converter/DictItemConverter.java | 40 +++ .../system/converter/DictTypeConverter.java | 23 -- .../system/converter/MenuConverter.java | 2 +- .../system/converter/RoleConverter.java | 6 +- .../system/converter/UserConverter.java | 10 +- .../system/mapper/SysDictItemMapper.java | 20 ++ .../youlai/system/mapper/SysDictMapper.java | 17 ++ .../system/mapper/SysDictTypeMapper.java | 14 - .../youlai/system/mapper/SysMenuMapper.java | 7 - .../system/mapper/SysRoleMenuMapper.java | 10 + .../youlai/system/mapper/SysUserMapper.java | 4 +- .../com/youlai/system/model/bo/RouteBO.java | 11 +- .../youlai/system/model/bo/UserFormBO.java | 66 ----- .../system/model/dto/CaptchaResult.java | 6 +- .../UserExportDTO.java} | 4 +- .../UserImportDTO.java} | 7 +- .../youlai/system/model/entity/SysDept.java | 25 +- .../youlai/system/model/entity/SysDict.java | 37 +-- .../{SysDictType.java => SysDictItem.java} | 28 +- .../youlai/system/model/entity/SysMenu.java | 35 ++- .../youlai/system/model/entity/SysRole.java | 32 ++- .../youlai/system/model/entity/SysUser.java | 22 +- .../youlai/system/model/form/DeptForm.java | 19 +- .../youlai/system/model/form/DictForm.java | 53 +++- .../system/model/form/DictTypeForm.java | 26 -- .../youlai/system/model/form/MenuForm.java | 14 +- .../system/model/query/DictPageQuery.java | 2 +- .../system/model/query/DictTypePageQuery.java | 2 +- .../com/youlai/system/model/vo/DeptVO.java | 3 + .../youlai/system/model/vo/DictPageVO.java | 52 +++- .../system/model/vo/DictTypePageVO.java | 23 -- .../com/youlai/system/model/vo/MenuVO.java | 5 +- .../plugin/easyexcel/UserImportListener.java | 64 ++--- .../annotation/PreventRepeatSubmit.java} | 9 +- .../aspect/DuplicateSubmitAspect.java | 14 +- .../youlai/system/service/SysDeptService.java | 2 +- .../system/service/SysDictItemService.java | 20 ++ .../youlai/system/service/SysDictService.java | 52 ++-- .../system/service/SysDictTypeService.java | 73 ------ .../youlai/system/service/SysMenuService.java | 27 +- .../system/service/SysRoleMenuService.java | 8 + .../youlai/system/service/SysUserService.java | 4 +- .../service/impl/SysDeptServiceImpl.java | 70 +++-- .../service/impl/SysDictItemServiceImpl.java | 33 +++ .../service/impl/SysDictServiceImpl.java | 240 +++++++++++------- .../service/impl/SysDictTypeServiceImpl.java | 206 --------------- .../service/impl/SysMenuServiceImpl.java | 43 ++-- .../service/impl/SysRoleMenuServiceImpl.java | 20 +- .../service/impl/SysRoleServiceImpl.java | 6 +- .../service/impl/SysUserServiceImpl.java | 14 +- .../excel-templates/用户导入模板.xlsx | Bin 12438 -> 12655 bytes .../resources/mapper/SysDictItemMapper.xml | 24 ++ src/main/resources/mapper/SysDictMapper.xml | 28 ++ .../resources/mapper/SysDictTypeMapper.xml | 22 -- src/main/resources/mapper/SysMenuMapper.xml | 33 +-- .../resources/mapper/SysRoleMenuMapper.xml | 25 +- src/main/resources/mapper/SysUserMapper.xml | 8 +- .../resources/mapper/SysUserRoleMapper.xml | 4 +- .../resources/templates/converter.java.vm | 6 +- .../resources/templates/serviceImpl.java.vm | 6 +- 71 files changed, 900 insertions(+), 1048 deletions(-) create mode 100644 src/main/java/com/youlai/system/converter/DictItemConverter.java delete mode 100644 src/main/java/com/youlai/system/converter/DictTypeConverter.java create mode 100644 src/main/java/com/youlai/system/mapper/SysDictItemMapper.java delete mode 100644 src/main/java/com/youlai/system/mapper/SysDictTypeMapper.java delete mode 100644 src/main/java/com/youlai/system/model/bo/UserFormBO.java rename src/main/java/com/youlai/system/model/{vo/UserExportVO.java => dto/UserExportDTO.java} (92%) rename src/main/java/com/youlai/system/model/{vo/UserImportVO.java => dto/UserImportDTO.java} (81%) rename src/main/java/com/youlai/system/model/entity/{SysDictType.java => SysDictItem.java} (57%) delete mode 100644 src/main/java/com/youlai/system/model/form/DictTypeForm.java delete mode 100644 src/main/java/com/youlai/system/model/vo/DictTypePageVO.java rename src/main/java/com/youlai/system/plugin/{dupsubmit/annotation/PreventDuplicateSubmit.java => norepeat/annotation/PreventRepeatSubmit.java} (55%) rename src/main/java/com/youlai/system/plugin/{dupsubmit => norepeat}/aspect/DuplicateSubmitAspect.java (82%) create mode 100644 src/main/java/com/youlai/system/service/SysDictItemService.java delete mode 100644 src/main/java/com/youlai/system/service/SysDictTypeService.java create mode 100644 src/main/java/com/youlai/system/service/impl/SysDictItemServiceImpl.java delete mode 100644 src/main/java/com/youlai/system/service/impl/SysDictTypeServiceImpl.java create mode 100644 src/main/resources/mapper/SysDictItemMapper.xml delete mode 100644 src/main/resources/mapper/SysDictTypeMapper.xml diff --git a/pom.xml b/pom.xml index 226a6e86..157931c6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.youlai youlai-boot - 2.8.1 + 2.9.0 基于 Java 17 + SpringBoot 3 + Spring Security 构建的权限管理系统。 diff --git a/sql/mysql5/youlai_boot.sql b/sql/mysql5/youlai_boot.sql index 3e824022..7e971f74 100644 --- a/sql/mysql5/youlai_boot.sql +++ b/sql/mysql5/youlai_boot.sql @@ -49,7 +49,7 @@ INSERT INTO `sys_dept` VALUES (3, '测试部门', 1, '0,1', 1, 1, 0, NULL, '2022 DROP TABLE IF EXISTS `sys_dict`; CREATE TABLE `sys_dict` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `type_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典类型编码', + `type_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典编码', `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典项名称', `value` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典项值', `sort` int NULL DEFAULT 0 COMMENT '排序', @@ -69,10 +69,10 @@ INSERT INTO `sys_dict` VALUES (2, 'gender', '女', '2', 2, 1, 0, NULL, '2019-04- INSERT INTO `sys_dict` VALUES (3, 'gender', '未知', '0', 1, 1, 0, NULL, '2020-10-17 08:09:31', '2020-10-17 08:09:31'); -- ---------------------------- --- Table structure for sys_dict_type +-- Table structure for sys_dict -- ---------------------------- -DROP TABLE IF EXISTS `sys_dict_type`; -CREATE TABLE `sys_dict_type` ( +DROP TABLE IF EXISTS `sys_dict`; +CREATE TABLE `sys_dict` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键 ', `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型名称', `code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型编码', @@ -82,12 +82,12 @@ CREATE TABLE `sys_dict_type` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `type_code`(`code` ASC) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 89 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典类型表' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 89 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of sys_dict_type +-- Records of sys_dict -- ---------------------------- -INSERT INTO `sys_dict_type` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28'); +INSERT INTO `sys_dict` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28'); -- ---------------------------- -- Table structure for sys_menu @@ -148,9 +148,9 @@ INSERT INTO `sys_menu` VALUES (75, 4, '0,1,4', '菜单删除', 4, '', NULL, 'sys INSERT INTO `sys_menu` VALUES (76, 5, '0,1,5', '部门新增', 4, '', NULL, 'sys:dept:add', NULL, NULL, 1, 1, '', NULL, '2023-05-20 23:45:00', '2023-05-20 23:45:00', NULL); INSERT INTO `sys_menu` VALUES (77, 5, '0,1,5', '部门编辑', 4, '', NULL, 'sys:dept:edit', NULL, NULL, 1, 2, '', NULL, '2023-05-20 23:46:16', '2023-05-20 23:46:16', NULL); INSERT INTO `sys_menu` VALUES (78, 5, '0,1,5', '部门删除', 4, '', NULL, 'sys:dept:delete', NULL, NULL, 1, 3, '', NULL, '2023-05-20 23:46:36', '2023-05-20 23:46:36', NULL); -INSERT INTO `sys_menu` VALUES (79, 6, '0,1,6', '字典类型新增', 4, '', NULL, 'sys:dict_type:add', NULL, NULL, 1, 1, '', NULL, '2023-05-21 00:16:06', '2023-05-21 00:16:06', NULL); -INSERT INTO `sys_menu` VALUES (81, 6, '0,1,6', '字典类型编辑', 4, '', NULL, 'sys:dict_type:edit', NULL, NULL, 1, 2, '', NULL, '2023-05-21 00:27:37', '2023-05-21 00:27:37', NULL); -INSERT INTO `sys_menu` VALUES (84, 6, '0,1,6', '字典类型删除', 4, '', NULL, 'sys:dict_type:delete', NULL, NULL, 1, 3, '', NULL, '2023-05-21 00:29:39', '2023-05-21 00:29:39', NULL); +INSERT INTO `sys_menu` VALUES (79, 6, '0,1,6', '字典新增', 4, '', NULL, 'sys:dict_type:add', NULL, NULL, 1, 1, '', NULL, '2023-05-21 00:16:06', '2023-05-21 00:16:06', NULL); +INSERT INTO `sys_menu` VALUES (81, 6, '0,1,6', '字典编辑', 4, '', NULL, 'sys:dict_type:edit', NULL, NULL, 1, 2, '', NULL, '2023-05-21 00:27:37', '2023-05-21 00:27:37', NULL); +INSERT INTO `sys_menu` VALUES (84, 6, '0,1,6', '字典删除', 4, '', NULL, 'sys:dict_type:delete', NULL, NULL, 1, 3, '', NULL, '2023-05-21 00:29:39', '2023-05-21 00:29:39', NULL); INSERT INTO `sys_menu` VALUES (85, 6, '0,1,6', '字典数据新增', 4, '', NULL, 'sys:dict:add', NULL, NULL, 1, 4, '', NULL, '2023-05-21 00:46:56', '2023-05-21 00:47:06', NULL); INSERT INTO `sys_menu` VALUES (86, 6, '0,1,6', '字典数据编辑', 4, '', NULL, 'sys:dict:edit', NULL, NULL, 1, 5, '', NULL, '2023-05-21 00:47:36', '2023-05-21 00:47:36', NULL); INSERT INTO `sys_menu` VALUES (87, 6, '0,1,6', '字典数据删除', 4, '', NULL, 'sys:dict:delete', NULL, NULL, 1, 6, '', NULL, '2023-05-21 00:48:10', '2023-05-21 00:48:20', NULL); diff --git a/sql/mysql8/youlai_boot.sql b/sql/mysql8/youlai_boot.sql index 41060087..6b52d74a 100644 --- a/sql/mysql8/youlai_boot.sql +++ b/sql/mysql8/youlai_boot.sql @@ -51,7 +51,7 @@ INSERT INTO `sys_dept` VALUES (3, '测试部门', 1, '0,1', 1, 1, 0, NULL, '2022 DROP TABLE IF EXISTS `sys_dict`; CREATE TABLE `sys_dict` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `type_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典类型编码', + `type_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典编码', `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典项名称', `value` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典项值', `sort` int NULL DEFAULT 0 COMMENT '排序', @@ -71,10 +71,10 @@ INSERT INTO `sys_dict` VALUES (2, 'gender', '女', '2', 2, 1, 0, NULL, '2019-04- INSERT INTO `sys_dict` VALUES (3, 'gender', '未知', '0', 1, 1, 0, NULL, '2020-10-17 08:09:31', '2020-10-17 08:09:31'); -- ---------------------------- --- Table structure for sys_dict_type +-- Table structure for sys_dict -- ---------------------------- -DROP TABLE IF EXISTS `sys_dict_type`; -CREATE TABLE `sys_dict_type` ( +DROP TABLE IF EXISTS `sys_dict`; +CREATE TABLE `sys_dict` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键 ', `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '类型名称', `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '类型编码', @@ -84,12 +84,12 @@ CREATE TABLE `sys_dict_type` ( `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `type_code`(`code` ASC) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 89 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典类型表' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 89 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of sys_dict_type +-- Records of sys_dict -- ---------------------------- -INSERT INTO `sys_dict_type` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28'); +INSERT INTO `sys_dict` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28'); -- ---------------------------- -- Table structure for sys_menu @@ -150,9 +150,9 @@ INSERT INTO `sys_menu` VALUES (75, 4, '0,1,4', '菜单删除', 4, '', NULL, 'sys INSERT INTO `sys_menu` VALUES (76, 5, '0,1,5', '部门新增', 4, '', NULL, 'sys:dept:add', NULL, NULL, 1, 1, '', NULL, '2023-05-20 23:45:00', '2023-05-20 23:45:00', NULL); INSERT INTO `sys_menu` VALUES (77, 5, '0,1,5', '部门编辑', 4, '', NULL, 'sys:dept:edit', NULL, NULL, 1, 2, '', NULL, '2023-05-20 23:46:16', '2023-05-20 23:46:16', NULL); INSERT INTO `sys_menu` VALUES (78, 5, '0,1,5', '部门删除', 4, '', NULL, 'sys:dept:delete', NULL, NULL, 1, 3, '', NULL, '2023-05-20 23:46:36', '2023-05-20 23:46:36', NULL); -INSERT INTO `sys_menu` VALUES (79, 6, '0,1,6', '字典类型新增', 4, '', NULL, 'sys:dict_type:add', NULL, NULL, 1, 1, '', NULL, '2023-05-21 00:16:06', '2023-05-21 00:16:06', NULL); -INSERT INTO `sys_menu` VALUES (81, 6, '0,1,6', '字典类型编辑', 4, '', NULL, 'sys:dict_type:edit', NULL, NULL, 1, 2, '', NULL, '2023-05-21 00:27:37', '2023-05-21 00:27:37', NULL); -INSERT INTO `sys_menu` VALUES (84, 6, '0,1,6', '字典类型删除', 4, '', NULL, 'sys:dict_type:delete', NULL, NULL, 1, 3, '', NULL, '2023-05-21 00:29:39', '2023-05-21 00:29:39', NULL); +INSERT INTO `sys_menu` VALUES (79, 6, '0,1,6', '字典新增', 4, '', NULL, 'sys:dict_type:add', NULL, NULL, 1, 1, '', NULL, '2023-05-21 00:16:06', '2023-05-21 00:16:06', NULL); +INSERT INTO `sys_menu` VALUES (81, 6, '0,1,6', '字典编辑', 4, '', NULL, 'sys:dict_type:edit', NULL, NULL, 1, 2, '', NULL, '2023-05-21 00:27:37', '2023-05-21 00:27:37', NULL); +INSERT INTO `sys_menu` VALUES (84, 6, '0,1,6', '字典删除', 4, '', NULL, 'sys:dict_type:delete', NULL, NULL, 1, 3, '', NULL, '2023-05-21 00:29:39', '2023-05-21 00:29:39', NULL); INSERT INTO `sys_menu` VALUES (85, 6, '0,1,6', '字典数据新增', 4, '', NULL, 'sys:dict:add', NULL, NULL, 1, 4, '', NULL, '2023-05-21 00:46:56', '2023-05-21 00:47:06', NULL); INSERT INTO `sys_menu` VALUES (86, 6, '0,1,6', '字典数据编辑', 4, '', NULL, 'sys:dict:edit', NULL, NULL, 1, 5, '', NULL, '2023-05-21 00:47:36', '2023-05-21 00:47:36', NULL); INSERT INTO `sys_menu` VALUES (87, 6, '0,1,6', '字典数据删除', 4, '', NULL, 'sys:dict:delete', NULL, NULL, 1, 6, '', NULL, '2023-05-21 00:48:10', '2023-05-21 00:48:20', NULL); diff --git a/src/main/java/com/youlai/system/common/exception/BusinessException.java b/src/main/java/com/youlai/system/common/exception/BusinessException.java index a9f96205..0c7ddfe3 100644 --- a/src/main/java/com/youlai/system/common/exception/BusinessException.java +++ b/src/main/java/com/youlai/system/common/exception/BusinessException.java @@ -2,11 +2,12 @@ package com.youlai.system.common.exception; import com.youlai.system.common.result.IResultCode; import lombok.Getter; +import org.slf4j.helpers.MessageFormatter; /** * 自定义业务异常 * - * @author haoxr + * @author Ray * @since 2022/7/31 */ @Getter @@ -19,17 +20,19 @@ public class BusinessException extends RuntimeException { this.resultCode = errorCode; } - public BusinessException(String message){ - super(message); - } - - public BusinessException(String message, Throwable cause){ + public BusinessException(String message, Throwable cause) { super(message, cause); } - public BusinessException(Throwable cause){ + public BusinessException(Throwable cause) { super(cause); } + public BusinessException(String message, Object... args) { + super(formatMessage(message, args)); + } + private static String formatMessage(String message, Object... args) { + return MessageFormatter.arrayFormat(message, args).getMessage(); + } } diff --git a/src/main/java/com/youlai/system/controller/SysDeptController.java b/src/main/java/com/youlai/system/controller/SysDeptController.java index 346180b2..442532bb 100644 --- a/src/main/java/com/youlai/system/controller/SysDeptController.java +++ b/src/main/java/com/youlai/system/controller/SysDeptController.java @@ -1,6 +1,6 @@ package com.youlai.system.controller; -import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; +import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit; import com.youlai.system.common.model.Option; import com.youlai.system.common.result.Result; import com.youlai.system.model.form.DeptForm; @@ -11,7 +11,6 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; -import org.springdoc.core.annotations.ParameterObject; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -29,23 +28,36 @@ import java.util.List; @RequestMapping("/api/v1/dept") @RequiredArgsConstructor public class SysDeptController { + private final SysDeptService deptService; + @Operation(summary = "获取部门列表") @GetMapping - public Result> listDepartments( - @ParameterObject DeptQuery queryParams + public Result> getDeptList( + DeptQuery queryParams ) { - List list = deptService.listDepartments(queryParams); + List list = deptService.getDeptList(queryParams); return Result.success(list); } @Operation(summary = "获取部门下拉选项") @GetMapping("/options") - public Result> listDeptOptions() { + public Result> getDeptOptions() { List