From 5a33829488f882703b6427ec5e0031a3c9c706a2 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Tue, 15 Apr 2025 17:36:34 +0800
Subject: [PATCH] 1.0

---
 oying-system/src/main/resources/config/application-dev.yml                |    4 ++--
 oying-logging/src/main/java/com/oying/service/impl/SysLogServiceImpl.java |   49 +++++++++++++++++++++++--------------------------
 oying-system/src/main/resources/config/application-prod.yml               |    4 ++--
 3 files changed, 27 insertions(+), 30 deletions(-)

diff --git a/oying-logging/src/main/java/com/oying/service/impl/SysLogServiceImpl.java b/oying-logging/src/main/java/com/oying/service/impl/SysLogServiceImpl.java
index 4cfa82b..9ba9e0e 100644
--- a/oying-logging/src/main/java/com/oying/service/impl/SysLogServiceImpl.java
+++ b/oying-logging/src/main/java/com/oying/service/impl/SysLogServiceImpl.java
@@ -1,8 +1,7 @@
 package com.oying.service.impl;
 
 import cn.hutool.core.lang.Dict;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.oying.annotation.Log;
@@ -21,7 +20,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.multipart.MultipartFile;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -38,8 +39,6 @@
 public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> implements SysLogService {
 
     private final SysLogMapper sysLogMapper;
-    // 定义敏感字段常量数组
-    private static final String[] SENSITIVE_KEYS = {"password"};
 
     @Override
     public PageResult<SysLog> queryAll(SysLogQueryCriteria criteria, Page<SysLog> page) {
@@ -72,22 +71,15 @@
         // 方法路径
         String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
 
-        // 获取参数
-        JSONObject params = getParameter(method, joinPoint.getArgs());
 
         // 填充基本信息
         sysLog.setRequestIp(ip);
         sysLog.setAddress(StringUtils.getCityInfo(sysLog.getRequestIp()));
         sysLog.setMethod(methodName);
         sysLog.setUsername(username);
-        sysLog.setParams(JSON.toJSONString(params));
+        sysLog.setParams(getParameter(method, joinPoint.getArgs()));
         sysLog.setBrowser(browser);
         sysLog.setDescription(aopLog.value());
-
-        // 如果没有获取到用户名,尝试从参数中获取
-        if(StringUtils.isBlank(sysLog.getUsername())){
-            sysLog.setUsername(params.getString("username"));
-        }
 
         // 保存
         save(sysLog);
@@ -96,8 +88,8 @@
     /**
      * 根据方法和传入的参数获取请求参数
      */
-    private JSONObject getParameter(Method method, Object[] args) {
-        JSONObject params = new JSONObject();
+    private String getParameter(Method method, Object[] args) {
+        List<Object> argList = new ArrayList<>();
         Parameter[] parameters = method.getParameters();
         for (int i = 0; i < parameters.length; i++) {
             // 过滤掉 MultiPartFile
@@ -112,24 +104,29 @@
             if (args[i] instanceof HttpServletRequest) {
                 continue;
             }
-            // 将RequestBody注解修饰的参数作为请求参数
+            //将RequestBody注解修饰的参数作为请求参数
             RequestBody requestBody = parameters[i].getAnnotation(RequestBody.class);
             if (requestBody != null) {
-                params.putAll((JSONObject) JSON.toJSON(args[i]));
-            } else {
-                String key = parameters[i].getName();
-                params.put(key, args[i]);
+                argList.add(args[i]);
             }
-        }
-        // 遍历敏感字段数组并替换值
-        Set<String> keys = params.keySet();
-        for (String key : SENSITIVE_KEYS) {
-            if (keys.contains(key)) {
-                params.put(key, "******");
+            //将RequestParam注解修饰的参数作为请求参数
+            RequestParam requestParam = parameters[i].getAnnotation(RequestParam.class);
+            if (requestParam != null) {
+                Map<String, Object> map = new HashMap<>();
+                String key = parameters[i].getName();
+                if (!StringUtils.isEmpty(requestParam.value())) {
+                    key = requestParam.value();
+                }
+                map.put(key, args[i]);
+                argList.add(map);
             }
         }
         // 返回参数
-        return params;
+        if (argList.isEmpty()) {
+            return "";
+        }
+        return argList.size() == 1 ? JSONUtil.toJsonStr(argList.get(0)) : JSONUtil.toJsonStr(argList);
+
     }
 
     @Override
diff --git a/oying-system/src/main/resources/config/application-dev.yml b/oying-system/src/main/resources/config/application-dev.yml
index f1717d3..1880cf2 100644
--- a/oying-system/src/main/resources/config/application-dev.yml
+++ b/oying-system/src/main/resources/config/application-dev.yml
@@ -62,7 +62,7 @@
   #  验证码
   code:
     #  验证码类型配置 查看 LoginProperties 类
-    code-type: spec
+    code-type: SPEC
     #  登录图形验证码有效时间/分钟
     expiration: 2
     #  验证码高度
@@ -70,7 +70,7 @@
     #  验证码宽度
     height: 36
     # 内容长度
-    length: 2
+    length: 4
     # 字体名称,为空则使用默认字体
     font-name:
     # 字体大小
diff --git a/oying-system/src/main/resources/config/application-prod.yml b/oying-system/src/main/resources/config/application-prod.yml
index 4c783a9..f3cc9c8 100644
--- a/oying-system/src/main/resources/config/application-prod.yml
+++ b/oying-system/src/main/resources/config/application-prod.yml
@@ -66,7 +66,7 @@
   #  验证码
   code:
     #  验证码类型配置 查看 LoginProperties 类
-    code-type: spec
+    code-type: SPEC
     #  登录图形验证码有效时间/分钟
     expiration: 2
     #  验证码高度
@@ -74,7 +74,7 @@
     #  验证码宽度
     height: 36
     # 内容长度
-    length: 2
+    length: 4
     # 字体名称,为空则使用默认字体,如遇到线上乱码,设置其他字体即可
     font-name:
     # 字体大小

--
Gitblit v1.9.3