Explorar el Código

用户注册返回报文处理

wuxw7 hace 7 años
padre
commit
c8665e4368

+ 53 - 4
Api/src/main/java/com/java110/api/listener/AbstractServiceApiDataFlowListener.java

@@ -2,15 +2,14 @@ package com.java110.api.listener;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ResponseConstant;
+import com.java110.common.util.Assert;
 import com.java110.common.util.StringUtil;
 import com.java110.core.context.DataFlowContext;
 import com.java110.entity.center.AppService;
 import com.java110.event.service.api.ServiceDataFlowListener;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
+import org.springframework.http.*;
 import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.HttpServerErrorException;
 import org.springframework.web.client.HttpStatusCodeException;
@@ -77,6 +76,56 @@ public abstract class AbstractServiceApiDataFlowListener implements ServiceDataF
     }
 
 
+    /**
+     * 处理返回报文信息
+     * @param dataFlowContext
+     */
+    protected void doResponse(DataFlowContext dataFlowContext) {
+        ResponseEntity<String> responseEntity = dataFlowContext.getResponseEntity();
+        ResponseEntity<String> newResponseEntity = null;
+        if(responseEntity == null || StringUtil.isNullOrNone(responseEntity.getBody()) || !Assert.isJsonObject(responseEntity.getBody())){ //这里一般进不去
+            return ;
+        }
+        JSONObject resJson = JSONObject.parseObject(responseEntity.getBody());
+
+        if(!resJson.containsKey("orders")
+                || !ResponseConstant.RESULT_CODE_SUCCESS.equals(resJson.getJSONObject("orders").getJSONObject("response").getString("code"))){
+            return ;
+        }
+
+        if(resJson.containsKey("business") && resJson.getJSONArray("business").size() == 1){
+            JSONObject busiJson = resJson.getJSONArray("business").getJSONObject(0);
+            if(busiJson.containsKey("orderTypeCd")){
+                busiJson.remove("orderTypeCd");
+            }
+            if(busiJson.containsKey("serviceCode")){
+                busiJson.remove("serviceCode");
+            }
+            if(busiJson.containsKey("response")){
+                busiJson.remove("response");
+            }
+            if(busiJson.containsKey("bId")){
+                busiJson.remove("bId");
+            }
+
+            if(busiJson.containsKey("businessType")){
+                busiJson.remove("businessType");
+            }
+
+            if(busiJson.containsKey("dataFlowId")){
+                busiJson.remove("dataFlowId");
+            }
+            //这个一般是 center服务和下游系统之间交互的流水可以删掉,返回出去也没有啥意义
+            if(busiJson.containsKey("transactionId")){
+                busiJson.remove("transactionId");
+            }
+            newResponseEntity = new ResponseEntity<String>(busiJson.toJSONString(),responseEntity.getHeaders(), HttpStatus.OK);
+
+            dataFlowContext.setResponseEntity(newResponseEntity);
+        }
+    }
+
+
     /**
      * 将rest 协议转为 订单协议
      * @param business

+ 7 - 0
Api/src/main/java/com/java110/api/listener/UserRegisterServiceListener.java

@@ -2,8 +2,11 @@ package com.java110.api.listener;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ResponseConstant;
 import com.java110.common.constant.ServiceCodeConstant;
+import com.java110.common.constant.StatusConstant;
 import com.java110.common.util.Assert;
+import com.java110.common.util.StringUtil;
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
 import com.java110.entity.center.AppService;
@@ -15,6 +18,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 
 import java.util.Map;
 
@@ -82,6 +87,8 @@ public class UserRegisterServiceListener extends AbstractServiceApiDataFlowListe
         HttpEntity<String> httpEntity = new HttpEntity<String>(paramInObj, header);
         //http://user-service/test/sayHello
         super.doRequest(dataFlowContext, service, httpEntity);
+
+        super.doResponse(dataFlowContext);
     }
 
     /**

+ 1 - 1
java110-config/db/CenterService/create_table.db

@@ -5,7 +5,7 @@ create database TT;
 CREATE TABLE c_orders(
     o_id VARCHAR(30) NOT NULL UNIQUE COMMENT '订单ID',
     app_id VARCHAR(10) NOT NULL COMMENT '应用ID',
-    ext_transaction_id VARCHAR(30) NOT NULL COMMENT '外部交易流水',
+    ext_transaction_id VARCHAR(32) NOT NULL COMMENT '外部交易流水',
     user_id VARCHAR(30) NOT NULL COMMENT '用户ID',
     request_time VARCHAR(16) NOT NULL COMMENT '外部系统请求时间',
     create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

+ 1 - 1
java110-config/db/LogService/create_table.db

@@ -2,7 +2,7 @@
 
 create table l_transaction_log(
     log_id varchar(30) not null  COMMENT 'id',
-    transaction_id VARCHAR(30) NOT NULL COMMENT '外部交易流水',
+    transaction_id VARCHAR(32) NOT NULL COMMENT '外部交易流水',
     contract_id varchar(64) not null comment '上下文ID',
     ip varchar(20) not null comment '日志产生主机IP',
     port varchar(10) not null comment '日志产生端口',

+ 4 - 0
java110-core/src/main/java/com/java110/core/context/AbstractDataFlowContext.java

@@ -369,4 +369,8 @@ public abstract class AbstractDataFlowContext extends AbstractTransactionLog imp
 
     }
 
+    public ResponseEntity getResponseEntity(){
+        return null;
+    }
+
 }

+ 1 - 1
java110-core/src/main/java/com/java110/core/context/DataFlowContext.java

@@ -101,5 +101,5 @@ public interface DataFlowContext {
 
     public void setResponseEntity(ResponseEntity responseEntity);
 
-
+    public ResponseEntity getResponseEntity();
 }