From 7afa32638bd4c1eec05a19a6586af3f4b1ce8ccb Mon Sep 17 00:00:00 2001
From: wuxw7 <wuxw7@asiainfo.com>
Date: 星期六, 16 六月 2018 01:25:43 +0800
Subject: [PATCH] 日志服务实现

---
 LogService/src/main/java/com/java110/log/smo/impl/LogServiceSMOImpl.java |  122 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 120 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..fdfdb36 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,133 @@
 package com.java110.log.smo.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.exception.GenerateCodeException;
+import com.java110.common.log.LoggerEngine;
+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.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.rmi.NoSuchObjectException;
+import java.util.Calendar;
+import java.util.Date;
+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 final static Logger logger = LoggerFactory.getLogger(LogServiceSMOImpl.class);
+
+    @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 闇�瑕佷繚瀛樼殑鏃ュ織淇℃伅
+     */
+    private void doSaveLogMessage(String logMessage) throws Exception {
+
+        JSONObject logMessageObj = JSONObject.parseObject(logMessage);
+        //鏍¢獙
+        validateLogMessage(logMessageObj);
+
+        // 璋冪敤鏈嶅姟鐢熸垚log_id
+        String log_id = GenerateCodeFactory.getInnerTransactionId();
+
+        // 灏佽鏃ュ織淇濆瓨鍙傛暟
+        Map logMessageParams= new HashMap();
+        logMessageParams.put("logId",log_id);
+        builderLogMessageParams(logMessageParams,logMessageObj);
+
+        //淇濆瓨鏃ュ織
+        logServiceDaoImpl.saveTransactionLog(logMessageParams);
+        //淇濆瓨鏃ュ織锛堜氦浜掓姤鏂囷級
+        logServiceDaoImpl.saveTransactionLogMessage(logMessageParams);
+
+    }
+
+    /**
+     * 灏佽鏃ュ織淇濆瓨鍙傛暟
+     * @param logMessageParams 鏃ュ織淇濆瓨鍙傛暟
+     */
+    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")));
+    }
+
+    /**
+     * 鏍¢獙 鏃ュ織鎶ユ枃 蹇呭~鑺傜偣鏄惁瀛樺湪
+     * @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 LogServiceDao getLogServiceDaoImpl() {
+        return logServiceDaoImpl;
+    }
+
+    public void setLogServiceDaoImpl(LogServiceDao logServiceDaoImpl) {
+        this.logServiceDaoImpl = logServiceDaoImpl;
+    }
 }

--
Gitblit v1.8.0