Răsfoiți Sursa

Swagger增强接入

cup 3 ani în urmă
părinte
comite
0c6d9bd364

+ 7 - 13
mp-admin/pom.xml

@@ -17,6 +17,13 @@
 
     <dependencies>
 
+        <!-- swagger 增强-->
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-spring-boot-starter</artifactId>
+            <version>2.0.8</version>
+        </dependency>
+
         <!-- spring-boot-devtools -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -24,19 +31,6 @@
             <optional>true</optional> <!-- 表示依赖不会传递 -->
         </dependency>
 
-        <!-- swagger3-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-boot-starter</artifactId>
-        </dependency>
-
-        <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-models</artifactId>
-            <version>1.6.2</version>
-        </dependency>
-
          <!-- Mysql驱动包 -->
         <dependency>
             <groupId>mysql</groupId>

+ 6 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketController.java

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
+import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.TicketAwardsPrize;
 import com.qs.mp.admin.domain.TicketBox;
@@ -242,6 +244,10 @@ public class UserTicketController extends BaseApiController {
 
   @PostMapping("/ticket/hitPrizeBarrage")
   @ApiOperation(value = "中奖弹幕", notes = "获取最近中奖的 20-22 条信息")
+  @DynamicResponseParameters(properties = {
+    @DynamicParameter(name = "listOne", value = "列表 1",required = true, dataTypeClass = TicketHitPrizeBarrageVO.class),
+    @DynamicParameter(name = "listTwo", value = "列表 2",required = true, dataTypeClass = TicketHitPrizeBarrageVO.class)
+  })
   public AjaxResult hitPrizeBarrage() {
 
     // 获取用户 id

+ 92 - 49
mp-admin/src/main/java/com/qs/mp/web/core/config/SwaggerConfig.java

@@ -21,6 +21,7 @@ import springfox.documentation.service.SecurityScheme;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spi.service.contexts.SecurityContext;
 import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
 
 /**
  * Swagger2的接口配置
@@ -28,6 +29,7 @@ import springfox.documentation.spring.web.plugins.Docket;
  * @author ygp
  */
 @Configuration
+@EnableSwagger2WebMvc
 public class SwaggerConfig
 {
     /** 系统基础配置 */
@@ -42,68 +44,109 @@ public class SwaggerConfig
     @Value("${swagger.pathMapping}")
     private String pathMapping;
 
-    /**
-     * 创建API
-     */
+
+
     @Bean
-    public Docket createRestApi()
-    {
-        return new Docket(DocumentationType.OAS_30)
-                // 是否启用Swagger
+    public Docket defaultApi1() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .enable(enabled)
+                .apiInfo(apiInfo())
+                .groupName("管理端接口")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.qs.mp.web.controller.api.admin"))
+                .paths(PathSelectors.any())
+                .build();
+
+    }
+
+    @Bean
+    public Docket defaultApi2() {
+        return new Docket(DocumentationType.SWAGGER_2)
                 .enable(enabled)
-                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
                 .apiInfo(apiInfo())
-                // 设置哪些接口暴露给Swagger展示
+                .groupName("用户端接口")
                 .select()
-                // 扫描所有有注解的api,用这种方式更灵活
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                // 扫描指定包中的swagger注解
-                // .apis(RequestHandlerSelectors.basePackage("com.qs.mp.project.tool.swagger"))
-                // 扫描所有 .apis(RequestHandlerSelectors.any())
+                .apis(RequestHandlerSelectors.basePackage("com.qs.mp.web.controller.api.user"))
                 .paths(PathSelectors.any())
-                .build()
-                /* 设置安全模式,swagger可以设置访问token */
-                .securitySchemes(securitySchemes())
-                .securityContexts(securityContexts())
-                .pathMapping(pathMapping);
+                .build();
+
     }
 
+    @Bean
+    public Docket defaultApi3() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .enable(enabled)
+                .apiInfo(apiInfo())
+                .groupName("渠道端接口")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.qs.mp.web.controller.api.channel"))
+                .paths(PathSelectors.any())
+                .build();
+
+    }
+
+
+
     /**
-     * 安全模式,这里指定token通过Authorization头请求头传递
+     * 创建API
      */
-    private List<SecurityScheme> securitySchemes()
-    {
-        List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
-        apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue()));
-        return apiKeyList;
-    }
+//    @Bean
+//    public Docket createRestApi()
+//    {
+//        return new Docket(DocumentationType.SWAGGER_2)
+//                // 是否启用Swagger
+//                .enable(enabled)
+//                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
+//                .apiInfo(apiInfo())
+//                // 设置哪些接口暴露给Swagger展示
+//                .select()
+//                // 扫描所有有注解的api,用这种方式更灵活
+//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+//                // 扫描指定包中的swagger注解
+//                // .apis(RequestHandlerSelectors.basePackage("com.qs.mp.project.tool.swagger"))
+//                // 扫描所有 .apis(RequestHandlerSelectors.any())
+//                .paths(PathSelectors.any())
+//                .build()
+//
+//                .pathMapping(pathMapping);
+//    }
 
     /**
-     * 安全上下文
+     * 安全模式,这里指定token通过Authorization头请求头传递
      */
