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