From d9b2c4b780340d2d2e8ca1a328034f19092fcddb Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期三, 10 七月 2019 17:57:08 +0800
Subject: [PATCH] 提交breadcrumb功能

---
 LogService/src/main/java/com/java110/log/smo/impl/LogServiceSMOImpl.java |  136 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 134 insertions(+), 2 deletions(-)

diff --git a/LogService/src/main/java/com/java110/log/smo/impl/LogServiceSMOImpl.java b/LogService/src/main/java/com/java110/log/smo/impl/LogServiceSMOImpl.java
index 7f284be..481c245 100644
--- a/LogService/src/main/java/com/java110/log/smo/impl/LogServiceSMOImpl.java
+++ b/LogService/src/main/java/com/java110/log/smo/impl/LogServiceSMOImpl.java
@@ -1,15 +1,147 @@
 package com.java110.log.smo.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.util.Assert;
+import com.java110.common.util.DateUtil;
 import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.smo.code.ICodeApi;
+import com.java110.log.dao.LogServiceDao;
 import com.java110.log.smo.ILogServiceSMO;
+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 java.util.HashMap;
+import java.util.Map;
+
 /**
- * 璁㈠崟鏈嶅姟涓氬姟閫昏緫澶勭悊瀹炵幇绫�
+ * 鏃ュ織 娑堟伅澶勭悊绫�
  * Created by wuxw on 2017/4/11.
  */
-@Service("orderServiceSMOImpl")
+@Service("logServiceSMOImpl")
 @Transactional
 public class LogServiceSMOImpl extends BaseServiceSMO implements ILogServiceSMO {
+
+    private static Logger logger = LoggerFactory.getLogger(LogServiceSMOImpl.class);
+
+    @Autowired
+    private ICodeApi codeApi;
+
+    @Autowired
+    private LogServiceDao logServiceDaoImpl;
+
+    /**
+     * 淇濆瓨鏃ュ織淇℃伅
+     *
+     * @param logMessage 闇�瑕佷繚瀛樼殑鏃ュ織淇℃伅
+     */
+    @Override
+    public void saveLogMessage(String logMessage) {
+        logger.debug("received log message : {}", logMessage);
+
+        try {
+            doSaveLogMessage(logMessage);
+        } catch (Exception e) {
+            logger.error("save log message error :", e);
+        }
+    }
+
+
+    /**
+     * @param logMessage 闇�瑕佷繚瀛樼殑鏃ュ織淇℃伅
+     * @throws Exception 寮傚父淇℃伅
+     */
+    private void doSaveLogMessage(String logMessage) throws Exception {
+
+        JSONObject logMessageObj = JSONObject.parseObject(logMessage);
+        //鏍¢獙
+        validateLogMessage(logMessageObj);
+
+        // 璋冪敤鏈嶅姟鐢熸垚log_id
+        String logId = GenerateCodeFactory.getInnerTransactionId();
+        //String log_id = codeApi.generateCode("1000001");
+
+        // 灏佽鏃ュ織淇濆瓨鍙傛暟
+        Map logMessageParams = new HashMap();
+        logMessageParams.put("logId", logId);
+        builderLogMessageParams(logMessageParams, logMessageObj);
+
+        //淇濆瓨鏃ュ織
+        logServiceDaoImpl.saveTransactionLog(logMessageParams);
+        //淇濆瓨鏃ュ織锛堜氦浜掓姤鏂囷級
+        logServiceDaoImpl.saveTransactionLogMessage(logMessageParams);
+
+    }
+
+    /**
+     * 灏佽鏃ュ織淇濆瓨鍙傛暟
+     *
+     * @param logMessageParams 鏃ュ織淇濆瓨鍙傛暟
+     * @param logMessageObj 鏃ュ織娑堟伅瀵硅薄
+     * @throws Exception 寮傚父淇℃伅
+     */
+    private void builderLogMessageParams(Map logMessageParams, JSONObject logMessageObj) throws Exception {
+
+        logMessageParams.putAll(logMessageObj);
+        //#{requestHeader},#{responseHeader},#{requestMessage},#{responseMessage},#{remark}
+        String requestMessage = logMessageObj.getString("requestMessage");
+        String responseMessage = logMessageObj.getString("responseMessage");
+
+        JSONObject requestMessageObj = JSONObject.parseObject(requestMessage);
+        JSONObject responseMessageObj = JSONObject.parseObject(responseMessage);
+
+        logMessageParams.put("requestHeader", requestMessageObj.getString("headers"));
+        logMessageParams.put("requestMessage", requestMessageObj.getString("body"));
+        logMessageParams.put("responseHeader", responseMessageObj.getString("headers"));
+        logMessageParams.put("responseMessage", responseMessageObj.getString("body"));
+
+        logMessageParams.put("timestamp", DateUtil.getDefaultDateFromString(logMessageObj.getString("timestamp")));
+
+        logMessageParams.put("month", DateUtil.getCurrentMonth());
+    }
+
+    /**
+     * 鏍¢獙 鏃ュ織鎶ユ枃 蹇呭~鑺傜偣鏄惁瀛樺湪
+     *
+     * @param logMessageObj JSON 鍖栫殑鏃ュ織淇℃伅
+     */
+    private void validateLogMessage(JSONObject logMessageObj) {
+
+        Assert.hasKeyAndValue(logMessageObj, "transactionId", "can not find transactionId node or transactionId is null");
+
+        Assert.hasKeyAndValue(logMessageObj, "dataFlowId", "can not find dataFlowId node or dataFlowId is null");
+
+        Assert.hasKeyAndValue(logMessageObj, "ip", "can not find ip node or ip is null");
+
+        Assert.hasKeyAndValue(logMessageObj, "port", "can not find port node or port is null");
+
+        Assert.hasKeyAndValue(logMessageObj, "appId", "can not find appId node or appId is null");
+
+        Assert.hasKeyAndValue(logMessageObj, "timestamp", "can not find timestamp node or timestamp is null");
+
+        Assert.hasKeyAndValue(logMessageObj, "logStatus", "can not find logStatus node or logStatus is null");
+
+        Assert.hasKey(logMessageObj, "requestMessage", "can not find requestMessage node ");
+
+        Assert.hasKey(logMessageObj, "responseMessage", "can not find responseMessage node ");
+    }
+
+    public ICodeApi getCodeApi() {
+        return codeApi;
+    }
+
+    public void setCodeApi(ICodeApi codeApi) {
+        this.codeApi = codeApi;
+    }
+
+    public LogServiceDao getLogServiceDaoImpl() {
+        return logServiceDaoImpl;
+    }
+
+    public void setLogServiceDaoImpl(LogServiceDao logServiceDaoImpl) {
+        this.logServiceDaoImpl = logServiceDaoImpl;
+    }
 }

--
Gitblit v1.8.0