SwaggerConfig.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package com.ydtech.config;
  2. import com.ydtech.utils.StringUtils;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.core.annotation.Order;
  6. import springfox.documentation.builders.ApiInfoBuilder;
  7. import springfox.documentation.builders.ParameterBuilder;
  8. import springfox.documentation.builders.PathSelectors;
  9. import springfox.documentation.builders.RequestHandlerSelectors;
  10. import springfox.documentation.schema.ModelRef;
  11. import springfox.documentation.service.*;
  12. import springfox.documentation.spi.DocumentationType;
  13. import springfox.documentation.spi.service.contexts.SecurityContext;
  14. import springfox.documentation.spring.web.plugins.Docket;
  15. import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. @Configuration
  19. //@EnableSwagger2
  20. @EnableSwagger2WebMvc
  21. public class SwaggerConfig {
  22. @Bean(value = "adminApi")
  23. @Order(value = 1)
  24. public Docket adminApi() {
  25. return buildDocket("admin");
  26. }
  27. @Bean(value = "esmApi")
  28. @Order(value = 2)
  29. public Docket esmApi() {
  30. return buildDocket("esm");
  31. }
  32. @Bean(value = "fncApi")
  33. @Order(value = 3)
  34. public Docket fncApi() {
  35. return buildDocket("fnc");
  36. }
  37. @Bean(value = "insApi")
  38. @Order(value = 4)
  39. public Docket insApi() {
  40. return buildDocket("ins");
  41. }
  42. @Bean(value = "invApi")
  43. @Order(value = 4)
  44. public Docket invApi() {
  45. return buildDocket("inv","inv财务");
  46. }
  47. @Bean(value = "reportApi")
  48. @Order(value = 5)
  49. public Docket reportApi() {
  50. return buildDocket("report");
  51. }
  52. @Bean(value = "orderApi")
  53. @Order(value = 6)
  54. public Docket orderApi() {
  55. return buildDocket("order");
  56. }
  57. @Bean(value = "naiApi")
  58. @Order(value = 7)
  59. public Docket naiApi() {
  60. return buildDocket("nai");
  61. }
  62. @Bean(value = "protocolApi")
  63. @Order(value = 8)
  64. public Docket protocolApi() {
  65. return buildDocket("protocol");
  66. }
  67. @Bean(value = "protocolsApi")
  68. @Order(value = 8)
  69. public Docket protocolsApi() {
  70. return buildDocket("protocols");
  71. }
  72. @Bean(value = "demoApi")
  73. @Order(value = 9)
  74. public Docket baseDemoApi() {
  75. return buildDocket("demo","示例演示");
  76. }
  77. @Bean(value = "largescreenApi")
  78. @Order(value = 10)
  79. public Docket largescreenApi() {
  80. return buildDocket("largescreen","大屏接口");
  81. }
  82. private ApiInfo apiInfo() {
  83. return new ApiInfoBuilder()
  84. .title("晋掌柜 API 文档")
  85. .description("在线文档")
  86. .version("1.0")
  87. .build();
  88. }
  89. // private List<ApiKey> securitySchemes() {
  90. // List<ApiKey> apiKeys = new ArrayList<>();
  91. //
  92. // apiKeys.add(new ApiKey("Authorization", "Authorization", "header"));
  93. // return apiKeys;
  94. // }
  95. // private List<SecurityContext> securityContexts() {
  96. // List<SecurityContext> securityContexts = new ArrayList<>();
  97. // securityContexts.add(SecurityContext.builder()
  98. // .securityReferences(defaultAuth())
  99. // .forPaths(PathSelectors.regex("^(?!auth).*$")).build());
  100. // return securityContexts;
  101. // }
  102. //
  103. // private List<SecurityReference> defaultAuth() {
  104. // AuthorizationScope authorizationScope = new AuthorizationScope("global", "描述信息");
  105. // AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
  106. // authorizationScopes[0] = authorizationScope;
  107. // List<SecurityReference> securityReferences = new ArrayList<>();
  108. // securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
  109. // return securityReferences;
  110. // }
  111. /**
  112. * 全局参数
  113. *
  114. * @return List<Parameter>
  115. */
  116. private List<Parameter> parameters() {
  117. List<Parameter> params = new ArrayList<>();
  118. params.add(new ParameterBuilder()
  119. .name("Authorization")
  120. .description("认证令牌")
  121. .modelRef(new ModelRef("string"))
  122. .parameterType("header")
  123. .defaultValue("Bearer cb908125-ecb9-4abd-b4df-fd1d7ed3eb13")
  124. .required(false)
  125. .build());
  126. return params;
  127. }
  128. public Docket buildDocket(String basePackage){
  129. return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
  130. .select()
  131. .apis(RequestHandlerSelectors.basePackage("com.ydtech.modules." + basePackage))
  132. .paths(PathSelectors.any())
  133. .build()
  134. .groupName(basePackage)
  135. .globalOperationParameters(parameters())
  136. // // 安全上下文
  137. // .securitySchemes(securitySchemes())
  138. // .securityContexts(securityContexts());
  139. ;
  140. }
  141. public Docket buildDocket(String basePackage,String groupName){
  142. return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
  143. .select()
  144. .apis(RequestHandlerSelectors.basePackage("com.ydtech.modules." + basePackage))
  145. .paths(PathSelectors.any())
  146. .build()
  147. .groupName(groupName)
  148. .globalOperationParameters(parameters())
  149. // // 安全上下文
  150. // .securitySchemes(securitySchemes())
  151. // .securityContexts(securityContexts());
  152. ;
  153. }
  154. }