getAllFile();
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ApiResult.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ApiResult.java
deleted file mode 100644
index 347a1f7b..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ApiResult.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-import com.gitee.sop.gatewaycommon.message.ErrorEnum;
-import lombok.Data;
-
-/**
- * 默认的结果封装类.
- *
- *
- * xml返回结果:
- *
- * 50
- * Remote service error
- * isv.invalid-parameter
- * 非法参数
- *
- * 成功情况:
- *
- * 0
- * 成功消息
- *
- * ...返回内容
- *
- *
- *
- * json返回格式:
- * {
- * "code":"50",
- * "msg":"Remote service error",
- * "sub_code":"isv.invalid-parameter",
- * "sub_msg":"非法参数"
- * }
- * 成功情况:
- * {
- * "code":"0",
- * "msg":"成功消息内容。。。",
- * "data":{
- * ...返回内容
- * }
- * }
- *
- *
- * 字段说明:
- * code:网关异常码
- * msg:网关异常信息
- * sub_code:业务异常码
- * sub_msg:业务异常信息
- *
- * @author 六如
- */
-@Data
-public class ApiResult implements Result {
-
- /**
- * 网关异常码,范围0~100 成功返回"0"
- */
- private String code = ErrorEnum.SUCCESS.getErrorMeta().getCode();
-
- /**
- * 网关异常信息
- */
- private String msg;
-
- /**
- * 业务异常码
- */
- private String sub_msg;
-
- /**
- * 业务异常信息
- */
- private String sub_code;
-
- private String sign;
-}
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
deleted file mode 100644
index 588fc673..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java
+++ /dev/null
@@ -1,297 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.parser.Feature;
-import com.gitee.sop.gatewaycommon.bean.ApiConfig;
-import com.gitee.sop.gatewaycommon.bean.DefaultRouteInterceptorContext;
-import com.gitee.sop.gatewaycommon.bean.Isv;
-import com.gitee.sop.gatewaycommon.bean.SopConstants;
-import com.gitee.sop.gatewaycommon.interceptor.RouteInterceptorContext;
-import com.gitee.sop.gatewaycommon.message.ErrorEnum;
-import com.gitee.sop.gatewaycommon.message.ErrorMeta;
-import com.gitee.sop.gatewaycommon.param.ApiParam;
-import com.gitee.sop.gatewaycommon.param.ParamNames;
-import com.gitee.sop.gatewaycommon.secret.IsvManager;
-import com.gitee.sop.gatewaycommon.util.RouteInterceptorUtil;
-import com.gitee.sop.gatewaycommon.validate.alipay.AlipaySignature;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.cloud.client.ServiceInstance;
-import org.springframework.http.HttpStatus;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.util.UriUtils;
-
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * 处理微服务返回结果
- *
- * @author 六如
- */
-@Slf4j
-public abstract class BaseExecutorAdapter implements ResultExecutor {
-
- private static final Map HTTP_STATUS_ERROR_ENUM_MAP = new HashMap<>(8);
-
- private static final String GATEWAY_CODE_NAME = "code";
- private static final String GATEWAY_MSG_NAME = "msg";
- private static final String ARRAY_START = "[";
- private static final String ARRAY_END = "]";
- private static final String ROOT_JSON = "{'items':%s}".replace("'", "\"");
-
- static {
- HTTP_STATUS_ERROR_ENUM_MAP.put(HttpStatus.OK.value(), ErrorEnum.SUCCESS);
- HTTP_STATUS_ERROR_ENUM_MAP.put(SopConstants.BIZ_ERROR_STATUS, ErrorEnum.BIZ_ERROR);
- HTTP_STATUS_ERROR_ENUM_MAP.put(SopConstants.UNKNOWN_ERROR_STATUS, ErrorEnum.ISP_SERVICE_UNKNOWN_ERROR);
- HTTP_STATUS_ERROR_ENUM_MAP.put(HttpStatus.NOT_FOUND.value(), ErrorEnum.ISV_INVALID_METHOD);
- }
-
-
- /**
- * 获取业务方约定的返回码
- *
- * @param t request
- * @return 返回返回码
- */
- public abstract int getResponseStatus(T t);
-
- /**
- * 获取微服务端的错误信息
- *
- * @param t request
- * @return 返回错误信息
- */
- public abstract String getResponseErrorMessage(T t);
-
- /**
- * 业务返回的错误结果
- * @param t request
- * @param status status
- * @return 业务返回结果
- */
- public abstract Optional getServiceResultForError(T t, int status);
-
- /**
- * 返回Api参数
- *
- * @param t request
- * @return 返回api参数
- */
- public abstract ApiParam getApiParam(T t);
-
- /**
- * 获取locale
- *
- * @param t request
- * @return 返回locale
- */
- protected abstract Locale getLocale(T t);
-
- /**
- * 返回拦截器上下文
- *
- * @param t request
- * @return 返回拦截器上下文
- */
- protected abstract RouteInterceptorContext getRouteInterceptorContext(T t);
-
- @Override
- public String mergeResult(T request, String serviceResult) {
- serviceResult = formatResult(serviceResult);
- boolean isMergeResult = this.isMergeResult(request);
- int responseStatus = this.getResponseStatus(request);
- Optional serviceResultForError = this.getServiceResultForError(request, responseStatus);
- if (serviceResultForError.isPresent()) {
- serviceResult = UriUtils.decode(serviceResultForError.get(), StandardCharsets.UTF_8);
- }
- this.doAfterRoute(serviceResult, responseStatus, request);
- String finalResult;
- if (isMergeResult) {
- Map responseData = this.parseServiceResult(serviceResult, responseStatus, request);
- finalResult = this.merge(request, responseData);
- } else {
- finalResult = serviceResult;
- }
- return finalResult;
- }
-
- /**
- * 执行拦截器after操作
- *
- * @param serviceResult 微服务结果
- * @param responseStatus 微服务状态码
- * @param requestContext 请求上下文
- */
- private void doAfterRoute(String serviceResult, int responseStatus, T requestContext) {
- RouteInterceptorContext routeInterceptorContext = getRouteInterceptorContext(requestContext);
- if (routeInterceptorContext instanceof DefaultRouteInterceptorContext) {
- DefaultRouteInterceptorContext defaultRouteInterceptorContext = (DefaultRouteInterceptorContext) routeInterceptorContext;
- defaultRouteInterceptorContext.setResponseStatus(responseStatus);
- defaultRouteInterceptorContext.setServiceResult(serviceResult);
- defaultRouteInterceptorContext.setFinishTimeMillis(System.currentTimeMillis());
- defaultRouteInterceptorContext.setResponseDataSize(serviceResult.length());
- if (responseStatus != HttpStatus.OK.value()) {
- String responseErrorMessage = getResponseErrorMessage(requestContext);
- if (StringUtils.isEmpty(responseErrorMessage)) {
- responseErrorMessage = serviceResult;
- }
- ServiceInstance serviceInstance = defaultRouteInterceptorContext.getServiceInstance();
- log.error("微服务端报错,instance:{}:{}, errorMsg:{}", serviceInstance.getHost(), serviceInstance.getPort(), responseErrorMessage);
- defaultRouteInterceptorContext.setServiceErrorMsg(responseErrorMessage);
- }
- }
- this.bindRouteInterceptorContextProperties(routeInterceptorContext, requestContext);
- RouteInterceptorUtil.runAfterRoute(routeInterceptorContext);
- }
-
- protected void bindRouteInterceptorContextProperties(RouteInterceptorContext routeInterceptorContext, T requestContext) {
-
- }
-
- /**
- * 将微服务的返回结果解析成JSONObject
- *
- * @param serviceResult 微服务返回结果
- * @param responseStatus 返回状态
- * @param request 请求
- * @return 返回JSONObject
- */
- protected Map parseServiceResult(String serviceResult, int responseStatus, T request) {
- ErrorEnum errorEnum = HTTP_STATUS_ERROR_ENUM_MAP.get(responseStatus);
- if (errorEnum == null) {
- // 其它异常不应该把异常信息告诉给客户端,将微服务内容设置成空的json
- serviceResult = SopConstants.EMPTY_JSON;
- errorEnum = ErrorEnum.ISP_UNKNOWN_ERROR;
- }
- ErrorMeta errorMeta = errorEnum.getErrorMeta();
- Map serviceData = new LinkedHashMap<>();
- ApiParam apiParam = this.getApiParam(request);
- if (apiParam != null) {
- // 全局请求id,方便追踪定位
- serviceData.put("request_id", apiParam.fetchRequestId());
- }
- serviceData.put(GATEWAY_CODE_NAME, errorMeta.getCode());
- serviceData.put(GATEWAY_MSG_NAME, errorMeta.getError(getLocale(request)).getMsg());
- JSONObject serviceObj = JSON.parseObject(serviceResult, Feature.OrderedField);
- this.handleBizResult(serviceData, serviceObj, apiParam, request);
- return serviceData;
- }
-
- protected abstract void handleBizResult(Map serviceData, JSONObject serviceObj, ApiParam apiParam, T request);
-
-
- /**
- * 该路由是否合并结果
- *
- * @param request request
- * @return true:需要合并
- */
- protected boolean isMergeResult(T request) {
- ApiParam params = this.getApiParam(request);
- return params != null && params.fetchMergeResult();
- }
-
- protected String formatResult(String serviceResult) {
- if (StringUtils.isBlank(serviceResult)) {
- return SopConstants.EMPTY_JSON;
- }
- // 如果直接返回数组,需要进行包装,变成:{"items": [...]}
- if (serviceResult.startsWith(ARRAY_START) && serviceResult.endsWith(ARRAY_END)) {
- return String.format(ROOT_JSON, serviceResult);
- }
- return serviceResult;
- }
-
- public String merge(T exchange, Map responseData) {
- JSONObject finalData = new JSONObject(true);
- ApiParam params = this.getApiParam(exchange);
- if (params == null) {
- params = new ApiParam();
- params.setName("error");
- }
- ApiConfig apiConfig = ApiConfig.getInstance();
- // 点换成下划线
- DataNameBuilder dataNameBuilder = apiConfig.getDataNameBuilder();
- // alipay_goods_get_response
- String responseDataNodeName = dataNameBuilder.build(params.fetchName());
- finalData.put(responseDataNodeName, responseData);
- ResultAppender resultAppender = apiConfig.getResultAppender();
- // 追加额外的结果
- if (resultAppender != null) {
- resultAppender.append(finalData, params, exchange);
- }
- // 添加服务端sign
- this.addResponseSign(apiConfig, params, finalData, responseDataNodeName);
- return finalData.toJSONString();
- }
-
- private void addResponseSign(ApiConfig apiConfig, ApiParam params, JSONObject finalData, String responseDataNodeName) {
- if (apiConfig.isShowReturnSign() && !CollectionUtils.isEmpty(params)) {
- // 添加try...catch,生成sign出错不影响结果正常返回
- try {
- String responseSignContent = this.buildResponseSignContent(responseDataNodeName, finalData);
- String sign = this.createResponseSign(apiConfig.getIsvManager(), params, responseSignContent);
- if (StringUtils.isNotBlank(sign)) {
- finalData.put(ParamNames.RESPONSE_SIGN_NAME, sign);
- }
- } catch (Exception e) {
- log.error("生成平台签名失败, params: {}", params.toJSONString(), e);
- }
- }
- }
-
- /**
- * 获取待签名内容
- *
- * @param rootNodeName 业务数据节点
- * @param finalData 最终结果
- * @return 返回待签名内容
- */
- protected String buildResponseSignContent(String rootNodeName, JSONObject finalData) {
- String body = finalData.toJSONString();
- int indexOfRootNode = body.indexOf(rootNodeName);
- if (indexOfRootNode > 0) {
- int signDataStartIndex = indexOfRootNode + rootNodeName.length() + 2;
- int length = body.length() - 1;
- return body.substring(signDataStartIndex, length);
- }
- return null;
- }
-
- /**
- * 这里需要使用平台的私钥生成一个sign,需要配置两套公私钥。
- *
- * @param isvManager isvManager
- * @param params 请求参数
- * @param responseSignContent 待签名内容
- * @return 返回平台生成的签名
- */
- protected String createResponseSign(IsvManager isvManager, ApiParam params, String responseSignContent) {
- if (StringUtils.isEmpty(responseSignContent)) {
- return null;
- }
- // 根据appId获取秘钥
- String appKey = params.fetchAppKey();
- if (StringUtils.isEmpty(appKey)) {
- return null;
- }
- Isv isvInfo = isvManager.getIsv(appKey);
- String privateKeyPlatform = isvInfo == null ? null : isvInfo.getPrivateKeyPlatform();
- if (StringUtils.isEmpty(privateKeyPlatform)) {
- return null;
- }
- return AlipaySignature.rsaSign(
- responseSignContent
- , privateKeyPlatform
- , params.fetchCharset()
- , params.fetchSignMethod()
- );
- }
-
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/CustomDataNameBuilder.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/CustomDataNameBuilder.java
deleted file mode 100644
index d4e23576..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/CustomDataNameBuilder.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-/**
- * 返回固定的
- * {
- * "result": {
- * "code": "20000",
- * "msg": "Service Currently Unavailable",
- * "sub_code": "isp.unknown-error",
- * "sub_msg": "系统繁忙"
- * },
- * "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
- * }
- * @author 六如
- */
-public class CustomDataNameBuilder implements DataNameBuilder {
- private String dataName = "result";
-
- public CustomDataNameBuilder() {
- }
-
- public CustomDataNameBuilder(String dataName) {
- this.dataName = dataName;
- }
-
- @Override
- public String build(String method) {
- return dataName;
- }
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/DataNameBuilder.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/DataNameBuilder.java
deleted file mode 100644
index 6b009a1d..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/DataNameBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-/**
- * @author 六如
- */
-public interface DataNameBuilder {
- /**
- * 构建数据节点名称
- * @param method
- * @return
- */
- String build(String method);
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/DefaultDataNameBuilder.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/DefaultDataNameBuilder.java
deleted file mode 100644
index 58a19d98..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/DefaultDataNameBuilder.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-/**
- * 将方法名中的"."转成"_"并在后面追加"_response"
- * 如:alipay.trade.order.settle --> alipay_trade_order_settle_response
- *
- * {
- * "alipay_trade_order_settle_response": {
- * "code": "20000",
- * "msg": "Service Currently Unavailable",
- * "sub_code": "isp.unknown-error",
- * "sub_msg": "系统繁忙"
- * },
- * "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
- * }
- *
- * @author 六如
- */
-public class DefaultDataNameBuilder implements DataNameBuilder {
- private static final char DOT = '.';
- private static final char UNDERLINE = '_';
- private static final String DATA_SUFFIX = "_response";
-
- @Override
- public String build(String method) {
- if (method == null) {
- method = "error";
- }
- return method.replace(DOT, UNDERLINE) + DATA_SUFFIX;
- }
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/JsonResult.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/JsonResult.java
deleted file mode 100644
index 1255ed1f..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/JsonResult.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * @author 六如
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class JsonResult extends ApiResult {
- private Object data;
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/Result.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/Result.java
deleted file mode 100644
index 5f9e2c67..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/Result.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-import java.io.Serializable;
-
-/**
- * 返回结果,后续自定义的返回类需要实现这个接口。
- *
- * @author 六如
- */
-public interface Result extends Serializable {
-
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultAppender.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultAppender.java
deleted file mode 100644
index df6b378a..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultAppender.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-import com.alibaba.fastjson.JSONObject;
-
-import java.util.Map;
-
-/**
- * 对结果进行追加
- *
- * @author 六如
- */
-public interface ResultAppender {
- /**
- * 追加最终结果
- *
- * @param result 最终结果
- * @param params 请求参数
- * @param ctx 请求上下文,zuul对应的是RequestContext,Gateway对应的是exchange
- */
- void append(JSONObject result, Map params, Object ctx);
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultExecutor.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultExecutor.java
deleted file mode 100644
index e07d8946..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultExecutor.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-/**
- * 对返回结果进行处理
- * 成功示例
- * {
- * "alipay_trade_fastpay_refund_query_response": {
- * "code": "10000",
- * "msg": "Success",
- * "trade_no": "2014112611001004680073956707",
- * "out_trade_no": "20150320010101001",
- * "out_request_no": "20150320010101001",
- * "refund_reason": "用户退款请求",
- * "total_amount": 100.2,
- * "refund_amount": 12.33
- * },
- * "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
- * }
- *
- * 异常示例
- * {
- * "alipay_trade_fastpay_refund_query_response": {
- * "code": "20000",
- * "msg": "Service Currently Unavailable",
- * "sub_code": "isp.unknown-error",
- * "sub_msg": "系统繁忙"
- * },
- * "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
- * }
- *
- * @author 六如
- */
-public interface ResultExecutor {
- /**
- * 合并结果
- * @param request
- * @param serviceResult
- * @return 返回最终输出结果
- */
- String mergeResult(T request, String serviceResult);
-
- /**
- * 合并错误结果
- * @param request
- * @param ex
- * @return 返回最终输出结果
- */
- R buildErrorResult(T request, Throwable ex);
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultExecutorForGateway.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultExecutorForGateway.java
deleted file mode 100644
index 54bf741d..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/ResultExecutorForGateway.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.gitee.sop.gatewaycommon.result;
-
-import org.springframework.web.server.ServerWebExchange;
-
-/**
- * @author 六如
- */
-public interface ResultExecutorForGateway extends ResultExecutor {
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/route/BaseForwardChooser.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/route/BaseForwardChooser.java
deleted file mode 100644
index 358501a9..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/route/BaseForwardChooser.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.gitee.sop.gatewaycommon.route;
-
-import com.gitee.sop.gatewaycommon.bean.ApiConfig;
-import com.gitee.sop.gatewaycommon.bean.ApiParamAware;
-import com.gitee.sop.gatewaycommon.bean.TargetRoute;
-import com.gitee.sop.gatewaycommon.loadbalancer.builder.GrayUserBuilder;
-import com.gitee.sop.gatewaycommon.manager.EnvGrayManager;
-import com.gitee.sop.gatewaycommon.manager.RouteRepositoryContext;
-import com.gitee.sop.gatewaycommon.param.ApiParam;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.List;
-
-/**
- * @author 六如
- */
-public abstract class BaseForwardChooser implements ForwardChooser, ApiParamAware {
-
- @Autowired
- private EnvGrayManager envGrayManager;
-
- @Override
- public ForwardInfo getForwardInfo(T t) {
- ApiParam apiParam = getApiParam(t);
- String nameVersion = apiParam.fetchNameVersion();
- TargetRoute targetRoute = RouteRepositoryContext.getRouteRepository().get(nameVersion);
- String serviceId = targetRoute.getServiceDefinition().fetchServiceIdLowerCase();
- // 如果服务在灰度阶段,返回一个灰度版本号
- String grayVersion = envGrayManager.getVersion(serviceId, nameVersion);
- // 如果是灰度环境
- if (grayVersion != null && isGrayUser(serviceId, apiParam)) {
- String newNameVersion = apiParam.fetchName() + grayVersion;
- TargetRoute targetRouteDest = RouteRepositoryContext.getRouteRepository().get(newNameVersion);
- if (targetRouteDest != null) {
- apiParam.setGrayRequest(true);
- targetRoute = targetRouteDest;
- }
- }
- return new ForwardInfo(targetRoute);
- }
-
- protected boolean isGrayUser(String serviceId, ApiParam apiParam) {
- List grayUserBuilders = ApiConfig.getInstance().getGrayUserBuilders();
- for (GrayUserBuilder grayUserBuilder : grayUserBuilders) {
- String userKey = grayUserBuilder.buildGrayUserKey(apiParam);
- if (envGrayManager.containsKey(serviceId, userKey)) {
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/route/BaseRegistryListener.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/route/BaseRegistryListener.java
deleted file mode 100644
index 5124da62..00000000
--- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/route/BaseRegistryListener.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.gitee.sop.gatewaycommon.route;
-
-import com.gitee.sop.gatewaycommon.bean.InstanceDefinition;
-import com.gitee.sop.gatewaycommon.bean.SpringContext;
-import com.gitee.sop.gatewaycommon.manager.EnvironmentKeys;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * @author 六如
- */
-@Slf4j
-public abstract class BaseRegistryListener implements RegistryListener {
-
- private static final int FIVE_SECONDS = 1000 * 5;
-
- private final Map updateTimeMap = new ConcurrentHashMap<>(16);
-
- public static List EXCLUDE_SERVICE_ID_LIST = new ArrayList<>(8);
-
- static {
- EXCLUDE_SERVICE_ID_LIST.add("sop-gateway");
- EXCLUDE_SERVICE_ID_LIST.add("sop-website");
- EXCLUDE_SERVICE_ID_LIST.add("sop-admin");
- EXCLUDE_SERVICE_ID_LIST.add("website-server");
- }
-
- @Autowired
- private ServiceListener serviceListener;
-
- /**
- * 移除路由信息
- *
- * @param serviceId serviceId
- */
- public synchronized void removeRoutes(String serviceId) {
- serviceListener.onRemoveService(serviceId.toLowerCase());
- }
-
- /**
- * 拉取路由信息
- *
- * @param instance 服务实例
- */
- public synchronized void pullRoutes(InstanceDefinition instance) {
- // serviceId统一小写
- instance.setServiceId(instance.getServiceId().toLowerCase());
- serviceListener.onAddInstance(instance);
- }
-
- protected boolean canOperator(ServiceHolder serviceHolder) {
- String serviceId = serviceHolder.getServiceId();
- // 被排除的服务,不能操作
- if (isExcludeService(serviceId)) {
- return false;
- }
- // nacos会不停的触发事件,这里做了一层拦截
- // 同一个serviceId5秒内允许访问一次
- Long lastUpdateTime = updateTimeMap.getOrDefault(serviceId, 0L);
- long now = System.currentTimeMillis();
- boolean can = now - lastUpdateTime > FIVE_SECONDS;
- if (can) {
- updateTimeMap.put(serviceId, now);
- }
- return can;
- }
-
- /**
- * 是否是被排除的服务
- *
- * @param serviceId 服务id
- * @return true,是
- */
- private boolean isExcludeService(String serviceId) {
- List excludeServiceIdList = getExcludeServiceId();
- for (String excludeServiceId : excludeServiceIdList) {
- if (excludeServiceId.equalsIgnoreCase(serviceId)) {
- return true;
- }
- }
- // 匹配正则
- String sopServiceExcludeRegex = EnvironmentKeys.SOP_SERVICE_EXCLUDE_REGEX.getValue();
- if (StringUtils.isNotBlank(sopServiceExcludeRegex)) {
- String[] regexArr = sopServiceExcludeRegex.split(";");
- for (String regex : regexArr) {
- if (serviceId.matches(regex)) {
- return true;
- }
- }
- }
- return false;
- }
-
- private List