1.0
xin
2025-04-15 5a33829488f882703b6427ec5e0031a3c9c706a2
1.0
3 files modified
57 ■■■■ changed files
oying-logging/src/main/java/com/oying/service/impl/SysLogServiceImpl.java 49 ●●●● patch | view | raw | blame | history
oying-system/src/main/resources/config/application-dev.yml 4 ●●●● patch | view | raw | blame | history
oying-system/src/main/resources/config/application-prod.yml 4 ●●●● patch | view | raw | blame | history
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
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:
    # 字体大小
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:
    # 字体大小