diff --git a/jeepay-merchant/pom.xml b/jeepay-merchant/pom.xml index cb7dbbb..e7959cf 100644 --- a/jeepay-merchant/pom.xml +++ b/jeepay-merchant/pom.xml @@ -106,6 +106,12 @@ spring-websocket + + + com.github.xiaoymin + knife4j-openapi2-spring-boot-starter + + diff --git a/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/bootstrap/JeepayMchApplication.java b/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/bootstrap/JeepayMchApplication.java index 0fd6656..1aeae00 100644 --- a/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/bootstrap/JeepayMchApplication.java +++ b/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/bootstrap/JeepayMchApplication.java @@ -18,6 +18,7 @@ package com.jeequan.jeepay.mch.bootstrap; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import io.swagger.annotations.ApiOperation; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -27,6 +28,11 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.scheduling.annotation.EnableScheduling; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; import java.util.Arrays; @@ -39,6 +45,7 @@ import java.util.Arrays; */ @SpringBootApplication @EnableScheduling +@EnableSwagger2WebMvc @MapperScan("com.jeequan.jeepay.service.mapper") //Mybatis mapper接口路径 @ComponentScan(basePackages = "com.jeequan.jeepay.*") //由于MainApplication没有在项目根目录, 需要配置basePackages属性使得成功扫描所有Spring组件; @Configuration @@ -81,4 +88,22 @@ public class JeepayMchApplication { return paginationInterceptor; } + + /** + * 功能描述: API访问地址: http://localhost:9218/doc.html + * + * @Return: springfox.documentation.spring.web.plugins.Docket + * @Author: terrfly + * @Date: 2023/6/13 15:04 + */ + @Bean(value = "dockerBean") + public Docket dockerBean() { + return new Docket(DocumentationType.SWAGGER_2) //指定使用Swagger2规范 + .apiInfo(new ApiInfoBuilder().version("1.0").build()) //描述字段支持Markdown语法 + .groupName("商户平台") //分组名称 + .select() // 配置: 如何扫描 + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) // 只扫描: ApiOperation 注解文档。 也支持配置包名、 路径等扫描模式。 + .build(); + } + } diff --git a/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/secruity/WebSecurityConfig.java b/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/secruity/WebSecurityConfig.java index 51dddfb..58d49a1 100644 --- a/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/secruity/WebSecurityConfig.java +++ b/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/secruity/WebSecurityConfig.java @@ -142,7 +142,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter{ "/**/*.mp4" //支持mp4格式的文件匿名访问 ) .antMatchers( - "/api/anon/**" //匿名访问接口 + "/api/anon/**", //匿名访问接口 + "/swagger-resources/**","/v2/api-docs/**" // swagger相关 ); } diff --git a/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/web/ApiResBodyAdvice.java b/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/web/ApiResBodyAdvice.java index ca4a8d6..a9f7a52 100644 --- a/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/web/ApiResBodyAdvice.java +++ b/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/web/ApiResBodyAdvice.java @@ -16,6 +16,7 @@ package com.jeequan.jeepay.mch.web; import com.jeequan.jeepay.core.utils.ApiResBodyAdviceKit; +import org.springframework.beans.factory.annotation.Value; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpRequest; @@ -34,9 +35,20 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; @ControllerAdvice public class ApiResBodyAdvice implements ResponseBodyAdvice { + /** 注入 是否开启 knife4j **/ + @Value("${knife4j.enable}") + private boolean knife4jEnable = false; + /** 判断哪些需要拦截 **/ @Override public boolean supports(MethodParameter returnType, Class converterType) { + + // springfox.documentation.swagger.web.ApiResourceController -- /swagger-resources + // springfox.documentation.swagger2.web.Swagger2ControllerWebMvc -- /v2/api-docs + if(knife4jEnable && returnType.getMethod().getDeclaringClass().getName().startsWith("springfox.documentation.swagger")){ + return false; + } + return true; }