Forráskód Böngészése

add 统一返回处理

GITZYY 7 hónapja
szülő
commit
58bc045ae4

+ 16 - 0
egress-gateway-service-client/src/main/java/com/hrsk/cloud/eg/vo/response/DataVo.java

@@ -1,5 +1,7 @@
 package com.hrsk.cloud.eg.vo.response;
 
+import com.hrsk.cloud.eg.constant.ResultCodeEnum;
+
 import java.io.Serializable;
 
 /**
@@ -16,4 +18,18 @@ public class DataVo implements Serializable {
     private Integer status;
 
     private String msg;
+
+    public DataVo(Integer status, String msg) {
+        this.status = status;
+        this.msg = msg;
+    }
+
+    public static DataVo success(){
+        return new DataVo(1,"撞库成功");
+    }
+    public static DataVo fail(){
+        return new DataVo(0,"撞库失败");
+    }
+
+
 }

+ 12 - 0
egress-gateway-service-domain/src/main/java/com/hrsk/cloud/eg/domain/api/ApiFactory.java

@@ -32,6 +32,18 @@ public class ApiFactory {
         return null;
     }
 
+
+    /**
+     * @description: 构建统一返回值
+     * @param:
+     * @return:
+     * @author zhangyy
+     * @date: 2024/9/2 16:33
+     */
+    public Object createResult(ApiConfig apiConfig,Object output){
+        HttpApi httpApi = DomainFactory.create(HttpApi.class);
+        return httpApi.loadResult((HttpApiConfig) apiConfig,output);
+    }
     /**
      * 创建HTTP API
      * @param httpApiConfig http api config

+ 38 - 4
egress-gateway-service-domain/src/main/java/com/hrsk/cloud/eg/domain/api/HttpApi.java

@@ -4,15 +4,14 @@ import com.alibaba.cola.domain.Entity;
 import com.alibaba.cola.exception.BizException;
 import com.hrsk.cloud.eg.domain.api.common.ApiPayloadTypeEnum;
 import com.hrsk.cloud.eg.domain.api.resolver.payload.ApiPayloadResolverManage;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import com.hrsk.cloud.eg.vo.response.DefaultResponseVo;
 import lombok.Getter;
 import lombok.ToString;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.util.CollectionUtils;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -21,6 +20,7 @@ import java.util.Objects;
  * @create: 2024-07-26 17:59
  * @description: HTTP API
  **/
+@Slf4j
 @ToString
 @Entity
 public class HttpApi implements Api {
@@ -87,6 +87,19 @@ public class HttpApi implements Api {
         loadBody(context);
     }
 
+    /**
+     * @description: 加载返回值配置
+     * @author zhangyy
+     * @date 2024/9/2 15:58
+     * @version 1.0
+     */
+    public Object loadResult(HttpApiConfig config,Object output){
+        this.httpApiConfig = config;
+        ApiResult context = new ApiResult(output);
+         return doLoadResult(context);
+    }
+
+
     /**
      * 加载path,包含path和search
      * @param context 上下文
@@ -130,6 +143,27 @@ public class HttpApi implements Api {
             throw new BizException("不支持的请求体类型!");
         }
     }
+    /**
+     * @description:  解析返回值
+     * @param:
+     * @return:
+     * @author zhangyy
+     * @date: 2024/9/2 16:01
+     */
+    private Object doLoadResult(ApiResult output) {
+        Object result = null;
+        try {
+            if(StringUtils.equals(httpApiConfig.getContentType(), ApiPayloadTypeEnum.APPLICATION_JSON.getCode())){
+                result=Objects.toString(ApiPayloadResolverManage.getInstance().resolve(httpApiConfig.getContentType(),httpApiConfig.getResult(),output),"");
+            }
+        }catch (Exception e){
+            //下面这种方式是默认和统一的返回
+            log.error("Api 统一返回值解析异常",e);
+            return DataVo.fail();
+        }
+        return result;
+
+    }
 
 
 }

+ 4 - 0
egress-gateway-service-domain/src/main/java/com/hrsk/cloud/eg/domain/api/HttpApiConfig.java

@@ -46,5 +46,9 @@ public class HttpApiConfig extends ApiConfig implements Serializable {
      */
     private String content;
 
+     /**
+     * result 返回值
+     */
+    private String result;
 
 }

+ 11 - 0
egress-gateway-service-domain/src/main/java/com/hrsk/cloud/eg/domain/api/resolver/payload/ApiPayloadResolverManage.java

@@ -2,6 +2,7 @@ package com.hrsk.cloud.eg.domain.api.resolver.payload;
 
 import com.google.common.collect.Maps;
 import com.hrsk.cloud.eg.domain.api.ApiContext;
+import com.hrsk.cloud.eg.domain.api.ApiResult;
 import com.hrsk.cloud.eg.domain.api.common.ApiPayloadTypeEnum;
 import lombok.extern.slf4j.Slf4j;
 
@@ -46,6 +47,16 @@ public class ApiPayloadResolverManage {
     public Object resolve(String code, String template, ApiContext apiContext){
         return RESOLVER_MAP.get(code).resolve(template,apiContext);
     }
+
+    /**
+     * 解析
+     * @param code 编码
+     * @param apiResult
+     * @return 解析结果
+     */
+    public Object resolve(String code, String template, ApiResult apiResult){
+        return RESOLVER_MAP.get(code).resolve(template,apiResult);
+    }
     /**
      * 注册
      */

+ 3 - 2
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/ApiGateWayImpl/ApiGatewayImpl.java

@@ -28,7 +28,8 @@ public class ApiGatewayImpl implements ApiGateway {
 
     @Override
     public DefaultResponseVo<DataVo> checkIntoRequest(CheckIntoParamDto param) {
-         checkIntoService.checkInto(param);
-        return DefaultResponseVo.success();
+        Object data = checkIntoService.checkInto(param);
+        return DefaultResponseVo.success((DataVo) data);
+
     }
 }

+ 4 - 3
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/business/HttpRequestCheckIntoService.java

@@ -10,6 +10,8 @@ import com.hrsk.cloud.eg.infrastructure.config.client.HttpTemPlateClient;
 import com.hrsk.cloud.eg.infrastructure.repository.database.entity.EgApiEndpointDo;
 import com.hrsk.cloud.eg.infrastructure.service.EgApiEndpointService;
 import com.hrsk.cloud.eg.infrastructure.service.EgApiService;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import com.hrsk.cloud.eg.vo.response.DefaultResponseVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -53,11 +55,10 @@ public class HttpRequestCheckIntoService {
              httpApiConfig.setType(type);
             Api api = apiFactory.createApi(httpApiConfig,paramDto);
             Object result = httpTemPlateClient.request((HttpApi) api);
-
-            return  result;
+           return apiFactory.createResult(httpApiConfig,result);
         } catch (Exception e) {
             log.error("check into error ",e);
         }
-        return null;
+        return DataVo.fail();
     }
 }