From 601a32ba5dcee884180908ad00b9d7f65a4e7fea Mon Sep 17 00:00:00 2001
From: wuxw7 <wuxw7@asiainfo.com>
Date: 星期一, 24 四月 2017 10:38:24 +0800
Subject: [PATCH] 新建客户时,将新生成的客户主键信息回写至AppContext 中方便于其他模块用改造

---
 OrderService/src/main/java/com/java110/order/listener/CustDispatchListener.java |   38 +++++++++++++++++++++++++++++++-------
 1 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/OrderService/src/main/java/com/java110/order/listener/CustDispatchListener.java b/OrderService/src/main/java/com/java110/order/listener/CustDispatchListener.java
index 53eb1f6..a49c378 100644
--- a/OrderService/src/main/java/com/java110/order/listener/CustDispatchListener.java
+++ b/OrderService/src/main/java/com/java110/order/listener/CustDispatchListener.java
@@ -2,6 +2,9 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONPath;
+import com.java110.common.log.LoggerEngine;
+import com.java110.common.util.Assert;
 import com.java110.common.util.ProtocolUtil;
 import com.java110.core.context.AppContext;
 import com.java110.core.event.AppCustEvent;
@@ -10,7 +13,8 @@
 import com.java110.feign.user.IUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.springframework.util.Assert;
+import org.springframework.util.ObjectUtils;
+
 
 import java.util.List;
 
@@ -42,19 +46,39 @@
 
         Assert.hasLength(custInfo,"娌℃湁闇�瑕佸鐞嗙殑淇℃伅[custInfo="+custInfo+"]");
 
-        //璋冪敤鐢ㄦ埛鏈嶅姟澶勭悊
+        //璋冪敤鐢ㄦ埛鏈嶅姟澶勭悊,姝e父杩斿洖 {'RESULT_CODE':'0000','RESULT_MSG':'鎴愬姛','RESULT_INFO':{'custId':'7000123,718881991'}}
         String returnUser = iUserService.soUserServiceForOrderService(custInfo);
 
         JSONObject returnUserTmp = JSONObject.parseObject(returnUser);
 
         Assert.notNull(returnUserTmp,"鐢ㄦ埛鏈嶅姟娌℃湁鐩稿簲锛岃妫�鏌ユ湇鍔℃槸鍚︽甯革紝璇锋眰鎶ユ枃锛�"+returnUser);
         //鍙楃悊涓嶆垚鍔�
-        if(!returnUserTmp.containsKey("RESULT_CODE")
-                || !ProtocolUtil.RETURN_MSG_SUCCESS.equals(returnUserTmp.getString("RESULT_CODE"))){
-            throw new IllegalArgumentException("瀹㈡埛鍙楃悊澶辫触锛屽け璐ュ師鍥狅細" + (returnUserTmp.containsKey("RESULT_MSG")
-                    ?"鏈煡鍘熷洜":returnUserTmp.getString("RESULT_MSG")) + "璇锋眰鎶ユ枃锛�"+returnUser);
+        if(!returnUserTmp.containsKey(ProtocolUtil.RESULT_CODE)
+                || !ProtocolUtil.RETURN_MSG_SUCCESS.equals(returnUserTmp.getString(ProtocolUtil.RESULT_CODE))){
+            throw new IllegalArgumentException("瀹㈡埛鍙楃悊澶辫触锛屽け璐ュ師鍥狅細" + (returnUserTmp.containsKey(ProtocolUtil.RESULT_MSG)
+                    ?"鏈煡鍘熷洜":returnUserTmp.getString(ProtocolUtil.RESULT_MSG)) + "璇锋眰鎶ユ枃锛�"+returnUser);
         }
-        //鍙楃悊鎴愬姛锛岀洰鍓嶄笉鍋氫换浣曞鐞�
+
+        //鍒ゆ柇鏄惁鏈夋柊寤哄鎴风殑鏁版嵁
+        Object getNewCustId = JSONPath.eval(custInfoJson,"$.data.boCust[custId < '0'][0].custId");
+
+        // 杩欓噷灏� 瀹㈡埛鏈嶅姟杩斿洖鐨� 鏂扮敓鎴愮殑custId 鍥炲啓鍒颁笂涓嬫枃瀵硅薄涓紝鏂逛究浜庡叾浠栨ā鍧楃敤
+        if(!ObjectUtils.isEmpty(getNewCustId)) {
+            //鍙楃悊鎴愬姛锛岀洰鍓嶄笉鍋氫换浣曞鐞�
+            //{'cust':[{'oldCustId':'-1','custId':'12345678'},{'oldCustId':'-2','custId':'12345678'}]} }
+            JSONObject resultInfoJ = returnUserTmp.getJSONObject(ProtocolUtil.RESULT_INFO);
+
+            Assert.isNull(resultInfoJ, "cust", "鐢ㄦ埛鏈嶅姟锛屾垚鍔熸椂杩斿洖淇℃伅閿欒锛屾病鏈夎繑鍥炴柊寤烘垚鍔熺殑cust鑺傜偣 ,returnUser = " + returnUser);
+
+            JSONArray newCusts = resultInfoJ.getJSONArray("cust");
+
+            for(int newCustIndex = 0 ; newCustIndex < newCusts.size(); newCustIndex++){
+                JSONObject newCust =  newCusts.getJSONObject(newCustIndex);
+                Assert.isNull(newCust,"custId","鐢ㄦ埛鏈嶅姟锛屾垚鍔熸椂杩斿洖淇℃伅閿欒锛屾病鏈夎繑鍥炴柊寤烘垚鍔熺殑cust鑺傜偣涓嬬殑custId ,returnUser = " + newCust);
+
+                context.setKeyId(AppContext.PREFIX_CUSTID,newCust.getString("oldCustId"),newCust.getString("custId"));
+            }
+        }
 
 
     }

--
Gitblit v1.8.0