ソースを参照

‘修改记录日志的方式‘

master
server 1年前
コミット
311107800c
2個のファイルの変更70行の追加27行の削除
  1. 19
    1
      pom.xml
  2. 51
    26
      src/main/java/com/inet/ailink/receiver/service/impl/SysLogsServiceImpl.java

+ 19
- 1
pom.xml ファイルの表示

@@ -9,7 +9,7 @@
</parent>
<groupId>com.inet</groupId>
<artifactId>ailink-receiver-pull-demo</artifactId>
<version>1.0.0</version>
<version>1.0.0-${build.time}</version>
<packaging>jar</packaging>

<name>ailink-receiver-demo</name>
@@ -50,6 +50,24 @@
<layout>JAR</layout>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<configuration>
<name>build.time</name>
<pattern>yyyyMMddHHmm</pattern>
<locale>en_US</locale>
<timeZone>Asia/Shanghai</timeZone>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>


+ 51
- 26
src/main/java/com/inet/ailink/receiver/service/impl/SysLogsServiceImpl.java ファイルの表示

@@ -4,10 +4,7 @@ import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import javax.servlet.http.HttpServletRequest;

import com.inet.ailink.receiver.common.utils.*;
@@ -15,9 +12,8 @@ import org.springframework.stereotype.Service;
import com.inet.ailink.receiver.common.enums.StatusCode;
import com.inet.ailink.receiver.common.vo.Response;
import com.inet.ailink.receiver.entity.SysLogs;
import java.util.Collections;

@Service
@Service
public class SysLogsServiceImpl
{
@@ -28,15 +24,14 @@ public class SysLogsServiceImpl
public Response<Object> save(String params, HttpServletRequest request) throws IOException {
Response<Object> result = new Response<Object>();
SysLogs log = new SysLogs();
String deviceDataEncrypt = "";
String requestSign = "";
Map<String,Object> deviceDataMap = new HashMap<>();
try {
//将请求参数params转换为map对象
Map<String,String> paramsMap = JsonUtils.fromJson(params, Map.class);
String deviceDataEncrypt = paramsMap.get("params");
log.setEncryptParams(deviceDataEncrypt);
log.setIp(IpUtils.getIpAddr(request));
log.setUri(request.getRequestURI());
log.setCreateTime(DateUtils.getStringTodayB());
log.setSortCloumns(DateUtils.getCurTime());
//获取请求参数params的值,即,本次推送的设备测量结果的加密数据
deviceDataEncrypt = paramsMap.get("params");
//获取请求头信息中的productKey,通过productKey,获取productSecret
// String productKey = request.getHeader("productKey");
// String productSecret = "";
@@ -44,9 +39,9 @@ public class SysLogsServiceImpl
//1.解密数据,使用AES/CBC/PKCS5Padding进行解密
String deviceDataDecrypt = AESUtils.aesCBCDecrypt(deviceDataEncrypt,productSecret,productKey);
//2.校验签名
Map<String,Object> deviceDataMap = JsonUtils.fromJson(deviceDataDecrypt,Map.class);
deviceDataMap = JsonUtils.fromJson(deviceDataDecrypt,Map.class);
String sign = MD5Util.generateSignature(deviceDataMap,productSecret);
String requestSign = request.getHeader("sign");
requestSign = request.getHeader("sign");
if(!sign.equals(requestSign)){
//处理签名不一致的情况
}
@@ -57,25 +52,23 @@ public class SysLogsServiceImpl
if(cid.equals("80")){//噪音计的CID=80
saveNoiseData(deviceDataMap);
}
//保存日志记录
log.setDecryptParams(deviceDataMap);
log.setProductKey(productKey);
log.setSign(requestSign);

} catch (Exception e) {
log.setErrorMsg(e.getMessage());
result.setStatus(StatusCode.FAIL.getCode());
result.setMsg(StatusCode.FAIL.getMsg());
//保存日志记录
saveLog(e,deviceDataEncrypt,request,deviceDataMap,requestSign,result);
return result;
}
result.setStatus(StatusCode.SUCCESS.getCode());
result.setMsg(StatusCode.SUCCESS.getMsg());
//测试返回错误信息,重新推送
int a = (int) (Math.random()*10);
if(a == 1 || a == 3 || a == 5){
result.setStatus(StatusCode.FAIL.getCode());
result.setMsg(StatusCode.FAIL.getMsg());
}else{
result.setStatus(StatusCode.SUCCESS.getCode());
result.setMsg(StatusCode.SUCCESS.getMsg());
}
log.setResult(result);
TxtUtils.string2Txt(JsonUtils.toJson(log)+"\n",DateUtils.format(new Date(),DateUtils.DATE_FORMAT_PATTERN_NO_SEPARATOR)+logPath);
//保存日志记录
saveLog(null,deviceDataEncrypt,request,deviceDataMap,requestSign,result);
return result;
}
@@ -88,6 +81,38 @@ public class SysLogsServiceImpl
//持久化数据或者进行消息通知等业务处理
}


/**
* 保存请求的日志
* @param e
* @param deviceDataEncrypt
* @param request
* @param deviceDataMap
* @param requestSign
* @param result
*/
public void saveLog(Exception e,String deviceDataEncrypt,HttpServletRequest request,Map<String,Object> deviceDataMap,String requestSign,Response<Object> result){
//保存日志记录
SysLogs log = new SysLogs();
log.setEncryptParams(deviceDataEncrypt);
log.setIp(IpUtils.getIpAddr(request));
log.setUri(request.getRequestURI());
log.setCreateTime(DateUtils.getStringTodayB());
log.setSortCloumns(DateUtils.getCurTime());
log.setDecryptParams(deviceDataMap);
log.setProductKey(productKey);
log.setSign(requestSign);
log.setResult(result);
if(e!= null){
log.setErrorMsg(e.getMessage());
}
try {
TxtUtils.string2Txt(JsonUtils.toJson(log)+"\n",DateUtils.format(new Date(),DateUtils.DATE_FORMAT_PATTERN_NO_SEPARATOR)+logPath);
} catch (IOException ex) {

}
}

/**
* 获取保存的日志记录数据
* @param date

読み込み中…
キャンセル
保存