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,21 +0,0 @@
|
||||
package com.gitee.sop.gateway.common;
|
||||
|
||||
/**
|
||||
* @author 六如
|
||||
*/
|
||||
public class AttachmentNames {
|
||||
|
||||
/** 分配给开发者的应用ID */
|
||||
public static final String APP_ID_NAME = "client.app_id";
|
||||
/** 接口名称 */
|
||||
public static final String API_NAME = "client.method";
|
||||
/** 调用的接口版本 */
|
||||
public static final String VERSION_NAME = "client.version";
|
||||
/** 开放平台主动通知商户服务器里指定的页面http/https路径 */
|
||||
public static final String NOTIFY_URL_NAME = "client.notify_url";
|
||||
/** OAuth 2.0授权token */
|
||||
public static final String APP_AUTH_TOKEN_NAME = "client.app_auth_token";
|
||||
public static final String CLIENT_IP = "client.ip";
|
||||
public static final String TRACE_ID = "client.trace_id";
|
||||
|
||||
}
|
@@ -3,7 +3,6 @@ package com.gitee.sop.gateway.service;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.gitee.sop.gateway.common.ApiInfoDTO;
|
||||
import com.gitee.sop.gateway.common.AttachmentNames;
|
||||
import com.gitee.sop.gateway.common.ParamInfoDTO;
|
||||
import com.gitee.sop.gateway.exception.ApiException;
|
||||
import com.gitee.sop.gateway.exception.ExceptionExecutor;
|
||||
@@ -16,8 +15,19 @@ import com.gitee.sop.gateway.response.Response;
|
||||
import com.gitee.sop.gateway.service.interceptor.RouteInterceptor;
|
||||
import com.gitee.sop.gateway.service.validate.Validator;
|
||||
import com.gitee.sop.gateway.util.ClassUtil;
|
||||
import com.gitee.sop.support.constants.AttachmentNames;
|
||||
import com.gitee.sop.support.dto.CommonFileData;
|
||||
import com.gitee.sop.support.dto.DefaultOpenRequest;
|
||||
import com.gitee.sop.support.dto.FileData;
|
||||
import com.gitee.sop.support.dto.OpenRequest;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.PostConstruct;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.common.utils.ClassUtils;
|
||||
import org.apache.dubbo.rpc.RpcContext;
|
||||
@@ -26,14 +36,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
/**
|
||||
@@ -93,13 +95,14 @@ public class RouteServiceImpl implements RouteService {
|
||||
protected void setAttachment(ApiRequestContext apiRequestContext) {
|
||||
ApiRequest apiRequest = apiRequestContext.getApiRequest();
|
||||
RpcContextAttachment clientAttachment = RpcContext.getClientAttachment();
|
||||
clientAttachment.setAttachment(AttachmentNames.APP_ID_NAME, apiRequest.getAppId());
|
||||
clientAttachment.setAttachment(AttachmentNames.APP_ID, apiRequest.getAppId());
|
||||
clientAttachment.setAttachment(AttachmentNames.API_NAME, apiRequest.getMethod());
|
||||
clientAttachment.setAttachment(AttachmentNames.VERSION_NAME, apiRequest.getVersion());
|
||||
clientAttachment.setAttachment(AttachmentNames.APP_AUTH_TOKEN_NAME, apiRequest.getAppAuthToken());
|
||||
clientAttachment.setAttachment(AttachmentNames.NOTIFY_URL_NAME, apiRequest.getNotifyUrl());
|
||||
clientAttachment.setAttachment(AttachmentNames.VERSION, apiRequest.getVersion());
|
||||
clientAttachment.setAttachment(AttachmentNames.APP_AUTH_TOKEN, apiRequest.getAppAuthToken());
|
||||
clientAttachment.setAttachment(AttachmentNames.NOTIFY_URL, apiRequest.getNotifyUrl());
|
||||
clientAttachment.setAttachment(AttachmentNames.CLIENT_IP, apiRequestContext.getIp());
|
||||
clientAttachment.setAttachment(AttachmentNames.TRACE_ID, apiRequestContext.getTraceId());
|
||||
clientAttachment.setAttachment(AttachmentNames.LOCALE, apiRequestContext.getLocale().toLanguageTag());
|
||||
}
|
||||
|
||||
protected void doPreRoute(ApiRequestContext apiRequestContext, ApiInfoDTO apiInfoDTO) {
|
||||
@@ -136,8 +139,13 @@ public class RouteServiceImpl implements RouteService {
|
||||
for (ParamInfoDTO paramInfoDTO : paramInfoList) {
|
||||
String type = paramInfoDTO.getType();
|
||||
String actualType = paramInfoDTO.getActualType();
|
||||
// 处理文件上传
|
||||
if (Objects.equals(type, FileData.class.getName()) || Objects.equals(actualType, FileData.class.getName())) {
|
||||
|
||||
// 上下文
|
||||
if (Objects.equals(type, OpenRequest.class.getName())) {
|
||||
OpenRequest openRequest = buildOpenRequest(apiRequestContext);
|
||||
params.add(openRequest);
|
||||
} else if (Objects.equals(type, FileData.class.getName()) || Objects.equals(actualType, FileData.class.getName())) {
|
||||
// 处理文件上传
|
||||
Optional<Object> fileParam = buildFileParam(apiRequestContext, paramInfoDTO);
|
||||
if (!fileParam.isPresent()) {
|
||||
continue;
|
||||
@@ -163,6 +171,20 @@ public class RouteServiceImpl implements RouteService {
|
||||
return params.toArray(new Object[0]);
|
||||
}
|
||||
|
||||
protected OpenRequest buildOpenRequest(ApiRequestContext apiRequestContext) {
|
||||
ApiRequest apiRequest = apiRequestContext.getApiRequest();
|
||||
DefaultOpenRequest defaultOpenRequest = new DefaultOpenRequest();
|
||||
defaultOpenRequest.setAppId(apiRequest.getAppId());
|
||||
defaultOpenRequest.setApiName(apiRequest.getMethod());
|
||||
defaultOpenRequest.setVersion(apiRequest.getVersion());
|
||||
defaultOpenRequest.setAppAuthToken(apiRequest.getAppAuthToken());
|
||||
defaultOpenRequest.setClientIp(apiRequestContext.getIp());
|
||||
defaultOpenRequest.setNotifyUrl(apiRequest.getNotifyUrl());
|
||||
defaultOpenRequest.setTraceId(apiRequestContext.getTraceId());
|
||||
defaultOpenRequest.setLocale(apiRequestContext.getLocale());
|
||||
return defaultOpenRequest;
|
||||
}
|
||||
|
||||
protected Optional<Object> buildFileParam(ApiRequestContext apiRequestContext, ParamInfoDTO paramInfoDTO) {
|
||||
UploadContext uploadContext = apiRequestContext.getUploadContext();
|
||||
if (uploadContext == null) {
|
||||
|
@@ -48,12 +48,12 @@ public class ResultRouteInterceptor implements RouteInterceptor {
|
||||
"originalFilename": "application.properties",
|
||||
"empty": false
|
||||
*/
|
||||
CommonFileData commonFileData = new CommonFileData();
|
||||
commonFileData.setName(String.valueOf(map.get(KEY_NAME)));
|
||||
commonFileData.setOriginalFilename(String.valueOf(map.get(KEY_ORIGINAL_FILENAME)));
|
||||
commonFileData.setContentType(String.valueOf(map.get(KEY_CONTENT_TYPE)));
|
||||
commonFileData.setData((byte[]) map.get(KEY_BYTES));
|
||||
return commonFileData;
|
||||
CommonFileData fileData = new CommonFileData();
|
||||
fileData.setName(String.valueOf(map.get(KEY_NAME)));
|
||||
fileData.setOriginalFilename(String.valueOf(map.get(KEY_ORIGINAL_FILENAME)));
|
||||
fileData.setContentType(String.valueOf(map.get(KEY_CONTENT_TYPE)));
|
||||
fileData.setData((byte[]) map.get(KEY_BYTES));
|
||||
return fileData;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user