package com.ydtech.config; import com.ydtech.utils.StringUtils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.*; 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; import java.util.ArrayList; import java.util.List; @Configuration //@EnableSwagger2 @EnableSwagger2WebMvc public class SwaggerConfig { @Bean(value = "adminApi") @Order(value = 1) public Docket adminApi() { return buildDocket("admin"); } @Bean(value = "esmApi") @Order(value = 2) public Docket esmApi() { return buildDocket("esm"); } @Bean(value = "fncApi") @Order(value = 3) public Docket fncApi() { return buildDocket("fnc"); } @Bean(value = "insApi") @Order(value = 4) public Docket insApi() { return buildDocket("ins"); } @Bean(value = "invApi") @Order(value = 4) public Docket invApi() { return buildDocket("inv","inv财务"); } @Bean(value = "reportApi") @Order(value = 5) public Docket reportApi() { return buildDocket("report"); } @Bean(value = "orderApi") @Order(value = 6) public Docket orderApi() { return buildDocket("order"); } @Bean(value = "naiApi") @Order(value = 7) public Docket naiApi() { return buildDocket("nai"); } @Bean(value = "protocolApi") @Order(value = 8) public Docket protocolApi() { return buildDocket("protocol"); } @Bean(value = "protocolsApi") @Order(value = 8) public Docket protocolsApi() { return buildDocket("protocols"); } @Bean(value = "demoApi") @Order(value = 9) public Docket baseDemoApi() { return buildDocket("demo","示例演示"); } @Bean(value = "largescreenApi") @Order(value = 10) public Docket largescreenApi() { return buildDocket("largescreen","大屏接口"); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("晋掌柜 API 文档") .description("在线文档") .version("1.0") .build(); } // private List securitySchemes() { // List apiKeys = new ArrayList<>(); // // apiKeys.add(new ApiKey("Authorization", "Authorization", "header")); // return apiKeys; // } // private List securityContexts() { // List securityContexts = new ArrayList<>(); // securityContexts.add(SecurityContext.builder() // .securityReferences(defaultAuth()) // .forPaths(PathSelectors.regex("^(?!auth).*$")).build()); // return securityContexts; // } // // private List defaultAuth() { // AuthorizationScope authorizationScope = new AuthorizationScope("global", "描述信息"); // AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; // authorizationScopes[0] = authorizationScope; // List securityReferences = new ArrayList<>(); // securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); // return securityReferences; // } /** * 全局参数 * * @return List */ private List parameters() { List params = new ArrayList<>(); params.add(new ParameterBuilder() .name("Authorization") .description("认证令牌") .modelRef(new ModelRef("string")) .parameterType("header") .defaultValue("Bearer cb908125-ecb9-4abd-b4df-fd1d7ed3eb13") .required(false) .build()); return params; } public Docket buildDocket(String basePackage){ return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.ydtech.modules." + basePackage)) .paths(PathSelectors.any()) .build() .groupName(basePackage) .globalOperationParameters(parameters()) // // 安全上下文 // .securitySchemes(securitySchemes()) // .securityContexts(securityContexts()); ; } public Docket buildDocket(String basePackage,String groupName){ return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.ydtech.modules." + basePackage)) .paths(PathSelectors.any()) .build() .groupName(groupName) .globalOperationParameters(parameters()) // // 安全上下文 // .securitySchemes(securitySchemes()) // .securityContexts(securityContexts()); ; } }