云
2026-10-27 22cb0ddec260bb5c5868543e8fe27d67625e8951
src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
@@ -14,6 +14,8 @@
import com.ruoyi.project.monitor.domain.SysOperLog;
import com.ruoyi.project.monitor.service.ISysLogininforService;
import com.ruoyi.project.monitor.service.ISysOperLogService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.service.ISysUserService;
import eu.bitwalker.useragentutils.UserAgent;
/**
@@ -44,11 +46,13 @@
            @Override
            public void run()
            {
                // 登录日志用户名称记录昵称,昵称为空时回退登录账号
                String displayName = resolveNickName(username);
                String address = AddressUtils.getRealAddressByIP(ip);
                StringBuilder s = new StringBuilder();
                s.append(LogUtils.getBlock(ip));
                s.append(address);
                s.append(LogUtils.getBlock(username));
                s.append(LogUtils.getBlock(displayName));
                s.append(LogUtils.getBlock(status));
                s.append(LogUtils.getBlock(message));
                // 打印信息到日志
@@ -59,7 +63,7 @@
                String browser = userAgent.getBrowser().getName();
                // 封装对象
                SysLogininfor logininfor = new SysLogininfor();
                logininfor.setUserName(username);
                logininfor.setUserName(displayName);
                logininfor.setIpaddr(ip);
                logininfor.setLoginLocation(address);
                logininfor.setBrowser(browser);
@@ -81,6 +85,33 @@
    }
    /**
     * 按登录账号查询昵称,查询不到时回退为原账号
     *
     * @param username 登录账号
     * @return 昵称
     */
    private static String resolveNickName(String username)
    {
        if (StringUtils.isEmpty(username))
        {
            return username;
        }
        try
        {
            SysUser user = SpringUtils.getBean(ISysUserService.class).selectUserByUserName(username);
            if (user != null && StringUtils.isNotEmpty(user.getNickName()))
            {
                return user.getNickName();
            }
        }
        catch (Exception e)
        {
            // 查询昵称失败不影响登录日志写入,回退为登录账号
        }
        return username;
    }
    /**
     * 操作日志记录
     * 
     * @param operLog 操作日志信息