package zy.cloud.wms.common.config; import zy.cloud.wms.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 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(); } }