| package com.zy.common.config; | 
|   | 
| import com.zy.common.properties.SwaggerProperties; | 
| import com.core.common.BaseRes; | 
| import com.core.common.Cools; | 
| import com.core.common.R; | 
| import io.swagger.annotations.ApiOperation; | 
| import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | 
| import org.springframework.context.annotation.Bean; | 
| import org.springframework.context.annotation.Configuration; | 
| import org.springframework.web.bind.annotation.RequestMethod; | 
| import springfox.documentation.builders.ApiInfoBuilder; | 
| import springfox.documentation.builders.PathSelectors; | 
| import springfox.documentation.builders.RequestHandlerSelectors; | 
| import springfox.documentation.builders.ResponseMessageBuilder; | 
| import springfox.documentation.schema.ModelRef; | 
| import springfox.documentation.service.ApiInfo; | 
| import springfox.documentation.service.Contact; | 
| import springfox.documentation.service.ResponseMessage; | 
| 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.Arrays; | 
| import java.util.List; | 
|   | 
| /** | 
|  * Created by vincent on 2020-04-26 | 
|  */ | 
| @EnableSwagger2 | 
| @Configuration | 
| @ConditionalOnProperty(name = "swagger.enable", havingValue = "true") | 
| public class SwaggerConfig { | 
|   | 
|     /** | 
|      * Reservation api docket. | 
|      * | 
|      * @return the docket | 
|      */ | 
|     @Bean | 
|     public Docket createRestApi() { | 
|         List<ResponseMessage> responseMessageList = new ArrayList<>(); | 
|         Arrays.asList(Cools.getAllFields(BaseRes.class)).forEach(field -> { | 
|             try { | 
|                 R r = R.parse(String.valueOf(field.get(field.getName()))); | 
|                 responseMessageList.add( | 
|                         new ResponseMessageBuilder() | 
|                                 .code(Integer.parseInt(String.valueOf(r.get("code")))) | 
|                                 .message(String.valueOf(r.get("msg"))) | 
|                                 .responseModel(new ModelRef(String.valueOf(r.get("msg")))) | 
|                                 .build() | 
|                 ); | 
|             }catch (IllegalAccessException ignore){} | 
|         }); | 
|   | 
|         return new Docket(DocumentationType.SWAGGER_2) | 
|                 .apiInfo(apiInfo()) | 
|                 // 状态码 | 
|                 .useDefaultResponseMessages(false) | 
|                 .globalResponseMessage(RequestMethod.GET, responseMessageList) | 
|                 .globalResponseMessage(RequestMethod.POST, responseMessageList) | 
|                 .globalResponseMessage(RequestMethod.PUT, responseMessageList) | 
|                 .globalResponseMessage(RequestMethod.DELETE, responseMessageList) | 
|                 .select() | 
|                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) | 
|                 .paths(PathSelectors.any()) | 
|                 .build() | 
|                 .enable(true); | 
|     } | 
|   | 
|     private ApiInfo apiInfo() { | 
|         SwaggerProperties swagger = new SwaggerProperties(); | 
|         return new ApiInfoBuilder() | 
|                 .title(swagger.getTitle()) | 
|                 .description(swagger.getDescription()) | 
|                 .version(swagger.getVersion()) | 
|                 .license(swagger.getLicense()) | 
|                 .licenseUrl(swagger.getLicenseUrl()) | 
|                 .contact(new Contact(swagger.getContactName(), swagger.getContactUrl(), swagger.getContactEmail())) | 
|                 .build(); | 
|     } | 
|   | 
|   | 
| } |