package com.zy.crm.common.config; 
 | 
  
 | 
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 com.zy.crm.common.properties.SwaggerProperties; 
 | 
  
 | 
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(); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |