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