mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
3.2.1
This commit is contained in:
@@ -2,6 +2,7 @@ package com.gitee.sop.gatewaycommon.result;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.parser.Feature;
|
||||||
import com.gitee.sop.gatewaycommon.bean.ApiConfig;
|
import com.gitee.sop.gatewaycommon.bean.ApiConfig;
|
||||||
import com.gitee.sop.gatewaycommon.bean.DefaultRouteInterceptorContext;
|
import com.gitee.sop.gatewaycommon.bean.DefaultRouteInterceptorContext;
|
||||||
import com.gitee.sop.gatewaycommon.bean.Isv;
|
import com.gitee.sop.gatewaycommon.bean.Isv;
|
||||||
@@ -20,6 +21,7 @@ import org.springframework.http.HttpStatus;
|
|||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -94,7 +96,7 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R>
|
|||||||
this.doAfterRoute(serviceResult, responseStatus, request);
|
this.doAfterRoute(serviceResult, responseStatus, request);
|
||||||
String finalResult;
|
String finalResult;
|
||||||
if (isMergeResult) {
|
if (isMergeResult) {
|
||||||
JSONObject responseData = this.parseServiceResult(serviceResult, responseStatus, request);
|
Map<String, Object> responseData = this.parseServiceResult(serviceResult, responseStatus, request);
|
||||||
finalResult = this.merge(request, responseData);
|
finalResult = this.merge(request, responseData);
|
||||||
} else {
|
} else {
|
||||||
finalResult = serviceResult;
|
finalResult = serviceResult;
|
||||||
@@ -141,7 +143,7 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R>
|
|||||||
* @param request 请求
|
* @param request 请求
|
||||||
* @return 返回JSONObject
|
* @return 返回JSONObject
|
||||||
*/
|
*/
|
||||||
protected JSONObject parseServiceResult(String serviceResult, int responseStatus, T request) {
|
protected Map<String, Object> parseServiceResult(String serviceResult, int responseStatus, T request) {
|
||||||
ErrorEnum errorEnum = HTTP_STATUS_ERROR_ENUM_MAP.get(responseStatus);
|
ErrorEnum errorEnum = HTTP_STATUS_ERROR_ENUM_MAP.get(responseStatus);
|
||||||
if (errorEnum == null) {
|
if (errorEnum == null) {
|
||||||
// 其它异常不应该把异常信息告诉给客户端,将微服务内容设置成空的json
|
// 其它异常不应该把异常信息告诉给客户端,将微服务内容设置成空的json
|
||||||
@@ -149,15 +151,17 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R>
|
|||||||
errorEnum = ErrorEnum.ISP_UNKNOWN_ERROR;
|
errorEnum = ErrorEnum.ISP_UNKNOWN_ERROR;
|
||||||
}
|
}
|
||||||
ErrorMeta errorMeta = errorEnum.getErrorMeta();
|
ErrorMeta errorMeta = errorEnum.getErrorMeta();
|
||||||
JSONObject responseData = JSON.parseObject(serviceResult);
|
Map<String, Object> serviceData = new LinkedHashMap<>();
|
||||||
ApiParam apiParam = this.getApiParam(request);
|
ApiParam apiParam = this.getApiParam(request);
|
||||||
if (apiParam != null) {
|
if (apiParam != null) {
|
||||||
// 全局请求id,方便追踪定位
|
// 全局请求id,方便追踪定位
|
||||||
responseData.put("request_id", apiParam.fetchRequestId());
|
serviceData.put("request_id", apiParam.fetchRequestId());
|
||||||
}
|
}
|
||||||
responseData.put(GATEWAY_CODE_NAME, errorMeta.getCode());
|
serviceData.put(GATEWAY_CODE_NAME, errorMeta.getCode());
|
||||||
responseData.put(GATEWAY_MSG_NAME, errorMeta.getError(getLocale(request)).getMsg());
|
serviceData.put(GATEWAY_MSG_NAME, errorMeta.getError(getLocale(request)).getMsg());
|
||||||
return responseData;
|
JSONObject serviceObj = JSON.parseObject(serviceResult, Feature.OrderedField);
|
||||||
|
serviceData.putAll(serviceObj);
|
||||||
|
return serviceData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -183,7 +187,7 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R>
|
|||||||
return serviceResult;
|
return serviceResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String merge(T exchange, JSONObject responseData) {
|
public String merge(T exchange, Map<String, Object> responseData) {
|
||||||
JSONObject finalData = new JSONObject(true);
|
JSONObject finalData = new JSONObject(true);
|
||||||
ApiParam params = this.getApiParam(exchange);
|
ApiParam params = this.getApiParam(exchange);
|
||||||
if (params == null) {
|
if (params == null) {
|
||||||
|
Reference in New Issue
Block a user