Parcourir la source

‘修改记录日志的方式‘

master
server il y a 2 ans
Parent
révision
311107800c

+ 19
- 1
pom.xml Voir le fichier

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


<name>ailink-receiver-demo</name> <name>ailink-receiver-demo</name>
<layout>JAR</layout> <layout>JAR</layout>
</configuration> </configuration>
</plugin> </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> </plugins>
</build> </build>



+ 51
- 26
src/main/java/com/inet/ailink/receiver/service/impl/SysLogsServiceImpl.java Voir le fichier

import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.nio.charset.StandardCharsets; 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 javax.servlet.http.HttpServletRequest;


import com.inet.ailink.receiver.common.utils.*; import com.inet.ailink.receiver.common.utils.*;
import com.inet.ailink.receiver.common.enums.StatusCode; import com.inet.ailink.receiver.common.enums.StatusCode;
import com.inet.ailink.receiver.common.vo.Response; import com.inet.ailink.receiver.common.vo.Response;
import com.inet.ailink.receiver.entity.SysLogs; import com.inet.ailink.receiver.entity.SysLogs;
import java.util.Collections;


@Service
@Service
public class SysLogsServiceImpl public class SysLogsServiceImpl
{ {
public Response<Object> save(String params, HttpServletRequest request) throws IOException { public Response<Object> save(String params, HttpServletRequest request) throws IOException {
Response<Object> result = new Response<Object>(); Response<Object> result = new Response<Object>();
SysLogs log = new SysLogs();
String deviceDataEncrypt = "";
String requestSign = "";
Map<String,Object> deviceDataMap = new HashMap<>();
try { try {
//将请求参数params转换为map对象
Map<String,String> paramsMap = JsonUtils.fromJson(params, Map.class); 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 //获取请求头信息中的productKey,通过productKey,获取productSecret
// String productKey = request.getHeader("productKey"); // String productKey = request.getHeader("productKey");
// String productSecret = ""; // String productSecret = "";
//1.解密数据,使用AES/CBC/PKCS5Padding进行解密 //1.解密数据,使用AES/CBC/PKCS5Padding进行解密
String deviceDataDecrypt = AESUtils.aesCBCDecrypt(deviceDataEncrypt,productSecret,productKey); String deviceDataDecrypt = AESUtils.aesCBCDecrypt(deviceDataEncrypt,productSecret,productKey);
//2.校验签名 //2.校验签名
Map<String,Object> deviceDataMap = JsonUtils.fromJson(deviceDataDecrypt,Map.class);
deviceDataMap = JsonUtils.fromJson(deviceDataDecrypt,Map.class);
String sign = MD5Util.generateSignature(deviceDataMap,productSecret); String sign = MD5Util.generateSignature(deviceDataMap,productSecret);
String requestSign = request.getHeader("sign");
requestSign = request.getHeader("sign");
if(!sign.equals(requestSign)){ if(!sign.equals(requestSign)){
//处理签名不一致的情况 //处理签名不一致的情况
} }
if(cid.equals("80")){//噪音计的CID=80 if(cid.equals("80")){//噪音计的CID=80
saveNoiseData(deviceDataMap); saveNoiseData(deviceDataMap);
} }
//保存日志记录
log.setDecryptParams(deviceDataMap);
log.setProductKey(productKey);
log.setSign(requestSign);

} catch (Exception e) { } 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); int a = (int) (Math.random()*10);
if(a == 1 || a == 3 || a == 5){ if(a == 1 || a == 3 || a == 5){
result.setStatus(StatusCode.FAIL.getCode()); result.setStatus(StatusCode.FAIL.getCode());
result.setMsg(StatusCode.FAIL.getMsg()); 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; return result;
} }
//持久化数据或者进行消息通知等业务处理 //持久化数据或者进行消息通知等业务处理
} }



/**
* 保存请求的日志
* @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 * @param date

Chargement…
Annuler
Enregistrer