|  | @ -0,0 +1,152 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.care.config;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import org.springframework.context.annotation.Bean;
 | 
	
		
			
				|  |  | import org.springframework.context.annotation.Configuration;
 | 
	
		
			
				|  |  | 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.ApiInfo;
 | 
	
		
			
				|  |  | import springfox.documentation.service.Contact;
 | 
	
		
			
				|  |  | import springfox.documentation.service.Parameter;
 | 
	
		
			
				|  |  | import springfox.documentation.spi.DocumentationType;
 | 
	
		
			
				|  |  | import springfox.documentation.spring.web.plugins.Docket;
 | 
	
		
			
				|  |  | import springfox.documentation.swagger2.annotations.EnableSwagger2;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import static com.google.common.base.Predicates.or;
 | 
	
		
			
				|  |  | import static springfox.documentation.builders.PathSelectors.regex;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | @Configuration
 | 
	
		
			
				|  |  | @EnableSwagger2
 | 
	
		
			
				|  |  | public class SwaggerConfig {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public static final String API_VERSION = "v1.0";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     final String userAgentJson = "{\"id\":int,\"uid\":string,\"openid\":string,\"token\":string,\"lastUid\":string,\"platform\":int}";
 | 
	
		
			
				|  |  |     private List<Parameter> addUseragent() {
 | 
	
		
			
				|  |  |         ParameterBuilder tokenPar = new ParameterBuilder();
 | 
	
		
			
				|  |  |         List<Parameter> pars = new ArrayList<Parameter>();
 | 
	
		
			
				|  |  |         tokenPar.name("userAgent").description(userAgentJson).modelRef(new ModelRef("string")).parameterType("header").required(false).defaultValue("").build();
 | 
	
		
			
				|  |  |         pars.add(tokenPar.build());
 | 
	
		
			
				|  |  |         return pars;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Bean
 | 
	
		
			
				|  |  |     public Docket publicAPI() {
 | 
	
		
			
				|  |  |         List<Parameter> pars = addUseragent();
 | 
	
		
			
				|  |  |         return new Docket(DocumentationType.SWAGGER_2)
 | 
	
		
			
				|  |  |                 .groupName("Default")
 | 
	
		
			
				|  |  |                 .useDefaultResponseMessages(false)
 | 
	
		
			
				|  |  |                 .forCodeGeneration(true)
 | 
	
		
			
				|  |  |                 .pathMapping("/")
 | 
	
		
			
				|  |  |                 .select()
 | 
	
		
			
				|  |  |                 .apis(RequestHandlerSelectors.basePackage("com.yihu"))
 | 
	
		
			
				|  |  |                 .paths(PathSelectors.any())
 | 
	
		
			
				|  |  |                 .build()
 | 
	
		
			
				|  |  |                 .globalOperationParameters(pars)
 | 
	
		
			
				|  |  |                 .apiInfo(publicApiInfo());
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Bean
 | 
	
		
			
				|  |  |     public Docket privateAPI() {
 | 
	
		
			
				|  |  |         return new Docket(DocumentationType.SWAGGER_2)
 | 
	
		
			
				|  |  |                 .groupName("Private")
 | 
	
		
			
				|  |  |                 .useDefaultResponseMessages(false)
 | 
	
		
			
				|  |  |                 .forCodeGeneration(false)
 | 
	
		
			
				|  |  |                 .pathMapping("/")
 | 
	
		
			
				|  |  |                 .select()
 | 
	
		
			
				|  |  |                 .paths(or(regex("/archaius"),
 | 
	
		
			
				|  |  |                         regex("/loggers*"),
 | 
	
		
			
				|  |  |                         regex("/mappings"),
 | 
	
		
			
				|  |  |                         regex("/pause"),
 | 
	
		
			
				|  |  |                         regex("/beans"),
 | 
	
		
			
				|  |  |                         regex("/health"),
 | 
	
		
			
				|  |  |                         regex("/resume"),
 | 
	
		
			
				|  |  |                         regex("/heapdump"),
 | 
	
		
			
				|  |  |                         regex("/env*"),
 | 
	
		
			
				|  |  |                         regex("/shutdown"),
 | 
	
		
			
				|  |  |                         regex("/configprops"),
 | 
	
		
			
				|  |  |                         regex("/auditevents"),
 | 
	
		
			
				|  |  |                         regex("/restart"),
 | 
	
		
			
				|  |  |                         regex("/trace"),
 | 
	
		
			
				|  |  |                         regex("/metrics*"),
 | 
	
		
			
				|  |  |                         regex("/refresh"),
 | 
	
		
			
				|  |  |                         regex("/dump"),
 | 
	
		
			
				|  |  |                         regex("/autoconfig"),
 | 
	
		
			
				|  |  |                         regex("/info"),
 | 
	
		
			
				|  |  |                         regex("/features")))
 | 
	
		
			
				|  |  |                 .build()
 | 
	
		
			
				|  |  |                 .apiInfo(privateAPIInfo());
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Bean
 | 
	
		
			
				|  |  |     public Docket legacyAPI(){
 | 
	
		
			
				|  |  |         return new Docket(DocumentationType.SWAGGER_2)
 | 
	
		
			
				|  |  |                 .groupName("Legacy")
 | 
	
		
			
				|  |  |                 .useDefaultResponseMessages(false)
 | 
	
		
			
				|  |  |                 .forCodeGeneration(false)
 | 
	
		
			
				|  |  |                 .pathMapping("/")
 | 
	
		
			
				|  |  |                 .select()
 | 
	
		
			
				|  |  |                 .paths(or(regex("/legacy/rest/v.*")))
 | 
	
		
			
				|  |  |                 .build()
 | 
	
		
			
				|  |  |                 .apiInfo(legacyApiInfo());
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 测试client信息。
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     /*@Bean
 | 
	
		
			
				|  |  |     SecurityConfiguration security() {
 | 
	
		
			
				|  |  |         return new SecurityConfiguration(
 | 
	
		
			
				|  |  |                 "ehr-browser",
 | 
	
		
			
				|  |  |                 "secret123",
 | 
	
		
			
				|  |  |                 "ROLE_CLIENT",
 | 
	
		
			
				|  |  |                 "test-app",
 | 
	
		
			
				|  |  |                 "ac04-47ec-9a9a-7c47bbcbbbd1");
 | 
	
		
			
				|  |  |     }*/
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private ApiInfo publicApiInfo() {
 | 
	
		
			
				|  |  |         return new ApiInfoBuilder()
 | 
	
		
			
				|  |  |                 .title("众健信联平台API")
 | 
	
		
			
				|  |  |                 .description("众健信联平台API,提供后端基础数据接口")
 | 
	
		
			
				|  |  |                 .version(API_VERSION)
 | 
	
		
			
				|  |  |                 .termsOfServiceUrl("https://www.yihu.com")
 | 
	
		
			
				|  |  |                 .contact(new Contact("Jkzl Xiamen R & D Center Platform Development.", "https://www.yihu.com", "jzkl@jkzl.com"))
 | 
	
		
			
				|  |  |                 .license("The Apache License, Version 2.0")
 | 
	
		
			
				|  |  |                 .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
 | 
	
		
			
				|  |  |                 .build();
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private ApiInfo privateAPIInfo() {
 | 
	
		
			
				|  |  |         return new ApiInfoBuilder()
 | 
	
		
			
				|  |  |                 .title("众健信联平台API")
 | 
	
		
			
				|  |  |                 .description("众健信联平台API,提供微服务监控接口")
 | 
	
		
			
				|  |  |                 .version(API_VERSION)
 | 
	
		
			
				|  |  |                 .termsOfServiceUrl("https://www.yihu.com")
 | 
	
		
			
				|  |  |                 .contact(new Contact("Jkzl Xiamen R & D Center Platform Development.", "https://www.yihu.com", "jzkl@jkzl.com"))
 | 
	
		
			
				|  |  |                 .license("The Apache License, Version 2.0")
 | 
	
		
			
				|  |  |                 .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
 | 
	
		
			
				|  |  |                 .build();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private ApiInfo legacyApiInfo() {
 | 
	
		
			
				|  |  |         return new ApiInfoBuilder()
 | 
	
		
			
				|  |  |                 .title("众健信联平台API")
 | 
	
		
			
				|  |  |                 .description("众健信联平台API,提供遗留版本后端基础数据接口")
 | 
	
		
			
				|  |  |                 .version(API_VERSION)
 | 
	
		
			
				|  |  |                 .termsOfServiceUrl("https://www.yihu.com")
 | 
	
		
			
				|  |  |                 .contact(new Contact("Jkzl Xiamen R & D Center Platform Development.", "https://www.yihu.com", "jzkl@jkzl.com"))
 | 
	
		
			
				|  |  |                 .license("The Apache License, Version 2.0")
 | 
	
		
			
				|  |  |                 .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
 | 
	
		
			
				|  |  |                 .build();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |