From defbb6a93b3f3f50ab08bf0549ad77d8d4deca82 Mon Sep 17 00:00:00 2001 From: haoxr <1490493387@qq.com> Date: Sat, 11 Mar 2023 10:57:24 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=A1=B9=E7=9B=AE=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=87=8D=E6=9E=84=EF=BC=8C=E4=BC=98=E5=8C=96=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=B3=BB=E7=BB=9F=E4=BB=A3=E7=A0=81=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../system/common/enums/GenderEnum.java | 2 + .../youlai/system/config/SwaggerConfig.java | 83 +++++---- .../system/controller/FileController.java | 11 +- .../system/controller/SysDeptController.java | 21 ++- .../system/controller/SysDictController.java | 134 ++++++++++++++ .../controller/SysDictItemController.java | 71 -------- .../controller/SysDictTypeController.java | 77 -------- .../system/controller/SysMenuController.java | 60 +++---- .../system/controller/SysRoleController.java | 58 +++--- .../system/controller/SysUserController.java | 59 ++++--- ...tItemConverter.java => DictConverter.java} | 14 +- .../system/converter/MenuConverter.java | 8 +- .../system/converter/RoleConverter.java | 6 +- ...DictItemMapper.java => SysDictMapper.java} | 4 +- .../youlai/system/mapper/SysUserMapper.java | 4 +- .../youlai/system/pojo/dto/LoginResult.java | 3 + .../entity/{SysDictItem.java => SysDict.java} | 5 +- .../system/pojo/entity/SysDictType.java | 7 +- .../youlai/system/pojo/entity/SysMenu.java | 11 +- .../form/{DictItemForm.java => DictForm.java} | 17 +- .../youlai/system/pojo/form/DictTypeForm.java | 7 +- .../com/youlai/system/pojo/form/MenuForm.java | 44 +++++ .../system/pojo/form/RolePermsForm.java | 31 ---- .../system/pojo/form/RoleResourceForm.java | 20 --- .../com/youlai/system/pojo/form/UserForm.java | 2 +- ...tItemPageQuery.java => DictPageQuery.java} | 3 +- .../youlai/system/pojo/vo/DictItemPageVO.java | 24 --- .../com/youlai/system/pojo/vo/DictPageVO.java | 23 +++ .../youlai/system/pojo/vo/DictTypePageVO.java | 4 +- .../com/youlai/system/pojo/vo/FileInfoVO.java | 4 + .../youlai/system/pojo/vo/MenuDetailVO.java | 30 ---- .../com/youlai/system/pojo/vo/MenuVO.java | 11 ++ .../com/youlai/system/pojo/vo/Option.java | 1 + .../com/youlai/system/pojo/vo/ResourceVO.java | 24 --- .../com/youlai/system/pojo/vo/RolePageVO.java | 3 +- .../com/youlai/system/pojo/vo/RouteVO.java | 22 ++- .../youlai/system/pojo/vo/UserDetailVO.java | 49 ------ .../com/youlai/system/pojo/vo/UserPageVO.java | 2 +- .../system/service/SysDictItemService.java | 54 ------ .../youlai/system/service/SysDictService.java | 68 +++++++ .../system/service/SysDictTypeService.java | 4 +- .../youlai/system/service/SysRoleService.java | 26 ++- .../youlai/system/service/SysUserService.java | 2 +- .../service/impl/SysDeptServiceImpl.java | 24 +-- .../service/impl/SysDictItemServiceImpl.java | 142 --------------- .../service/impl/SysDictServiceImpl.java | 166 ++++++++++++++++++ .../service/impl/SysDictTypeServiceImpl.java | 26 +-- .../service/impl/SysRoleServiceImpl.java | 34 ++-- .../service/impl/SysUserServiceImpl.java | 4 +- ...ysDictItemMapper.xml => SysDictMapper.xml} | 2 +- src/main/resources/mapper/SysUserMapper.xml | 2 +- 52 files changed, 739 insertions(+), 776 deletions(-) create mode 100644 src/main/java/com/youlai/system/controller/SysDictController.java delete mode 100644 src/main/java/com/youlai/system/controller/SysDictItemController.java delete mode 100644 src/main/java/com/youlai/system/controller/SysDictTypeController.java rename src/main/java/com/youlai/system/converter/{DictItemConverter.java => DictConverter.java} (50%) rename src/main/java/com/youlai/system/mapper/{SysDictItemMapper.java => SysDictMapper.java} (56%) rename src/main/java/com/youlai/system/pojo/entity/{SysDictItem.java => SysDict.java} (90%) rename src/main/java/com/youlai/system/pojo/form/{DictItemForm.java => DictForm.java} (51%) create mode 100644 src/main/java/com/youlai/system/pojo/form/MenuForm.java delete mode 100644 src/main/java/com/youlai/system/pojo/form/RolePermsForm.java delete mode 100644 src/main/java/com/youlai/system/pojo/form/RoleResourceForm.java rename src/main/java/com/youlai/system/pojo/query/{DictItemPageQuery.java => DictPageQuery.java} (78%) delete mode 100644 src/main/java/com/youlai/system/pojo/vo/DictItemPageVO.java create mode 100644 src/main/java/com/youlai/system/pojo/vo/DictPageVO.java delete mode 100644 src/main/java/com/youlai/system/pojo/vo/MenuDetailVO.java delete mode 100644 src/main/java/com/youlai/system/pojo/vo/ResourceVO.java delete mode 100644 src/main/java/com/youlai/system/pojo/vo/UserDetailVO.java delete mode 100644 src/main/java/com/youlai/system/service/SysDictItemService.java create mode 100644 src/main/java/com/youlai/system/service/SysDictService.java delete mode 100644 src/main/java/com/youlai/system/service/impl/SysDictItemServiceImpl.java create mode 100644 src/main/java/com/youlai/system/service/impl/SysDictServiceImpl.java rename src/main/resources/mapper/{SysDictItemMapper.xml => SysDictMapper.xml} (73%) diff --git a/README.md b/README.md index 49fbdd04..2b6fa9ee 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ |作用|示例| |---|---| -|分页查询|listUserPages| +|分页查询|getUserPage| |列表查询|listUsers| |单个查询|getUser/getUserDetail/getUserInfo ...| |新增|saveUser| diff --git a/src/main/java/com/youlai/system/common/enums/GenderEnum.java b/src/main/java/com/youlai/system/common/enums/GenderEnum.java index 0b294975..7fb31599 100644 --- a/src/main/java/com/youlai/system/common/enums/GenderEnum.java +++ b/src/main/java/com/youlai/system/common/enums/GenderEnum.java @@ -1,6 +1,7 @@ package com.youlai.system.common.enums; import com.youlai.system.common.base.IBaseEnum; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; /** @@ -9,6 +10,7 @@ import lombok.Getter; * @author haoxr * @date 2022/10/14 */ +@Schema(enumAsRef = true) public enum GenderEnum implements IBaseEnum { MALE(1, "男"), diff --git a/src/main/java/com/youlai/system/config/SwaggerConfig.java b/src/main/java/com/youlai/system/config/SwaggerConfig.java index aa444e03..5f925405 100644 --- a/src/main/java/com/youlai/system/config/SwaggerConfig.java +++ b/src/main/java/com/youlai/system/config/SwaggerConfig.java @@ -1,18 +1,23 @@ package com.youlai.system.config; -import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.*; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; -import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.security.SecurityScheme; -import org.springdoc.core.customizers.OperationCustomizer; +import org.springdoc.core.customizers.OpenApiCustomizer; import org.springdoc.core.models.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpHeaders; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; /** - * 接口文档配置 + * Swagger 配置 + *

+ * Spring Doc FAQ: https://springdoc.org/#faq * * @author haoxr * @date 2023/2/17 @@ -20,55 +25,47 @@ import org.springframework.http.HttpHeaders; @Configuration public class SwaggerConfig { + /** + * 接口信息 + */ + @Bean + public OpenAPI apiInfo() { + return new OpenAPI() + .components(new Components() + .addSecuritySchemes("Authorization", + new SecurityScheme().type(SecurityScheme.Type.HTTP) + .scheme("bearer").bearerFormat("JWT") + ) + ) + .info(new Info() + .title("youlai-boot 接口文档") + .version("2.0.0") + .description("接口文档") + .license(new License().name("Apache 2.0") + .url("https://www.youlai.tech")) + ); + } /** * 接口分组-系统接口 * - * @param operationCustomizer * @return */ @Bean - public GroupedOpenApi systemApi(OperationCustomizer operationCustomizer) { - return GroupedOpenApi.builder() - .group("系统接口") - .packagesToScan("com.youlai.system.controller") - .pathsToMatch( "/api/**") - .addOperationCustomizer(operationCustomizer) + public GroupedOpenApi groupedOpenApi() { + String paths[] = {"/api/**"}; + + String packagesToScan[] = {"com.youlai.system.controller"}; + return GroupedOpenApi.builder().group("系统接口") + .packagesToScan(packagesToScan) + .pathsToMatch(paths) .build(); } - /** - * 鉴权 - * - * @return - */ - @Bean - public OperationCustomizer operationCustomizer() { - return (operation, handlerMethod) -> operation.addParametersItem( - new Parameter() - .in(SecurityScheme.In.HEADER.toString()) - .name(HttpHeaders.AUTHORIZATION) - .required(true) - .description("token 校验")); - } - /** - * 接口信息 - * - * @return - */ - @Bean - public OpenAPI apiInfo() { - return new OpenAPI().info( - new Info() - .title("youlai-boot接口文档") - .version("0.0.1") - .description("youlai-boot接口文档") - .license(new License().name("Apache 2.0") - .url("https://www.youlai.tech") - ) - ); - } + + + } diff --git a/src/main/java/com/youlai/system/controller/FileController.java b/src/main/java/com/youlai/system/controller/FileController.java index c6a0fefb..08043cb1 100644 --- a/src/main/java/com/youlai/system/controller/FileController.java +++ b/src/main/java/com/youlai/system/controller/FileController.java @@ -4,6 +4,7 @@ import com.youlai.system.common.result.Result; import com.youlai.system.pojo.vo.FileInfoVO; import com.youlai.system.service.FileService; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; @@ -11,7 +12,7 @@ import lombok.SneakyThrows; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -@Tag(name = "文件接口") +@Tag(name = "08.文件接口") @RestController @RequestMapping("/api/v1/files") @RequiredArgsConstructor @@ -20,19 +21,19 @@ public class FileController { private final FileService fileService; @PostMapping - @Operation(summary = "文件上传") + @Operation(summary = "文件上传", security = {@SecurityRequirement(name = "Authorization")}) public Result uploadFile( - @Parameter(name ="表单文件对象") @RequestParam(value = "file") MultipartFile file + @Parameter(description ="表单文件对象") @RequestParam(value = "file") MultipartFile file ) { FileInfoVO fileInfoVO = fileService.uploadFile(file); return Result.success(fileInfoVO); } @DeleteMapping - @Operation(summary = "文件删除") + @Operation(summary = "文件删除", security = {@SecurityRequirement(name = "Authorization")}) @SneakyThrows public Result deleteFile( - @Parameter(name ="文件路径") @RequestParam String filePath + @Parameter(description ="文件路径") @RequestParam String filePath ) { boolean result = fileService.deleteFile(filePath); return Result.judge(result); diff --git a/src/main/java/com/youlai/system/controller/SysDeptController.java b/src/main/java/com/youlai/system/controller/SysDeptController.java index 9706fa80..a48e0d08 100644 --- a/src/main/java/com/youlai/system/controller/SysDeptController.java +++ b/src/main/java/com/youlai/system/controller/SysDeptController.java @@ -7,6 +7,7 @@ import com.youlai.system.pojo.query.DeptQuery; import com.youlai.system.pojo.vo.DeptVO; import com.youlai.system.service.SysDeptService; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; @@ -22,15 +23,13 @@ import java.util.List; * @author haoxr * @date 2020/11/6 */ -@Tag(name = "部门接口") +@Tag(name = "05.部门接口") @RestController @RequestMapping("/api/v1/dept") @RequiredArgsConstructor public class SysDeptController { - private final SysDeptService deptService; - - @Operation(summary = "获取部门列表") + @Operation(summary = "获取部门列表", security = {@SecurityRequirement(name = "Authorization")}) @GetMapping public Result> listDepartments( @ParameterObject DeptQuery queryParams @@ -39,23 +38,23 @@ public class SysDeptController { return Result.success(list); } - @Operation(summary = "获取部门下拉选项") + @Operation(summary = "获取部门下拉选项", security = {@SecurityRequirement(name = "Authorization")}) @GetMapping("/options") public Result> listDeptOptions() { List