diff --git a/changelog.md b/changelog.md
index 251584a7..20b59569 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,13 @@
# changelog
+## 1.13.6
+
+- 修复@RequestBody不能绑定问题
+
+## 1.13.5
+
+- 修复postJson下version获取不到问题
+
## 1.13.4
- 修复admin服务列表最后更新时间不显示问题
diff --git a/sop-admin/sop-admin-server/pom.xml b/sop-admin/sop-admin-server/pom.xml
index 340c5767..3975aeba 100644
--- a/sop-admin/sop-admin-server/pom.xml
+++ b/sop-admin/sop-admin-server/pom.xml
@@ -30,7 +30,7 @@
com.gitee.sop
sop-registry-api
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
diff --git a/sop-common/pom.xml b/sop-common/pom.xml
index b504064c..b72dd887 100644
--- a/sop-common/pom.xml
+++ b/sop-common/pom.xml
@@ -5,7 +5,7 @@
4.0.0
com.gitee.sop
sop-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
pom
diff --git a/sop-common/sop-gateway-common/pom.xml b/sop-common/sop-gateway-common/pom.xml
index 69d81f49..ab38b6f5 100644
--- a/sop-common/sop-gateway-common/pom.xml
+++ b/sop-common/sop-gateway-common/pom.xml
@@ -5,11 +5,11 @@
com.gitee.sop
sop-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
../pom.xml
sop-gateway-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
jar
sop-gateway-common
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/param/GatewayParamBuilder.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/param/GatewayParamBuilder.java
index be9f0b68..dcdbe855 100644
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/param/GatewayParamBuilder.java
+++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/param/GatewayParamBuilder.java
@@ -22,4 +22,9 @@ public class GatewayParamBuilder extends BaseParamBuilder {
public String getIP(ServerWebExchange ctx) {
return ctx.getRequest().getRemoteAddress().getAddress().getHostAddress();
}
+
+ @Override
+ public void setVersionInHeader(ServerWebExchange ctx, String headerName, String version) {
+ ctx.getRequest().getHeaders().add(headerName, version);
+ }
}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/BaseParamBuilder.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/BaseParamBuilder.java
index 36aa6458..daaddfac 100644
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/BaseParamBuilder.java
+++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/BaseParamBuilder.java
@@ -31,6 +31,14 @@ public abstract class BaseParamBuilder implements ParamBuilder {
*/
public abstract String getIP(T ctx);
+ /**
+ * 将版本号添加到header中
+ * @param ctx 请求request
+ * @param headerName headerName
+ * @param version 版本号
+ */
+ public abstract void setVersionInHeader(T ctx, String headerName, String version);
+
@Override
public ApiParam build(T ctx) {
ApiParam apiParam = this.newApiParam(ctx);
@@ -40,6 +48,7 @@ public abstract class BaseParamBuilder implements ParamBuilder {
}
this.initOtherProperty(apiParam);
apiParam.setIp(this.getIP(ctx));
+ this.setVersionInHeader(ctx, ParamNames.HEADER_VERSION_NAME, apiParam.fetchVersion());
return apiParam;
}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/ParamNames.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/ParamNames.java
index c375ee99..a1c65cbc 100644
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/ParamNames.java
+++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/ParamNames.java
@@ -45,5 +45,7 @@ public class ParamNames {
/** 返回sign名称 */
public static String RESPONSE_SIGN_NAME = "sign";
+ public static String HEADER_VERSION_NAME = "sop-version";
+
}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java
index 4307e7c6..cd0c58f8 100644
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java
+++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java
@@ -37,6 +37,7 @@ public abstract class BaseExecutorAdapter implements ResultExecutor
private static final ErrorMeta SUCCESS_META = ErrorEnum.SUCCESS.getErrorMeta();
private static final ErrorMeta ISP_UNKNOW_ERROR_META = ErrorEnum.ISP_UNKNOW_ERROR.getErrorMeta();
private static final ErrorMeta ISP_BIZ_ERROR = ErrorEnum.BIZ_ERROR.getErrorMeta();
+ private static final ErrorMeta ISV_MISSING_METHOD_META = ErrorEnum.ISV_MISSING_METHOD.getErrorMeta();
public static final String GATEWAY_CODE_NAME = "code";
public static final String GATEWAY_MSG_NAME = "msg";
@@ -90,6 +91,10 @@ public abstract class BaseExecutorAdapter implements ResultExecutor
responseData = JSON.parseObject(serviceResult);
responseData.put(GATEWAY_CODE_NAME, ISP_BIZ_ERROR.getCode());
responseData.put(GATEWAY_MSG_NAME, ISP_BIZ_ERROR.getError().getMsg());
+ } else if(responseStatus == HttpStatus.NOT_FOUND.value()) {
+ responseData = JSON.parseObject(serviceResult);
+ responseData.put(GATEWAY_CODE_NAME, ISV_MISSING_METHOD_META.getCode());
+ responseData.put(GATEWAY_MSG_NAME, ISV_MISSING_METHOD_META.getError().getCode());
} else {
this.storeError(request, ErrorType.UNKNOWN);
// 微服务端有可能返回500错误
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/param/ZuulParamBuilder.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/param/ZuulParamBuilder.java
index b219f8bf..c21f334f 100644
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/param/ZuulParamBuilder.java
+++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/param/ZuulParamBuilder.java
@@ -53,6 +53,11 @@ public class ZuulParamBuilder extends BaseParamBuilder {
return RequestUtil.getIP(ctx.getRequest());
}
+ @Override
+ public void setVersionInHeader(RequestContext ctx, String headerName, String version) {
+ ctx.addZuulRequestHeader(headerName, version);
+ }
+
@Override
protected ApiParam newApiParam(RequestContext ctx) {
ApiParam apiParam = super.newApiParam(ctx);
diff --git a/sop-common/sop-registry-api/pom.xml b/sop-common/sop-registry-api/pom.xml
index f3bfcbe7..90bac2f2 100644
--- a/sop-common/sop-registry-api/pom.xml
+++ b/sop-common/sop-registry-api/pom.xml
@@ -5,7 +5,7 @@
4.0.0
com.gitee.sop
sop-registry-api
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
UTF-8
diff --git a/sop-common/sop-service-common/pom.xml b/sop-common/sop-service-common/pom.xml
index 2be58d1f..2b409d4e 100644
--- a/sop-common/sop-service-common/pom.xml
+++ b/sop-common/sop-service-common/pom.xml
@@ -6,11 +6,11 @@
com.gitee.sop
sop-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
../pom.xml
sop-service-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
jar
sop-service-common
diff --git a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/bean/ParamNames.java b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/bean/ParamNames.java
index d717f627..d2e18d00 100644
--- a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/bean/ParamNames.java
+++ b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/bean/ParamNames.java
@@ -45,5 +45,7 @@ public class ParamNames {
/** 时间戳格式 */
public static String TIMESTAMP_PATTERN = "yyyy-MM-dd HH:mm:ss";
+ public static String HEADER_VERSION_NAME = "sop-version";
+
}
diff --git a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/AlipayServiceConfiguration.java b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/AlipayServiceConfiguration.java
index e35f9237..9525532b 100644
--- a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/AlipayServiceConfiguration.java
+++ b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/AlipayServiceConfiguration.java
@@ -3,11 +3,8 @@ package com.gitee.sop.servercommon.configuration;
import com.gitee.sop.servercommon.bean.ServiceConfig;
import com.gitee.sop.servercommon.param.SopHandlerMethodArgumentResolver;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
-import java.util.List;
-
/**
* 具备支付宝开放平台服务提供能力
* @author tanghc
@@ -22,13 +19,6 @@ public class AlipayServiceConfiguration extends BaseServiceConfiguration {
@Autowired
private RequestMappingHandlerAdapter requestMappingHandlerAdapter;
- @Override
- protected void addArgumentResolvers(List argumentResolvers) {
- super.addArgumentResolvers(argumentResolvers);
- SopHandlerMethodArgumentResolver sopHandlerMethodArgumentResolver = ServiceConfig.getInstance().getMethodArgumentResolver();
- argumentResolvers.add(sopHandlerMethodArgumentResolver);
- }
-
@Override
protected void doAfter() {
super.doAfter();
diff --git a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/mapping/ApiMappingRequestCondition.java b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/mapping/ApiMappingRequestCondition.java
index fddad83f..c64ecadf 100644
--- a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/mapping/ApiMappingRequestCondition.java
+++ b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/mapping/ApiMappingRequestCondition.java
@@ -15,7 +15,6 @@ import javax.servlet.http.HttpServletRequest;
@Slf4j
public class ApiMappingRequestCondition implements RequestCondition {
- public static final String UTF_8 = "UTF-8";
private String defaultVersion = ServiceConfig.getInstance().getDefaultVersion();
private ApiMappingInfo apiMappingInfo;
@@ -46,7 +45,10 @@ public class ApiMappingRequestCondition implements RequestCondition argumentResolversNew = new ArrayList<>(64);
+ // 先加自己
+ argumentResolversNew.add(this);
+ HandlerMethodArgumentResolver lastOne = null;
+ for (HandlerMethodArgumentResolver argumentResolver : Objects.requireNonNull(requestMappingHandlerAdapter.getArgumentResolvers())) {
+ // RequestResponseBodyMethodProcessor暂存起来,放在最后面
+ if (argumentResolver instanceof RequestResponseBodyMethodProcessor) {
+ lastOne = argumentResolver;
+ } else {
+ argumentResolversNew.add(argumentResolver);
+ }
+ }
+ if (lastOne != null) {
+ argumentResolversNew.add(lastOne);
+ }
+ this.requestMappingHandlerAdapter.setArgumentResolvers(argumentResolversNew);
}
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
- boolean hasAnnotation = methodParameter.getMethodAnnotation(ApiMapping.class) != null
- || methodParameter.getMethodAnnotation(ApiAbility.class) != null;
// 有注解
- return hasAnnotation;
+ return methodParameter.getMethodAnnotation(ApiMapping.class) != null
+ || methodParameter.getMethodAnnotation(ApiAbility.class) != null;
}
@Override
diff --git a/sop-example/sop-auth/pom.xml b/sop-example/sop-auth/pom.xml
index c16a2a0d..07e5753c 100644
--- a/sop-example/sop-auth/pom.xml
+++ b/sop-example/sop-auth/pom.xml
@@ -26,7 +26,7 @@
com.gitee.sop
sop-service-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
org.springframework.cloud
diff --git a/sop-example/sop-auth/src/test/java/com/gitee/sop/sopauth/RefreshTokenTest.java b/sop-example/sop-auth/src/test/java/com/gitee/sop/sopauth/RefreshTokenTest.java
index 199f50b5..9d4d8659 100644
--- a/sop-example/sop-auth/src/test/java/com/gitee/sop/sopauth/RefreshTokenTest.java
+++ b/sop-example/sop-auth/src/test/java/com/gitee/sop/sopauth/RefreshTokenTest.java
@@ -26,7 +26,7 @@ public class RefreshTokenTest extends TestCase {
OpenAuthTokenAppRequest request = new OpenAuthTokenAppRequest();
OpenAuthTokenAppModel model = new OpenAuthTokenAppModel();
model.setGrant_type("refresh_token");
- model.setRefresh_token("856faf8d77d3b985c1073557ce6ea724");
+ model.setRefresh_token("c9e4003c06fe59066eed73d64ea074ca");
request.setBizModel(model);
OpenAuthTokenAppResponse response = openClient.execute(request);
diff --git a/sop-example/sop-book/sop-book-web/pom.xml b/sop-example/sop-book/sop-book-web/pom.xml
index 5a528d17..07199579 100644
--- a/sop-example/sop-book/sop-book-web/pom.xml
+++ b/sop-example/sop-book/sop-book-web/pom.xml
@@ -24,7 +24,7 @@
com.gitee.sop
sop-service-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
com.gitee.sop
diff --git a/sop-example/sop-easyopen/pom.xml b/sop-example/sop-easyopen/pom.xml
index d7422ed6..068140c1 100644
--- a/sop-example/sop-easyopen/pom.xml
+++ b/sop-example/sop-easyopen/pom.xml
@@ -29,7 +29,7 @@
com.gitee.sop
sop-service-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
org.springframework.cloud
diff --git a/sop-example/sop-springmvc/pom.xml b/sop-example/sop-springmvc/pom.xml
index 4652ae4f..d02be1c7 100644
--- a/sop-example/sop-springmvc/pom.xml
+++ b/sop-example/sop-springmvc/pom.xml
@@ -20,7 +20,7 @@
com.gitee.sop
sop-service-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
diff --git a/sop-example/sop-story/sop-story-web/pom.xml b/sop-example/sop-story/sop-story-web/pom.xml
index cc8320c2..135ee955 100644
--- a/sop-example/sop-story/sop-story-web/pom.xml
+++ b/sop-example/sop-story/sop-story-web/pom.xml
@@ -24,7 +24,7 @@
com.gitee.sop
sop-service-common
- 1.13.4-SNAPSHOT
+ 1.13.6-SNAPSHOT
com.gitee.sop
diff --git a/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/AlipayController.java b/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/AlipayController.java
index c22509cb..a04a59df 100644
--- a/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/AlipayController.java
+++ b/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/AlipayController.java
@@ -30,7 +30,7 @@ public class AlipayController {
// http://localhost:2222/story_get
// 原生的接口,可正常调用
@RequestMapping("story_get")
- public Story getStory4() {
+ public Story story_get() {
Story story = new Story();
story.setId(1);
story.setName("海底小纵队(原生)");
@@ -117,7 +117,7 @@ public class AlipayController {
// http://localhost:2222/getStory2?version=2.1
// 遗留接口具备开放平台能力,在原来的基础上加版本号
@ApiAbility(version = "2.1")
- @RequestMapping("getStory2")
+ @GetMapping("getStory2")
public Story getStory2_1() {
Story story = new Story();
story.setId(1);
diff --git a/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/PostJsonController.java b/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/PostJsonController.java
index 0bc5e45a..1be5d6d4 100644
--- a/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/PostJsonController.java
+++ b/sop-example/sop-story/sop-story-web/src/main/java/com/gitee/sop/storyweb/controller/PostJsonController.java
@@ -6,6 +6,7 @@ import com.gitee.sop.servercommon.bean.OpenContext;
import com.gitee.sop.story.api.domain.Story;
import com.gitee.sop.storyweb.controller.param.StoryParam;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
@@ -23,7 +24,7 @@ public class PostJsonController {
* @return
*/
@ApiMapping("demo.post.json")
- public Story postJson(StoryParam param) {
+ public Story postJson(@RequestBody StoryParam param) {
// 获取开放平台请求参数
OpenContext openContext = ServiceContext.getCurrentContext().getOpenContext();
List