From 4a96040c3dc5f5107f7a0848a36600fdc3f35a98 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 16 十一月 2020 00:17:35 +0800
Subject: [PATCH] 优化代码
---
service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java | 93 ++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 84 insertions(+), 9 deletions(-)
diff --git a/service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java b/service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java
index 0e196d7..8c71c7c 100644
--- a/service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java
+++ b/service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java
@@ -13,10 +13,22 @@
import com.java110.entity.center.AppRoute;
import com.java110.entity.center.AppService;
import com.java110.entity.center.DataFlowLinksCost;
+import com.java110.intf.common.ITransactionLogInnerServiceSMO;
+import com.java110.po.transactionLog.TransactionLogPo;
import com.java110.utils.cache.AppRouteCache;
+import com.java110.utils.cache.CommonCache;
import com.java110.utils.cache.MappingCache;
-import com.java110.utils.constant.*;
-import com.java110.utils.exception.*;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.KafkaConstant;
+import com.java110.utils.constant.MappingConstant;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.constant.ServiceCodeConstant;
+import com.java110.utils.exception.BusinessException;
+import com.java110.utils.exception.DecryptException;
+import com.java110.utils.exception.InitConfigDataException;
+import com.java110.utils.exception.ListenerExecuteException;
+import com.java110.utils.exception.NoAuthorityException;
+import com.java110.utils.exception.SMOException;
import com.java110.utils.kafka.KafkaFactory;
import com.java110.utils.log.LoggerEngine;
import com.java110.utils.util.DateUtil;
@@ -27,6 +39,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Date;
@@ -50,6 +63,9 @@
@Autowired
private RestTemplate outRestTemplate;
+ @Autowired
+ private ITransactionLogInnerServiceSMO transactionLogInnerServiceSMOImpl;
+
/**
* 鏈嶅姟璋冨害
@@ -64,7 +80,7 @@
ApiDataFlow dataFlow = null;
- //JSONObject responseJson = null;
+ Date startDate = DateUtil.getCurrentDate();
ResponseEntity<String> responseEntity = null;
@@ -103,15 +119,10 @@
responseEntity = new ResponseEntity<String>("鍐呴儴寮傚父锛�" + e.getMessage() + e.getLocalizedMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
} finally {
+ Date endDate = DateUtil.getCurrentDate();
if (dataFlow != null) {
//杩欓噷璁板綍鏃ュ織
- Date endDate = DateUtil.getCurrentDate();
-
dataFlow.setEndDate(endDate);
- //娣诲姞鑰楁椂
- //DataFlowFactory.addCostTime(dataFlow, "service", "涓氬姟澶勭悊鎬昏�楁椂", dataFlow.getStartDate(), dataFlow.getEndDate());
- //淇濆瓨鑰楁椂
- //saveCostTimeLogMessage(dataFlow);
//澶勭悊杩斿洖鎶ユ枃閴存潈
//AuthenticationFactory.putSign(dataFlow);
}
@@ -119,6 +130,9 @@
//resJson = encrypt(responseJson.toJSONString(),headers);
responseEntity = new ResponseEntity<String>(resJson, HttpStatus.OK);
}
+
+ //娣诲姞鑰楁椂
+ saveLog(dataFlow, startDate, endDate, reqJson, responseEntity);
//杩欓噷淇濆瓨鑰楁椂锛屼互鍙婃棩蹇�
return responseEntity;
@@ -126,6 +140,67 @@
}
+ /**
+ * 鏃ュ織璁板綍
+ *
+ * @param dataFlow
+ * @param startDate
+ * @param endDate
+ */
+ private void saveLog(ApiDataFlow dataFlow, Date startDate, Date endDate, String reqJson, ResponseEntity<String> responseEntity) {
+
+ if (dataFlow == null) {
+ return;
+ }
+
+ String serviceCode = dataFlow.getRequestHeaders().get(CommonConstant.HTTP_SERVICE);
+
+ String logServiceCode = CommonCache.getValue(CommonCache.LOG_SERVICE_CODE);
+
+ if (StringUtil.isEmpty(logServiceCode)) {
+ return;
+ }
+ if (logServiceCode.contains("|")) {
+ String[] logServiceCodes = logServiceCode.split("|");
+
+ for (String lServiceCode : logServiceCodes) {
+ if (serviceCode.equals(lServiceCode.trim())) {
+ doSaveLog(dataFlow, startDate, endDate, serviceCode, reqJson, responseEntity);
+ return;
+ }
+ }
+ }
+
+ if ("all".equals(logServiceCode.trim().toLowerCase())) {
+ doSaveLog(dataFlow, startDate, endDate, serviceCode, reqJson, responseEntity);
+ return;
+ }
+
+ if (serviceCode.equals(logServiceCode.trim())) {
+ doSaveLog(dataFlow, startDate, endDate, serviceCode, reqJson, responseEntity);
+ }
+ }
+
+ @Async
+ private void doSaveLog(ApiDataFlow dataFlow, Date startDate, Date endDate, String serviceCode, String reqJson, ResponseEntity<String> responseEntity) {
+
+ TransactionLogPo transactionLogPo = new TransactionLogPo();
+ transactionLogPo.setAppId(dataFlow.getAppId());
+ transactionLogPo.setCostTime((endDate.getTime() - startDate.getTime()) + "");
+ transactionLogPo.setIp("");
+ transactionLogPo.setServiceCode(serviceCode);
+ transactionLogPo.setSrcIp(dataFlow.getRequestHeaders().get(CommonConstant.HTTP_SRC_IP));
+ transactionLogPo.setState(responseEntity.getStatusCode() != HttpStatus.OK ? "S" : "F");
+ transactionLogPo.setTimestamp(dataFlow.getRequestTime());
+ transactionLogPo.setUserId(dataFlow.getUserId());
+ transactionLogPo.setTransactionId(dataFlow.getTransactionId());
+ transactionLogPo.setRequestHeader(dataFlow.getRequestHeaders() != null ? dataFlow.getRequestHeaders().toString() : "");
+ transactionLogPo.setResponseHeader(responseEntity.getHeaders().toSingleValueMap().toString());
+ transactionLogPo.setRequestMessage(reqJson);
+ transactionLogPo.setResponseMessage(responseEntity.getBody());
+ transactionLogInnerServiceSMOImpl.saveTransactionLog(transactionLogPo);
+ }
+
/**
* 鎶掑啓杩斿洖澶翠俊鎭�
--
Gitblit v1.8.0