mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 12:56:28 +08:00
5.0
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
package com.gitee.sop.gateway.exception.impl;
|
||||
|
||||
import com.gitee.sop.gateway.request.ApiRequestContext;
|
||||
import com.gitee.sop.gateway.response.ApiResponse;
|
||||
import com.gitee.sop.gateway.exception.ApiException;
|
||||
import com.gitee.sop.gateway.exception.ExceptionExecutor;
|
||||
import com.gitee.sop.gateway.message.ErrorEnum;
|
||||
import com.gitee.sop.gateway.request.ApiRequestContext;
|
||||
import com.gitee.sop.gateway.response.ApiResponse;
|
||||
import org.apache.dubbo.rpc.service.GenericException;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
/**
|
||||
* @author 六如
|
||||
*/
|
||||
@@ -20,6 +21,7 @@ import java.util.regex.Pattern;
|
||||
public class ExceptionExecutorImpl implements ExceptionExecutor {
|
||||
|
||||
private static final String CONSTRAINT_VIOLATION_EXCEPTION = "ConstraintViolationException";
|
||||
private static final String OPEN_EXCEPTION = "OpenException";
|
||||
|
||||
@Override
|
||||
public ApiResponse executeException(ApiRequestContext apiRequestContext, Exception e) {
|
||||
@@ -32,6 +34,18 @@ public class ExceptionExecutorImpl implements ExceptionExecutor {
|
||||
Set<String> msgs = findErrorMsg(exceptionMessage);
|
||||
return ApiResponse.error(ErrorEnum.ISV_ERROR_PARAMETER, apiRequestContext.getLocale(), String.join(",", msgs));
|
||||
}
|
||||
if (exceptionClass.contains(OPEN_EXCEPTION)) {
|
||||
String exceptionMessage = genericException.getExceptionMessage();
|
||||
String errorMsg = exceptionMessage.split("\n")[1];
|
||||
// isv.common-error@@系统错误@@
|
||||
String[] msgAr = errorMsg.split("@@");
|
||||
return ApiResponse.error(
|
||||
ErrorEnum.BIZ_ERROR,
|
||||
apiRequestContext.getLocale(),
|
||||
msgAr[0],
|
||||
msgAr[1]
|
||||
);
|
||||
}
|
||||
} else if (e instanceof ApiException) {
|
||||
return ApiResponse.error(((ApiException) e));
|
||||
}
|
||||
|
@@ -89,6 +89,17 @@ public class ApiResponse extends BaseResponse {
|
||||
return error(error, subMsg);
|
||||
}
|
||||
|
||||
public static ApiResponse error(ErrorEnum errorEnum, Locale locale, String subCode, String subMsg) {
|
||||
ErrorMeta errorMeta = errorEnum.getErrorMeta();
|
||||
IError error = errorMeta.getError(locale);
|
||||
ApiResponse apiResponse = new ApiResponse();
|
||||
apiResponse.setCode(error.getCode());
|
||||
apiResponse.setMsg(error.getMsg());
|
||||
apiResponse.setSubCode(subCode);
|
||||
apiResponse.setSubMsg(subMsg);
|
||||
return apiResponse;
|
||||
}
|
||||
|
||||
public static ApiResponse error(ErrorEnum errorEnum, Locale locale) {
|
||||
ErrorMeta errorMeta = errorEnum.getErrorMeta();
|
||||
IError error = errorMeta.getError(locale);
|
||||
@@ -108,4 +119,13 @@ public class ApiResponse extends BaseResponse {
|
||||
return apiResponse;
|
||||
}
|
||||
|
||||
public Response toLower() {
|
||||
ApiResponseLower apiResponseLower = new ApiResponseLower();
|
||||
apiResponseLower.setSub_code(this.subCode);
|
||||
apiResponseLower.setSub_msg(this.subMsg);
|
||||
apiResponseLower.setCode(this.subCode);
|
||||
apiResponseLower.setMsg(this.subMsg);
|
||||
apiResponseLower.setData(this.getData());
|
||||
return apiResponseLower;
|
||||
}
|
||||
}
|
||||
|
@@ -2,6 +2,7 @@ package com.gitee.sop.gateway.service;
|
||||
|
||||
import com.gitee.sop.gateway.common.ApiInfoDTO;
|
||||
import com.gitee.sop.gateway.request.ApiRequestContext;
|
||||
import com.gitee.sop.gateway.response.ApiResponse;
|
||||
import com.gitee.sop.gateway.response.Response;
|
||||
|
||||
/**
|
||||
@@ -13,4 +14,8 @@ public interface ResultWrapper {
|
||||
|
||||
Response wrap(ApiRequestContext context, ApiInfoDTO apiInfoDTO, Object result);
|
||||
|
||||
default Response wrap(ApiRequestContext context, ApiResponse apiResponse) {
|
||||
return wrap(context, null, apiResponse);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -24,9 +24,16 @@ public class ResultWrapperImpl implements ResultWrapper {
|
||||
|
||||
@Override
|
||||
public Response wrap(ApiRequestContext context, ApiInfoDTO apiInfoDTO, Object result) {
|
||||
Integer hasCommonResponse = apiInfoDTO.getHasCommonResponse();
|
||||
Integer hasCommonResponse = apiInfoDTO == null ?
|
||||
YesOrNoEnum.YES.getValue()
|
||||
: apiInfoDTO.getHasCommonResponse();
|
||||
boolean needNotWrap = YesOrNoEnum.of(hasCommonResponse) == YesOrNoEnum.NO;
|
||||
if (result instanceof ApiResponse) {
|
||||
ApiResponse apiResponse = (ApiResponse) result;
|
||||
return executeApiResponse(apiResponse, needNotWrap);
|
||||
}
|
||||
// 不需要公共返回参数
|
||||
if (YesOrNoEnum.of(hasCommonResponse) == YesOrNoEnum.NO) {
|
||||
if (needNotWrap) {
|
||||
return NoCommonResponse.success(result);
|
||||
}
|
||||
if (Objects.equals(apiConfig.getFieldLowercase(), true)) {
|
||||
@@ -36,4 +43,16 @@ public class ResultWrapperImpl implements ResultWrapper {
|
||||
}
|
||||
}
|
||||
|
||||
private Response executeApiResponse(ApiResponse apiResponse, boolean needNotWrap) {
|
||||
// 不需要公共返回参数
|
||||
if (needNotWrap) {
|
||||
return NoCommonResponse.success(apiResponse.getData());
|
||||
}
|
||||
if (Objects.equals(apiConfig.getFieldLowercase(), true)) {
|
||||
return apiResponse.toLower();
|
||||
} else {
|
||||
return apiResponse;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -11,6 +11,7 @@ import com.gitee.sop.gateway.message.ErrorEnum;
|
||||
import com.gitee.sop.gateway.request.ApiRequest;
|
||||
import com.gitee.sop.gateway.request.ApiRequestContext;
|
||||
import com.gitee.sop.gateway.request.UploadContext;
|
||||
import com.gitee.sop.gateway.response.ApiResponse;
|
||||
import com.gitee.sop.gateway.response.Response;
|
||||
import com.gitee.sop.gateway.service.interceptor.RouteInterceptor;
|
||||
import com.gitee.sop.gateway.service.validate.Validator;
|
||||
@@ -72,7 +73,8 @@ public class RouteServiceImpl implements RouteService {
|
||||
return resultWrapper.wrap(apiRequestContext, apiInfoDTO, result);
|
||||
} catch (Exception e) {
|
||||
log.error("接口请求报错, , ip={}, apiRequest={}", apiRequestContext.getIp(), apiRequest, e);
|
||||
return exceptionExecutor.executeException(apiRequestContext, e);
|
||||
ApiResponse apiResponse = exceptionExecutor.executeException(apiRequestContext, e);
|
||||
return resultWrapper.wrap(apiRequestContext, apiResponse);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user