diff --git a/jeepay-core/pom.xml b/jeepay-core/pom.xml index b801aa6..e409290 100644 --- a/jeepay-core/pom.xml +++ b/jeepay-core/pom.xml @@ -85,6 +85,11 @@ jaxb-api + + + io.swagger + swagger-annotations + diff --git a/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/ApiRes.java b/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/ApiRes.java index 0394b2e..11535cd 100644 --- a/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/ApiRes.java +++ b/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/ApiRes.java @@ -24,6 +24,8 @@ import com.jeequan.jeepay.core.utils.JsonKit; import lombok.AllArgsConstructor; import lombok.Data; +import java.io.Serializable; + /* * 接口返回对象 * @@ -33,7 +35,7 @@ import lombok.Data; */ @Data @AllArgsConstructor -public class ApiRes { +public class ApiRes implements Serializable { /** 业务响应码 **/ private Integer code; @@ -42,7 +44,7 @@ public class ApiRes { private String msg; /** 数据对象 **/ - private Object data; + private T data; /** 签名值 **/ private String sign; @@ -58,7 +60,7 @@ public class ApiRes { } /** 业务处理成功 **/ - public static ApiRes ok(Object data){ + public static ApiRes ok(T data){ return new ApiRes(ApiCodeEnum.SUCCESS.getCode(), ApiCodeEnum.SUCCESS.getMsg(), data, null); } diff --git a/jeepay-manager/pom.xml b/jeepay-manager/pom.xml index 2305493..afa6b62 100644 --- a/jeepay-manager/pom.xml +++ b/jeepay-manager/pom.xml @@ -100,6 +100,12 @@ jeepay-sdk-java + + + com.github.xiaoymin + knife4j-openapi2-spring-boot-starter + + diff --git a/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/bootstrap/JeepayMgrApplication.java b/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/bootstrap/JeepayMgrApplication.java index 0ccdacd..2a1da2f 100644 --- a/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/bootstrap/JeepayMgrApplication.java +++ b/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/bootstrap/JeepayMgrApplication.java @@ -18,6 +18,7 @@ package com.jeequan.jeepay.mgr.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,23 @@ public class JeepayMgrApplication { return paginationInterceptor; } + + + /** + * 功能描述: API访问地址: http://localhost:9217/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-manager/src/main/java/com/jeequan/jeepay/mgr/secruity/WebSecurityConfig.java b/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/secruity/WebSecurityConfig.java index 5b8d8ec..56e1592 100644 --- a/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/secruity/WebSecurityConfig.java +++ b/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/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-manager/src/main/java/com/jeequan/jeepay/mgr/web/ApiResBodyAdvice.java b/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/web/ApiResBodyAdvice.java index 1fec749..7c0b5be 100644 --- a/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/web/ApiResBodyAdvice.java +++ b/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/web/ApiResBodyAdvice.java @@ -16,6 +16,7 @@ package com.jeequan.jeepay.mgr.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; @@ -33,9 +34,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; } diff --git a/pom.xml b/pom.xml index e67c6f4..e68e621 100644 --- a/pom.xml +++ b/pom.xml @@ -184,6 +184,21 @@ ${jaxb-api.version} + + + + com.github.xiaoymin + knife4j-openapi2-spring-boot-starter + 4.1.0 + + + + + io.swagger + swagger-annotations + 1.6.6 + +