From 236726b023ed9991c4c5a73b4aada6cc5461a42c Mon Sep 17 00:00:00 2001 From: tanghc Date: Sun, 24 Mar 2019 13:43:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/service/serviceList.js | 2 +- .../BaseGatewayConfiguration.java | 10 +++++-- .../gateway/result/GatewayResultExecutor.java | 2 +- .../manager/RouteRepositoryContext.java | 5 ++-- .../result/BaseExecutorAdapter.java | 28 ++++++++++++------- .../configuration/BaseZuulConfiguration.java | 10 +++++-- .../zuul/result/ZuulResultExecutor.java | 22 ++++++--------- sop-common/sop-service-common/pom.xml | 2 +- .../BaseServiceConfiguration.java | 5 ++-- .../EasyopenServiceConfiguration.java | 14 +++++----- .../mapping/ApiMappingRequestCondition.java | 4 ++- .../param/ApiArgumentResolver.java | 1 + .../servercommon/route/ServiceRouteInfo.java | 1 - .../java/com/gitee/sop/JSR303DemoTest.java | 6 ++-- 14 files changed, 63 insertions(+), 49 deletions(-) diff --git a/sop-admin/sop-admin-front/pages/service/serviceList.js b/sop-admin/sop-admin-front/pages/service/serviceList.js index d2a09d78..223fbfc5 100644 --- a/sop-admin/sop-admin-front/pages/service/serviceList.js +++ b/sop-admin/sop-admin-front/pages/service/serviceList.js @@ -24,7 +24,7 @@ lib.config({ cols: [[ {type: 'numbers'}, {field: 'name', title: '服务名称(serviceId)', width: 200}, - {field: 'instanceId', title: 'instanceId', width: 220}, + {field: 'instanceId', title: 'instanceId', width: 250}, {field: 'ipAddr', title: 'IP地址', width: 150}, {field: 'serverPort', title: '端口号', width: 100}, {field: 'status', title: '服务状态', width: 100, templet: function (row) { diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/configuration/BaseGatewayConfiguration.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/configuration/BaseGatewayConfiguration.java index ef37a48e..c55b1d55 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/configuration/BaseGatewayConfiguration.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/configuration/BaseGatewayConfiguration.java @@ -105,13 +105,17 @@ public class BaseGatewayConfiguration { @PostConstruct - public void after() { + protected final void after() { + if (RouteRepositoryContext.getRouteRepository() == null) { + throw new IllegalArgumentException("RouteRepositoryContext.setRouteRepository()方法未使用"); + } + initMessage(); + gatewayZookeeperApiMetaManager.refresh(); doAfter(); } protected void doAfter() { - initMessage(); - gatewayZookeeperApiMetaManager.refresh(); + } protected void initMessage() { diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/result/GatewayResultExecutor.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/result/GatewayResultExecutor.java index cb182429..be4bb9b9 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/result/GatewayResultExecutor.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/result/GatewayResultExecutor.java @@ -26,7 +26,7 @@ import java.util.Map; public class GatewayResultExecutor extends BaseExecutorAdapter { @Override - public int getBizHeaderCode(ServerWebExchange exchange) { + public int getResponseStatus(ServerWebExchange exchange) { int responseStatus = HttpStatus.OK.value(); List errorCodeList = exchange.getResponse().getHeaders().get(SopConstants.X_BIZ_ERROR_CODE); if (!CollectionUtils.isEmpty(errorCodeList)) { diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/manager/RouteRepositoryContext.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/manager/RouteRepositoryContext.java index 4b4d4df7..951b3512 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/manager/RouteRepositoryContext.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/manager/RouteRepositoryContext.java @@ -7,7 +7,8 @@ import com.gitee.sop.gatewaycommon.bean.TargetRoute; */ public class RouteRepositoryContext { - private RouteRepositoryContext(){} + private RouteRepositoryContext() { + } private static RouteRepository routeRepository; @@ -15,7 +16,7 @@ public class RouteRepositoryContext { return routeRepository; } - public static void setRouteRepository(RouteRepository routeRepository) { + public static void setRouteRepository(RouteRepository routeRepository) { RouteRepositoryContext.routeRepository = routeRepository; } 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 2e4f257d..f23a33cc 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 @@ -38,7 +38,7 @@ public abstract class BaseExecutorAdapter implements ResultExecutor * @param t * @return */ - public abstract int getBizHeaderCode(T t); + public abstract int getResponseStatus(T t); /** * 返回Api参数 @@ -54,7 +54,7 @@ public abstract class BaseExecutorAdapter implements ResultExecutor return serviceResult; } serviceResult = wrapResult(serviceResult); - int responseStatus = this.getBizHeaderCode(request); + int responseStatus = this.getResponseStatus(request); JSONObject jsonObjectService; if (responseStatus == HttpStatus.OK.value()) { // 200正常返回 @@ -88,6 +88,9 @@ public abstract class BaseExecutorAdapter implements ResultExecutor return defaultSetting; } Map params = this.getApiParam(request); + if (params == null) { + return true; + } Object name = params.get(ParamNames.API_NAME); Object version = params.get(ParamNames.VERSION_NAME); if(name == null) { @@ -119,17 +122,22 @@ public abstract class BaseExecutorAdapter implements ResultExecutor public String merge(T exchange, JSONObject jsonObjectService) { JSONObject ret = new JSONObject(); + String name = "error"; + String sign = ""; Map params = this.getApiParam(exchange); - Object name = params.get(ParamNames.API_NAME); - if (name == null) { - name = "error"; - } - Object sign = params.get(ParamNames.SIGN_NAME); - if (sign == null) { - sign = ""; + if (params != null) { + Object method = params.get(ParamNames.API_NAME); + if (method != null) { + name = String.valueOf(method); + } + Object _sign = params.get(ParamNames.SIGN_NAME); + if (_sign != null) { + sign = String.valueOf(_sign); + } } + // 点换成下划线 - String method = String.valueOf(name).replace(DOT, UNDERLINE); + String method = name.replace(DOT, UNDERLINE); ret.put(method + DATA_SUFFIX, jsonObjectService); ret.put(ParamNames.SIGN_NAME, sign); return ret.toJSONString(); diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/configuration/BaseZuulConfiguration.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/configuration/BaseZuulConfiguration.java index 2e53cd4c..6385706c 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/configuration/BaseZuulConfiguration.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/configuration/BaseZuulConfiguration.java @@ -121,13 +121,17 @@ public class BaseZuulConfiguration { } @PostConstruct - public void after() { + public final void after() { + if (RouteRepositoryContext.getRouteRepository() == null) { + throw new IllegalArgumentException("RouteRepositoryContext.setRouteRepository()方法未使用"); + } + initMessage(); + apiMetaManager.refresh(); doAfter(); } protected void doAfter() { - initMessage(); - apiMetaManager.refresh(); + } protected void initMessage() { diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/result/ZuulResultExecutor.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/result/ZuulResultExecutor.java index c9b32ace..233d0bae 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/result/ZuulResultExecutor.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/result/ZuulResultExecutor.java @@ -12,10 +12,7 @@ import com.netflix.util.Pair; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import lombok.extern.slf4j.Slf4j; -import org.springframework.http.HttpStatus; -import javax.servlet.http.HttpServletResponse; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; @@ -27,24 +24,21 @@ import java.util.Optional; public class ZuulResultExecutor extends BaseExecutorAdapter { @Override - public int getBizHeaderCode(RequestContext requestContext) { - // 微服务端返回的head - int code = HttpStatus.OK.value(); + public int getResponseStatus(RequestContext requestContext) { List> bizHeaders = requestContext.getZuulResponseHeaders(); - Optional> first = bizHeaders.stream() + Optional first = bizHeaders.stream() .filter(header -> { return SopConstants.X_BIZ_ERROR_CODE.equals(header.first()); + }).map(header -> { + return header.second(); }).findFirst(); - Pair header = first.orElseGet(() -> { - return new Pair(HttpStatus.OK.name(), String.valueOf(HttpStatus.OK.value())); + String status = first.orElseGet(() -> { + int respStatus = requestContext.getResponseStatusCode(); + return String.valueOf(respStatus); }); - String bizErrorCode = header.second(); - if (bizErrorCode != null) { - code = Integer.valueOf(bizErrorCode); - } - return code; + return Integer.valueOf(status); } @Override diff --git a/sop-common/sop-service-common/pom.xml b/sop-common/sop-service-common/pom.xml index c9ed1955..495b72de 100644 --- a/sop-common/sop-service-common/pom.xml +++ b/sop-common/sop-service-common/pom.xml @@ -31,7 +31,7 @@ net.oschina.durcframework easyopen - 1.16.0 + 1.16.1 true diff --git a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/BaseServiceConfiguration.java b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/BaseServiceConfiguration.java index 1cbddcab..94d54fdb 100644 --- a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/BaseServiceConfiguration.java +++ b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/BaseServiceConfiguration.java @@ -61,12 +61,13 @@ public class BaseServiceConfiguration extends WebMvcConfigurationSupport { } @PostConstruct - public void after() { + public final void after() { + initMessage(); doAfter(); } protected void doAfter() { - initMessage(); + } protected void initMessage() { diff --git a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/EasyopenServiceConfiguration.java b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/EasyopenServiceConfiguration.java index ad1bcaa2..5f9497fc 100644 --- a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/EasyopenServiceConfiguration.java +++ b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/EasyopenServiceConfiguration.java @@ -1,5 +1,6 @@ package com.gitee.sop.servercommon.configuration; +import com.gitee.easyopen.ApiContext; import com.gitee.easyopen.annotation.Api; import com.gitee.easyopen.util.ReflectionUtil; import com.gitee.sop.servercommon.bean.ServiceApiInfo; @@ -25,6 +26,10 @@ import java.util.function.Consumer; */ public class EasyopenServiceConfiguration extends BaseServiceConfiguration { + static { + ApiContext.getApiConfig().setIgnoreValidate(false); + } + @Override protected RequestMappingEvent getRequestMappingEvent(ApiMetaManager apiMetaManager, Environment environment) { return new EasyopenRequestMappingEvent(apiMetaManager, environment); @@ -56,6 +61,8 @@ public class EasyopenServiceConfiguration extends BaseServiceConfiguration { apiMeta.setName(api.name()); apiMeta.setVersion(api.version()); apiMeta.setIgnoreValidate(BooleanUtils.toInteger(api.ignoreValidate())); + // 对结果不合并 + apiMeta.setMergeResult(BooleanUtils.toInteger(false)); // /api/goods.get/ String servletPath = this.buildPath(api); apiMeta.setPath(servletPath); @@ -88,11 +95,4 @@ public class EasyopenServiceConfiguration extends BaseServiceConfiguration { } } - @Override - public void after() { - super.after(); - // 取消验证 - // todo:需要在easyopen端修改 - //ApiContext.getApiConfig().setIgnoreValidate(true); - } } 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 73c7f289..fddad83f 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 @@ -1,7 +1,7 @@ package com.gitee.sop.servercommon.mapping; -import com.gitee.sop.servercommon.bean.ServiceConfig; import com.gitee.sop.servercommon.bean.ParamNames; +import com.gitee.sop.servercommon.bean.ServiceConfig; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.mvc.condition.RequestCondition; @@ -32,6 +32,7 @@ public class ApiMappingRequestCondition implements RequestCondition bizContent = new HashMap<>(); // 对应校验规则查看GoodsParam.java - bizContent.put("goods_name", "iphone6"); - bizContent.put("goods_remark", "iphone6"); - bizContent.put("goods_comment", "1"); +// bizContent.put("goods_name", "iphone6"); +// bizContent.put("goods_remark", "iphone6"); +// bizContent.put("goods_comment", "1"); params.put("biz_content", JSON.toJSONString(bizContent));