-    private List<SecurityContext> securityContexts()
-    {
-        List<SecurityContext> securityContexts = new ArrayList<>();
-        securityContexts.add(
-                SecurityContext.builder()
-                        .securityReferences(defaultAuth())
-                        .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
-                        .build());
-        return securityContexts;
-    }
+//    private List<SecurityScheme> securitySchemes()
+//    {
+//        List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
+//        apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue()));
+//        return apiKeyList;
+//    }
 
     /**
-     * 默认的安全上引用
+     * 安全上下文
      */
-    private List<SecurityReference> defaultAuth()
-    {
-        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
-        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
-        authorizationScopes[0] = authorizationScope;
-        List<SecurityReference> securityReferences = new ArrayList<>();
-        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
-        return securityReferences;
-    }
+//    private List<SecurityContext> securityContexts()
+//    {
+//        List<SecurityContext> securityContexts = new ArrayList<>();
+//        securityContexts.add(
+//                SecurityContext.builder()
+//                        .securityReferences(defaultAuth())
+//                        .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
+//                        .build());
+//        return securityContexts;
+//    }
+//
+//    /**
+//     * 默认的安全上引用
+//     */
+//    private List<SecurityReference> defaultAuth()
+//    {
+//        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+//        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+//        authorizationScopes[0] = authorizationScope;
+//        List<SecurityReference> securityReferences = new ArrayList<>();
+//        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
+//        return securityReferences;
+//    }
 
     /**
      * 添加摘要信息
@@ -113,9 +156,9 @@ public class SwaggerConfig
         // 用ApiInfoBuilder进行定制
         return new ApiInfoBuilder()
                 // 设置标题
-                .title("标题:旺铺管家_接口文档")
+                .title("标题:盲票_接口文档")
                 // 描述
-                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
+                .description("描述:用于管理盲票各端接口信息...")
                 // 作者信息
                 .contact(new Contact(mpConfig.getName(), null, null))
                 // 版本

+ 3 - 1
mp-admin/src/main/resources/application.yml

@@ -87,7 +87,9 @@ swagger:
   # 是否开启swagger
   enabled: true
   # 请求前缀
-  pathMapping: /dev-api
+  pathMapping: /
+knife4j:
+  enable: true
 
 # 防止XSS攻击
 xss:

+ 7 - 13
mp-common/pom.xml

@@ -18,11 +18,17 @@
      <properties>
         <hutool.version>5.3.1</hutool.version>
         <lombok.version>1.18.10</lombok.version>
-         <swagger.version>3.0.0</swagger.version>
     </properties>
 
     <dependencies>
 
+        <!-- swagger 增强-->
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-spring-boot-starter</artifactId>
+            <version>2.0.8</version>
+        </dependency>
+
         <!-- Spring框架基本的核心工具 -->
         <dependency>
             <groupId>org.springframework</groupId>
@@ -210,18 +216,6 @@
            <scope>compile</scope>
         </dependency>
 
-         <!-- Swagger3依赖 -->
-         <dependency>
-             <groupId>io.springfox</groupId>
-             <artifactId>springfox-boot-starter</artifactId>
-             <version>${swagger.version}</version>
-             <exclusions>
-                 <exclusion>
-                     <groupId>io.swagger</groupId>
-                     <artifactId>swagger-models</artifactId>
-                 </exclusion>
-             </exclusions>
-         </dependency>
 
     </dependencies>
 

+ 0 - 13
pom.xml

@@ -20,7 +20,6 @@
         <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
         <druid.version>1.2.6</druid.version>
         <bitwalker.version>1.21</bitwalker.version>
-        <swagger.version>3.0.0</swagger.version>
         <orika.version>1.5.4</orika.version>
 		    <kaptcha.version>2.3.2</kaptcha.version>
 		    <mybatis-spring-boot.version>2.1.4</mybatis-spring-boot.version>
@@ -147,18 +146,6 @@
                 <artifactId>orika-core</artifactId>
                 <version>${orika.version}</version>
             </dependency>
-            <!-- Swagger3依赖 -->
-            <dependency>
-                <groupId>io.springfox</groupId>
-                <artifactId>springfox-boot-starter</artifactId>
-                <version>${swagger.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>io.swagger</groupId>
-                        <artifactId>swagger-models</artifactId>
-                    </exclusion>
-                </exclusions>
-            </dependency>
 
             <!-- io常用工具类 -->
             <dependency>