From a76cec91cf4adf1feede5dda61d97d2bbf18266a Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 11 七月 2019 20:27:20 +0800
Subject: [PATCH] 加入服务绑定功能

---
 UserService/src/main/java/com/java110/user/smo/impl/UserServiceSMOImpl.java |  159 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 116 insertions(+), 43 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 8aadac9..6a169c9 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
@@ -2,78 +2,151 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONPath;
+import com.java110.common.cache.MappingCache;
+import com.java110.common.constant.KafkaConstant;
+import com.java110.common.constant.MappingConstant;
+import com.java110.common.constant.ResponseConstant;
+import com.java110.common.constant.StateConstant;
+import com.java110.common.exception.SMOException;
+import com.java110.common.kafka.KafkaFactory;
 import com.java110.common.log.LoggerEngine;
-import com.java110.user.smo.IUserServiceSMO;
+import com.java110.common.util.Assert;
+import com.java110.common.util.DateUtil;
+import com.java110.common.util.ProtocolUtil;
 import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.context.BusinessServiceDataFlow;
+import com.java110.core.factory.DataFlowFactory;
+import com.java110.entity.center.DataFlowLinksCost;
+import com.java110.entity.center.DataFlowLog;
+import com.java110.entity.order.BusiOrder;
+import com.java110.entity.user.BoCust;
+import com.java110.entity.user.BoCustAttr;
+import com.java110.entity.user.Cust;
+import com.java110.entity.user.CustAttr;
+import com.java110.event.service.BusinessServiceDataFlowEventPublishing;
+import com.java110.user.dao.IUserServiceDao;
+import com.java110.user.smo.IUserServiceSMO;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+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 {
 
-    //鏂板鐢ㄦ埛
-    private final static String USER_ACTION_ADD = "ADD";
+    private  static Logger logger = LoggerFactory.getLogger(UserServiceSMOImpl.class);
+
+
+    @Autowired
+    IUserServiceDao iUserServiceDao;
 
     //鏂板鐢ㄦ埛
-    private final static String USER_ACTION_KIP = "KIP";
+    private static final String USER_ACTION_ADD = "ADD";
 
     //鏂板鐢ㄦ埛
-    private final static String USER_ACTION_DEL = "DEL";
+    private static final String USER_ACTION_KIP = "KIP";
 
-    /**
-     * 淇濆瓨鐢ㄦ埛淇℃伅
-     *
-     * @param userInfoJson 鍏ュ弬涓虹敤鎴蜂俊鎭痡son浼�
-     * @return
-     */
-    public String saveUser(String userInfoJson) {
+    //鏂板鐢ㄦ埛
+    private static final String USER_ACTION_DEL = "DEL";
 
-        JSONObject reqUserJSON = null;
+
+    @Override
+    public JSONObject service(BusinessServiceDataFlow businessServiceDataFlow) throws SMOException {
         try {
-            reqUserJSON = this.simpleValidateJSON(userInfoJson);
-            //boCust澧炲姞Action (鍔ㄤ綔)
-            if (reqUserJSON.containsKey("boCust")) {
-                JSONObject boCust = reqUserJSON.getJSONObject("boCust");
-                boCust.put("state", USER_ACTION_ADD);
-            }
-            //boCustAttr澧炲姞Action锛堝姩浣滐級
-            if (reqUserJSON.containsKey("boCustAttr")) {
-                JSONArray boCustAttrs = reqUserJSON.getJSONArray("boCustAttr");
+            Assert.hasLength(businessServiceDataFlow.getbId(), "bId 涓嶈兘涓虹┖");
 
-                for (int attrIndex = 0; attrIndex < boCustAttrs.size(); attrIndex++) {
-                    JSONObject boCustAttr = boCustAttrs.getJSONObject(attrIndex);
-                    boCustAttr.put("state", USER_ACTION_ADD);
-                }
+            BusinessServiceDataFlowEventPublishing.multicastEvent(businessServiceDataFlow);
+            Assert.notEmpty(businessServiceDataFlow.getResJson(), "鐢ㄦ埛鏈嶅姟[" + businessServiceDataFlow.getCurrentBusiness().getServiceCode() + "]娌℃湁杩斿洖鍐呭");
+        } catch (Exception e) {
+            logger.error("鐢ㄦ埛淇℃伅澶勭悊寮傚父", e);
+            throw new SMOException(ResponseConstant.RESULT_PARAM_ERROR, "鐢ㄦ埛淇℃伅澶勭悊寮傚父" + e.getMessage());
+        } finally {
+            if (businessServiceDataFlow == null) {
+                return null;
             }
-        } catch (RuntimeException e) {
-            //杩斿洖寮傚父淇℃伅
-            return e.getMessage();
+
+            //杩欓噷璁板綍鏃ュ織
+            Date endDate = DateUtil.getCurrentDate();
+
+            businessServiceDataFlow.setEndDate(endDate);
+            //娣诲姞鑰楁椂
+            DataFlowFactory.addCostTime(businessServiceDataFlow, "service", "涓氬姟澶勭悊鎬昏�楁椂",
+                    businessServiceDataFlow.getStartDate(), businessServiceDataFlow.getEndDate());
+            //淇濆瓨鑰楁椂
+            saveCostTimeLogMessage(businessServiceDataFlow);
+            //淇濆瓨鏃ュ織
+            saveLogMessage(businessServiceDataFlow);
         }
-        return soUserService(reqUserJSON.toJSONString());
+        return businessServiceDataFlow.getResJson();
     }
 
 
     /**
-     * 鎵�鏈夋湇鍔″鐞嗙被
+     * 淇濆瓨鏃ュ織淇℃伅
      *
-     * @param userInfoJson
-     * @return
+     * @param businessServiceDataFlow 涓氬姟鏃ュ織瀵硅薄
      */
-    public String soUserService(String userInfoJson) {
-        LoggerEngine.debug("鐢ㄦ埛鏈嶅姟鎿嶄綔瀹㈡埛鍏ュ弬锛�" + userInfoJson);
-        String resultUserInfo = null;
-        try {
-            //1.0瑙勫垯鏍¢獙锛屾姤鏂囨槸鍚﹀悎娉�
+    private void saveLogMessage(BusinessServiceDataFlow businessServiceDataFlow) {
 
-            //2.0
+        try {
+            if (MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_LOG_ON_OFF))) {
+                for (DataFlowLog dataFlowLog : businessServiceDataFlow.getLogDatas()) {
+                    KafkaFactory.sendKafkaMessage(KafkaConstant.TOPIC_LOG_NAME, "", JSONObject.toJSONString(dataFlowLog));
+                }
+            }
         } catch (Exception e) {
-            LoggerEngine.error("鏈嶅姟澶勭悊鍑虹幇寮傚父锛�", e);
-        } finally {
-            LoggerEngine.debug("鐢ㄦ埛鏈嶅姟鎿嶄綔瀹㈡埛鍑哄弬锛�" + resultUserInfo);
-            return resultUserInfo;
+            logger.error("鎶ラ敊鏃ュ織鍑洪敊浜嗭紝", e);
         }
     }
+
+    /**
+     * 淇濆瓨鑰楁椂淇℃伅
+     *
+     * @param businessServiceDataFlow
+     */
+    private void saveCostTimeLogMessage(BusinessServiceDataFlow businessServiceDataFlow) {
+        try {
+            if (MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_COST_TIME_ON_OFF))) {
+                List<DataFlowLinksCost> dataFlowLinksCosts = businessServiceDataFlow.getLinksCostDates();
+                JSONObject costDate = new JSONObject();
+                JSONArray costDates = new JSONArray();
+                JSONObject newObj = null;
+                for (DataFlowLinksCost dataFlowLinksCost : dataFlowLinksCosts) {
+                    newObj = JSONObject.parseObject(JSONObject.toJSONString(dataFlowLinksCost));
+                    newObj.put("dataFlowId", businessServiceDataFlow.getDataFlowId());
+                    newObj.put("transactionId", businessServiceDataFlow.getTransactionId());
+                    costDates.add(newObj);
+                }
+                costDate.put("costDates", costDates);
+
+                KafkaFactory.sendKafkaMessage(KafkaConstant.TOPIC_COST_TIME_LOG_NAME, "", costDate.toJSONString());
+            }
+        } catch (Exception e) {
+            logger.error("鎶ラ敊鏃ュ織鍑洪敊浜嗭紝", e);
+        }
+    }
+
+
+    public IUserServiceDao getiUserServiceDao() {
+        return iUserServiceDao;
+    }
+
+    public void setiUserServiceDao(IUserServiceDao iUserServiceDao) {
+        this.iUserServiceDao = iUserServiceDao;
+    }
 }

--
Gitblit v1.8.0