From bbf11a79fce0131aa95905c09b00f25e7696d20b Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 21 十月 2025 16:53:13 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/common/config/ControllerResAdvice.java | 83 ++++++++++++++++++++++++++++++++++++-----
1 files changed, 73 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/zy/common/config/ControllerResAdvice.java b/src/main/java/com/zy/common/config/ControllerResAdvice.java
index 1dba085..4f603c4 100644
--- a/src/main/java/com/zy/common/config/ControllerResAdvice.java
+++ b/src/main/java/com/zy/common/config/ControllerResAdvice.java
@@ -1,8 +1,11 @@
package com.zy.common.config;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.ApiLog;
import com.zy.asrs.service.ApiLogService;
import com.zy.common.utils.IpTools;
import lombok.extern.slf4j.Slf4j;
@@ -17,6 +20,10 @@
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
/**
* 杩斿洖鍊煎鐞�
@@ -42,17 +49,30 @@
if (appAuth != null) {
if (o instanceof R) {
String appkey = request.getHeader("appkey");
+ Object reqCache = request.getAttribute("cache");
if (!Cools.isEmpty(appkey)) {
- // 淇濆瓨鎺ュ彛鏃ュ織
- apiLogService.save(
- String.valueOf(appAuth),
- request.getRequestURI(),
- appkey,
- IpTools.gainRealIp(request),
- JSON.toJSONString(request.getParameterMap()),
- JSON.toJSONString(o),
- String.valueOf(((R) o).get("code")).equalsIgnoreCase("200")
- );
+ boolean success = String.valueOf(((R) o).get("code")).equalsIgnoreCase("200");
+ if (success){
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ String.valueOf(appAuth),
+ request.getRequestURI(),
+ appkey,
+ IpTools.gainRealIp(request),
+ reqCache==null?"": JSON.toJSONString(reqCache),
+ JSON.toJSONString(o),
+ success
+ );
+ } else {
+ beforeBodyWriteCallApiLogSave(
+ String.valueOf(appAuth),
+ request.getRequestURI(),
+ appkey,
+ IpTools.gainRealIp(request),
+ reqCache==null?"": JSON.toJSONString(reqCache),
+ JSON.toJSONString(o),
+ success);
+ }
}
}
}
@@ -60,4 +80,47 @@
return o;
}
+ public void beforeBodyWriteCallApiLogSave(String name, String url, String appkey, String ip, String request, String response, boolean success) {
+ ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
+
+ ApiLog apiLog = apiLogService.selectOne(new EntityWrapper<ApiLog>()
+ .eq("namespace", name)
+ .eq("response", response)
+ .eq("result", success? 1:0)
+ .orderBy("create_time", false)
+ );
+
+ if (!Cools.isEmpty(apiLog)){
+ long parseLong = Long.parseLong(apiLog.getTimestamp());
+ if (new Date().getTime()-parseLong<5*1000*60){
+ return;
+ }
+ }
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ name,
+ url,
+ appkey,
+ ip,
+ request,
+ response,
+ success
+ );
+ }
+
+ public static String json(HttpServletRequest request) {
+ try {
+ BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8));
+ StringBuilder sb = new StringBuilder();
+ String inputStr;
+ while ((inputStr = streamReader.readLine()) != null) {
+ sb.append(inputStr);
+ }
+ return sb.toString();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "";
+ }
+ }
+
}
--
Gitblit v1.9.1