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
+
+