From e27de138abc4725bea60909fe59f72da754bf669 Mon Sep 17 00:00:00 2001
From: wuxw7 <wuxw7@asiainfo.com>
Date: 星期三, 12 四月 2017 00:26:25 +0800
Subject: [PATCH] 修复用户服务主键生成bug,订单服务代码开发
---
UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java | 263 +++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 235 insertions(+), 28 deletions(-)
diff --git a/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java b/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java
index 22b9271..6097884 100644
--- a/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java
+++ b/UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java
@@ -5,24 +5,36 @@
import com.java110.common.log.LoggerEngine;
import com.java110.common.util.ProtocolUtil;
import com.java110.entity.user.BoCust;
+import com.java110.entity.user.BoCustAttr;
+import com.java110.entity.user.Cust;
import com.java110.feign.base.IPrimaryKeyService;
+import com.java110.user.dao.IUserServiceDao;
import com.java110.user.smo.IUserServiceSMO;
import com.java110.core.base.smo.BaseServiceSMO;
import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* 鐢ㄦ埛鏈嶅姟淇℃伅绠$悊涓氬姟淇℃伅瀹炵幇
* Created by wuxw on 2017/4/5.
*/
@Service("userServiceSMOImpl")
+@Transactional
public class UserServiceSMOImpl extends BaseServiceSMO implements IUserServiceSMO {
@Autowired
IPrimaryKeyService iPrimaryKeyService;
+
+ @Autowired
+ IUserServiceDao iUserServiceDao;
//鏂板鐢ㄦ埛
private final static String USER_ACTION_ADD = "ADD";
@@ -39,7 +51,7 @@
* @param userInfoJson 鍏ュ弬涓虹敤鎴蜂俊鎭痡son浼�
* @return
*/
- public String saveUser(String userInfoJson) {
+ public String saveUser(String userInfoJson) throws Exception{
JSONObject reqUserJSON = null;
try {
@@ -62,7 +74,7 @@
//杩斿洖寮傚父淇℃伅
return e.getMessage();
}
- return soUserService(reqUserJSON.toJSONString());
+ return soUserService(reqUserJSON);
}
@@ -72,29 +84,58 @@
* @param userInfoJson
* @return
*/
- public String soUserService(String userInfoJson) {
+ public String soUserService(JSONObject userInfoJson) throws Exception{
LoggerEngine.debug("鐢ㄦ埛鏈嶅姟鎿嶄綔瀹㈡埛鍏ュ弬锛�" + userInfoJson);
- String resultUserInfo = null;
- JSONObject reqUserJSON = null;
- try {
- reqUserJSON = this.simpleValidateJSON(userInfoJson);
- //1.0瑙勫垯鏍¢獙锛屾姤鏂囨槸鍚﹀悎娉�
+ JSONObject paramJson = new JSONObject();
- if(reqUserJSON.containsKey("boCust")){
+ JSONObject resultInfo = null;
- }
+ //瀛樻斁鐢熸垚鐨刢ustId 涓婚敭涓� custId-1 71000010100
+ Map custIdKey = new HashMap();
- if(reqUserJSON.containsKey("boCustAttr")){
-
- }
-
- //2.0
- } catch (Exception e) {
- LoggerEngine.error("鏈嶅姟澶勭悊鍑虹幇寮傚父锛�", e);
- } finally {
- LoggerEngine.debug("鐢ㄦ埛鏈嶅姟鎿嶄綔瀹㈡埛鍑哄弬锛�" + resultUserInfo);
- return resultUserInfo;
+ if (userInfoJson == null){
+ throw new IllegalArgumentException("soUserService 鍏ュ弬 涓虹┖"+userInfoJson);
}
+ // 瀹㈡埛淇℃伅澶勭悊
+ if(userInfoJson.containsKey("boCust")){
+ JSONArray boCusts = userInfoJson.getJSONArray("boCust");
+ JSONObject boCustObj = new JSONObject();
+ boCustObj.put("boCust",boCusts);
+ String returnSaveBoCust = this.soBoCust(boCustObj.toJSONString(),custIdKey);
+
+ if(!ProtocolUtil.validateReturnJson(returnSaveBoCust,paramJson)){
+
+ throw new RuntimeException("淇濆瓨 bo_cust 澶辫触锛�"+boCustObj+(paramJson != null
+ && paramJson.containsKey("RESULT_MSG")?paramJson.getString("RESULT_MSG"):"鏈煡寮傚父"));
+ }
+
+ resultInfo = paramJson.getJSONObject("RESULT_INFO");
+ }
+
+ //瀹㈡埛灞炴�т俊鎭鐞�
+ if(userInfoJson.containsKey("boCustAttr")){
+
+ JSONArray boCustAttrs = userInfoJson.getJSONArray("boCustAttr");
+ //棣栧厛瀵筩ustId 杩涜澶勭悊
+ if(custIdKey != null && custIdKey.size() > 0 ){
+ for(int boCustAttrIndex = 0 ; boCustAttrIndex < boCustAttrs.size();boCustAttrIndex++){
+ JSONObject boCustAttr = boCustAttrs.getJSONObject(boCustAttrIndex);
+ boCustAttr.put("custId",custIdKey.get("custId"+boCustAttr.getString("custId")));
+ }
+ }
+ JSONObject boCustAttrObj = new JSONObject();
+ boCustAttrObj.put("boCustAttr",boCustAttrs);
+ String returnSaveBoCustAttr = soBoCustAttr(boCustAttrObj.toJSONString());
+
+ if(!ProtocolUtil.validateReturnJson(returnSaveBoCustAttr,paramJson)){
+
+ throw new RuntimeException("淇濆瓨 bo_cust 澶辫触锛�"+boCustAttrObj+(paramJson != null
+ && paramJson.containsKey("RESULT_MSG")?paramJson.getString("RESULT_MSG"):"鏈煡寮傚父"));
+ }
+ }
+
+ return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_SUCCESS,"鎴愬姛",resultInfo);
+
}
/**
@@ -102,25 +143,54 @@
* boCust:[{},{}]
* }
* 瀹㈡埛淇″績澶勭悊
+ *
+ *
* @param boCusts
- * @return
+ * @return 鎴愬姛 浼氬甫涓婂鐞嗗鎴风殑瀹㈡埛ID
+ * {'RESULT_CODE':'0000','RESULT_MSG':'鎴愬姛','RESULT_INFO':{'custId':'7000123,718881991}}
* @throws Exception
*/
public String soBoCust(String boCusts) throws Exception{
+ return soBoCust(boCusts,null);
+ }
+
+ /**
+ * 灏嗙敓鎴愮殑custId 灏佽鍦╩ap涓繑鍥�
+ * ...
+ * custIdKey.put("custId-1","710020404040");
+ *
+ * ...
+ *
+ * key 涓� custId 鍔犲師鍓嶇殑鍊�
+ *
+ * custIdKey 濡傛灉涓虹┖涓嶅仛澶勭悊
+ * @param boCusts 瀹㈡埛淇℃伅
+ * @param custIdKey custIdKeymap
+ * @return
+ * @throws Exception
+ */
+ public String soBoCust(String boCusts,Map custIdKey) throws Exception{
// 灏� jsonArray 杞负list<BoCust> 瀵硅薄
JSONObject jsonObject = JSONObject.parseObject(boCusts);
+ JSONObject resultInfo = new JSONObject();
+
+ String custIds = "";
+
List<BoCust> boCustList = JSONObject.parseArray(jsonObject.getJSONArray("boCust").toJSONString(), BoCust.class);
+ Collections.sort(boCustList);
//淇濆瓨鏁版嵁
for(BoCust boCust : boCustList){
- int custId = NumberUtils.toInt(boCust.getBoId(),-1);
+// for(int boCustIndex = 0 ; boCustIndex < boCustList.size();boCustIndex++){
+// BoCust boCust = boCustList.get(boCustIndex);
+ String custId = boCust.getBoId();
//濡傛灉瀹㈡埛ID灏忎簬0 锛屽垯鑷繁鐢熸垚瀹㈡埛ID,杩欎釜鍙湁鍦ㄦ湁 涓婚敭鐢熸垚鏈嶅姟鏃朵娇鐢紝鍚﹀垯涓轰簡闃叉鍑洪敊锛岄渶瑕佸墠娈佃皟鐢ㄦ椂闇�瑕佺敓鎴恈ustId
- if(custId < 0 ){
- JSONObject data = new JSONObject();
+ if(StringUtils.isBlank(custId) || custId.startsWith("-") ){
+ /*JSONObject data = new JSONObject();
data.put("type","CUST_ID");
- //{"RESULT_CODE":"0000","RESULT_INFO":{"user_id":"7020170411000041"},"RESULT_MSG":"鎴愬姛"}
+ //瑕佹眰鎺ュ彛杩斿洖 {"RESULT_CODE":"0000","RESULT_INFO":{"user_id":"7020170411000041"},"RESULT_MSG":"鎴愬姛"}
String custIdJSONStr = iPrimaryKeyService.queryPrimaryKey(data.toJSONString());
JSONObject custIdJSONTmp = JSONObject.parseObject(custIdJSONStr);
if(custIdJSONTmp.containsKey("RESULT_CODE")
@@ -128,15 +198,82 @@
&& custIdJSONTmp.containsKey("RESULT_INFO")){
//浠庢帴鍙g敓鎴恈ustId
custId = NumberUtils.toInt(custIdJSONTmp.getJSONObject("RESULT_INFO").getString("CUST_ID"),-1);
+ }*/
+
+ custId = this.queryPrimaryKey(iPrimaryKeyService,"CUST_ID");
+
+ //灏� 鏂扮敓鎴愮殑custId淇濆瓨鑷� map涓� custId-1 custId-2 涓婚敭鏂瑰紡瀛樺叆
+ if(custIdKey != null){
+ custIdKey.put("custId"+boCust.getCustId(),custId);
}
}
- boCust.setCustId(custId+"");
+ boCust.setCustId(custId);
+
+ //淇濆瓨鏁版嵁鑷� bo_cust 琛ㄤ腑
+ int saveBoCustFlag = iUserServiceDao.saveDataToBoCust(boCust);
+
+ if(saveBoCustFlag < 1){ // 濡傛灉娌℃湁淇濆瓨鎴愬姛锛屾姏鍑哄紓甯革紝鏈変簨鐗� 鍥為��浜嬬墿
+ throw new RuntimeException("淇濆瓨杩囩▼[bo_cust]鏁版嵁澶辫触,鍗拌薄璁板綍鏁颁负"+saveBoCustFlag+"锛宐oCust : "+boCust);
+ }
+ //寤烘。 澶勭悊 瀹炰緥鏁版嵁
+ int saveCustFlag = 0;
+ if("ADD".equals(boCust.getState())){
+ /* List<BoCust> boCustsTmp = boCustList;
+ //鍦ㄥ鍔犱箣闂撮鍏堣鍒ゆ柇鏄惁鏈夌浉搴斿垹鐨勫姩浣�
+// for(BoCust boCustTmp : boCustsTmp){
+ for(int boCustTmpIndex = boCustIndex+1;boCustTmpIndex < boCustsTmp.size();boCustTmpIndex++){
+ BoCust boCustTmp = boCustsTmp.get(boCustTmpIndex);
+ if(StringUtils.isNotBlank(boCust.getCustId())
+ && boCust.getCustId().equals(boCustTmp.getCustId())
+ &&"DEL".equals(boCustTmp.getState())){
+ //鍏堣皟鐢ㄥ垹闄ゅ鎴蜂俊鎭�
+ saveCustFlag = iUserServiceDao.deleteDataToCust(boCust.convert());
+
+ if(saveCustFlag < 1){
+ throw new RuntimeException("鍒犻櫎瀹炰緥[cust]鏁版嵁澶辫触锛屽奖鍝嶈褰曟暟涓�"+saveCustFlag+", cust : "+boCust.convert());
+ }
+
+ //鍒欐妸宸茬粡鍒犻櫎杩囩殑浠巐ist涓垹闄わ紝浠ラ槻閲嶅鍒犻櫎
+ boCustList.remove(boCustTmp);
+
+ }
+ }*/
+
+ saveCustFlag = iUserServiceDao.saveDataToCust(boCust.convert());
+ }else if("DEL".equals(boCust.getState())){
+ saveCustFlag = iUserServiceDao.deleteDataToCust(boCust.convert());
+ }else if("KIP".equals(boCust.getState())){
+ //鎸夌悊杩欓噷鍒颁笉浜嗭紝KIP琛ㄧず瀹炰緥鏁版嵁涓嶅彉锛屾墍浠ヨ繖閲岄粯璁ゅ啓鎴�1 璁や负鏄垚鍔�
+ saveCustFlag = 1;
+ }else{
+ //杩欓噷鍗曠嫭鎶涘嚭寮傚父锛屼笉璧颁笅闈㈢粺涓�寮傚父鎶涘嚭锛屾槸涓轰簡璇存槑鏇村叿浣撶偣
+ throw new RuntimeException("鍏ュ弬閿欒boCust 鐨� state 鐩墠鍙敮鎸� [ADD,DEL,KIP] , boCust : " +boCust);
+ }
+
+
+ if(saveCustFlag < 1){
+ throw new RuntimeException("淇濆瓨瀹炰緥[cust]鏁版嵁澶辫触锛屽奖鍝嶈褰曟暟涓�"+saveCustFlag+", cust : "+boCust.convert());
+ }
+
+ custIds +=","+custId;
+
}
- return "";
+
+ //鍘婚櫎绗竴涓�楀彿
+ if (custIds.length()>0){
+ custIds = custIds.substring(1);
+ }
+
+ resultInfo.put("custId",custIds);
+
+ return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_SUCCESS,"鎴愬姛",resultInfo);
}
/**
+ * 娉ㄦ剰鍦ㄨ皟鐢ㄨ繖涓帴鍙f椂锛岀浉搴旂殑瀹㈡埛淇℃伅蹇呴』瀛樺湪
+ *
+ *
* 瀹㈡埛淇℃伅灞炴�у鐞�
* 鍗忚锛�
*{
@@ -148,7 +285,69 @@
*/
@Override
public String soBoCustAttr(String boCustAttrs) throws Exception {
- return null;
+
+ //杩欓噷鍙互鍔犲叆鍩烘湰瀹㈡埛淇℃伅鏄惁瀛樺湪鐨勬牎楠岋紝鏆傛椂娌℃湁蹇呰瀹炵幇
+
+ // 灏� jsonArray 杞负list<BoCust> 瀵硅薄
+ JSONObject jsonObject = JSONObject.parseObject(boCustAttrs);
+
+ List<BoCustAttr> boCustAttrList = JSONObject.parseArray(jsonObject.getJSONArray("boCustAttr").toJSONString(), BoCustAttr.class);
+
+ //鍏堟媿涓簭 鍏堝鐞咲EL 鍐嶅鐞咥DD
+ Collections.sort(boCustAttrList);
+ //淇濆瓨鏁版嵁
+
+ for(BoCustAttr boCustAttr : boCustAttrList) {
+
+ //淇濆瓨鏁版嵁鑷� bo_cust_attr 琛ㄤ腑
+ int saveBoCustAttrFlag = iUserServiceDao.saveDataToBoCustAttr(boCustAttr);
+
+ if(saveBoCustAttrFlag < 1){ // 濡傛灉娌℃湁淇濆瓨鎴愬姛锛屾姏鍑哄紓甯革紝鏈変簨鐗� 鍥為��浜嬬墿
+ throw new RuntimeException("淇濆瓨杩囩▼[bo_cust_attr]鏁版嵁澶辫触,鍗拌薄璁板綍鏁颁负"+saveBoCustAttrFlag+"锛宐oCustAttr : "+boCustAttr);
+ }
+
+ //寤烘。 澶勭悊 瀹炰緥鏁版嵁
+ int saveCustAttrFlag = 0;
+ if("ADD".equals(boCustAttr.getState())){
+ saveCustAttrFlag = iUserServiceDao.saveDataToCustAttr(boCustAttr.convert());
+ }else if("DEL".equals(boCustAttr.getState())){
+ saveCustAttrFlag = iUserServiceDao.deleteDataToCustAttr(boCustAttr.convert());
+ }else if("KIP".equals(boCustAttr.getState())){
+ //鎸夌悊杩欓噷鍒颁笉浜嗭紝KIP琛ㄧず瀹炰緥鏁版嵁涓嶅彉锛屾墍浠ヨ繖閲岄粯璁ゅ啓鎴�1 璁や负鏄垚鍔�
+ saveCustAttrFlag = 1;
+ }else{
+ //杩欓噷鍗曠嫭鎶涘嚭寮傚父锛屼笉璧颁笅闈㈢粺涓�寮傚父鎶涘嚭锛屾槸涓轰簡璇存槑鏇村叿浣撶偣
+ throw new RuntimeException("鍏ュ弬閿欒boCustAttr 鐨� state 鐩墠鍙敮鎸� [ADD,DEL,KIP] , boCust : " +boCustAttr);
+ }
+
+ if(saveCustAttrFlag < 1){
+ throw new RuntimeException("淇濆瓨瀹炰緥[cust_attr]鏁版嵁澶辫触锛屽奖鍝嶈褰曟暟涓�"+saveCustAttrFlag+", cust : "+boCustAttr.convert());
+ }
+ }
+
+ return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_SUCCESS,"鎴愬姛",null);
+ }
+
+
+ /**
+ * 鏌ヨ瀹㈡埛淇℃伅
+ * 鍖呮嫭 鍩烘湰淇℃伅cust 鍜� 灞炴�т俊鎭� custAttr
+ * @param cust
+ * @return
+ * @throws Exception
+ */
+ public String queryCust(Cust cust) throws Exception{
+ LoggerEngine.debug("瀹㈡埛淇℃伅鏌ヨ鍏ュ弬锛�" + cust);
+ if(cust == null || StringUtils.isBlank(cust.getCustId()) ){
+ throw new IllegalArgumentException("瀹㈡埛淇℃伅鏌ヨ鍏ュ弬涓虹┖锛宑ustId 涓虹┖ "+cust);
+ }
+ Cust newCust = iUserServiceDao.queryDataToCust(cust);
+
+ if(newCust == null){
+ return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"鏈壘鍒扮敤鎴蜂俊鎭�",null);
+ }
+
+ return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_SUCCESS,"鎴愬姛",JSONObject.parseObject(JSONObject.toJSONString(newCust)));
}
public IPrimaryKeyService getiPrimaryKeyService() {
@@ -158,4 +357,12 @@
public void setiPrimaryKeyService(IPrimaryKeyService iPrimaryKeyService) {
this.iPrimaryKeyService = iPrimaryKeyService;
}
+
+ public IUserServiceDao getiUserServiceDao() {
+ return iUserServiceDao;
+ }
+
+ public void setiUserServiceDao(IUserServiceDao iUserServiceDao) {
+ this.iUserServiceDao = iUserServiceDao;
+ }
}
--
Gitblit v1.8.0