|
|
|
@ -2,6 +2,7 @@ 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; |
|
|
|
@ -20,6 +21,7 @@ import org.springframework.http.HttpStatus; |
|
|
|
|
import org.springframework.util.CollectionUtils; |
|
|
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.LinkedHashMap; |
|
|
|
|
import java.util.Locale; |
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
@ -94,7 +96,7 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R> |
|
|
|
|
this.doAfterRoute(serviceResult, responseStatus, request); |
|
|
|
|
String finalResult; |
|
|
|
|
if (isMergeResult) { |
|
|
|
|
JSONObject responseData = this.parseServiceResult(serviceResult, responseStatus, request); |
|
|
|
|
Map<String, Object> responseData = this.parseServiceResult(serviceResult, responseStatus, request); |
|
|
|
|
finalResult = this.merge(request, responseData); |
|
|
|
|
} else { |
|
|
|
|
finalResult = serviceResult; |
|
|
|
@ -141,7 +143,7 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R> |
|
|
|
|
* @param request 请求 |
|
|
|
|
* @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); |
|
|
|
|
if (errorEnum == null) { |
|
|
|
|
// 其它异常不应该把异常信息告诉给客户端,将微服务内容设置成空的json
|
|
|
|
@ -149,15 +151,17 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R> |
|
|
|
|
errorEnum = ErrorEnum.ISP_UNKNOWN_ERROR; |
|
|
|
|
} |
|
|
|
|
ErrorMeta errorMeta = errorEnum.getErrorMeta(); |
|
|
|
|
JSONObject responseData = JSON.parseObject(serviceResult); |
|
|
|
|
Map<String, Object> serviceData = new LinkedHashMap<>(); |
|
|
|
|
ApiParam apiParam = this.getApiParam(request); |
|
|
|
|
if (apiParam != null) { |
|
|
|
|
// 全局请求id,方便追踪定位
|
|
|
|
|
responseData.put("request_id", apiParam.fetchRequestId()); |
|
|
|
|
serviceData.put("request_id", apiParam.fetchRequestId()); |
|
|
|
|
} |
|
|
|
|
responseData.put(GATEWAY_CODE_NAME, errorMeta.getCode()); |
|
|
|
|
responseData.put(GATEWAY_MSG_NAME, errorMeta.getError(getLocale(request)).getMsg()); |
|
|
|
|
return responseData; |
|
|
|
|
serviceData.put(GATEWAY_CODE_NAME, errorMeta.getCode()); |
|
|
|
|
serviceData.put(GATEWAY_MSG_NAME, errorMeta.getError(getLocale(request)).getMsg()); |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String merge(T exchange, JSONObject responseData) { |
|
|
|
|
public String merge(T exchange, Map<String, Object> responseData) { |
|
|
|
|
JSONObject finalData = new JSONObject(true); |
|
|
|
|
ApiParam params = this.getApiParam(exchange); |
|
|
|
|
if (params == null) { |
|
|
|
|