From 4c8137daf2f9c49dd1bf0d3f24372929016358f9 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期三, 07 十二月 2022 20:32:57 +0800
Subject: [PATCH] update 优化 使用spring事件发布机制 重构登录日志与操作日志

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java |   32 +++++++++++++++-----------------
 1 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
index 159db62..1cd176f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
@@ -6,8 +6,8 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.event.LogininforEvent;
 import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.service.LogininforService;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.ip.AddressUtils;
@@ -16,6 +16,7 @@
 import com.ruoyi.system.service.ISysLogininforService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.event.EventListener;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
@@ -33,22 +34,19 @@
 @RequiredArgsConstructor
 @Slf4j
 @Service
-public class SysLogininforServiceImpl implements ISysLogininforService, LogininforService {
+public class SysLogininforServiceImpl implements ISysLogininforService {
 
     private final SysLogininforMapper baseMapper;
 
     /**
      * 璁板綍鐧诲綍淇℃伅
      *
-     * @param username 鐢ㄦ埛鍚�
-     * @param status   鐘舵��
-     * @param message  娑堟伅
-     * @param args     鍒楄〃
+     * @param logininforEvent 鐧诲綍浜嬩欢
      */
     @Async
-    @Override
-    public void recordLogininfor(final String username, final String status, final String message,
-                                 HttpServletRequest request, final Object... args) {
+    @EventListener
+    public void recordLogininfor(LogininforEvent logininforEvent) {
+        HttpServletRequest request = logininforEvent.getRequest();
         final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
         final String ip = ServletUtils.getClientIP(request);
 
@@ -56,27 +54,27 @@
         StringBuilder s = new StringBuilder();
         s.append(getBlock(ip));
         s.append(address);
-        s.append(getBlock(username));
-        s.append(getBlock(status));
-        s.append(getBlock(message));
+        s.append(getBlock(logininforEvent.getUsername()));
+        s.append(getBlock(logininforEvent.getStatus()));
+        s.append(getBlock(logininforEvent.getMessage()));
         // 鎵撳嵃淇℃伅鍒版棩蹇�
-        log.info(s.toString(), args);
+        log.info(s.toString(), logininforEvent.getArgs());
         // 鑾峰彇瀹㈡埛绔搷浣滅郴缁�
         String os = userAgent.getOs().getName();
         // 鑾峰彇瀹㈡埛绔祻瑙堝櫒
         String browser = userAgent.getBrowser().getName();
         // 灏佽瀵硅薄
         SysLogininfor logininfor = new SysLogininfor();
-        logininfor.setUserName(username);
+        logininfor.setUserName(logininforEvent.getUsername());
         logininfor.setIpaddr(ip);
         logininfor.setLoginLocation(address);
         logininfor.setBrowser(browser);
         logininfor.setOs(os);
-        logininfor.setMsg(message);
+        logininfor.setMsg(logininforEvent.getMessage());
         // 鏃ュ織鐘舵��
-        if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
+        if (StringUtils.equalsAny(logininforEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
             logininfor.setStatus(Constants.SUCCESS);
-        } else if (Constants.LOGIN_FAIL.equals(status)) {
+        } else if (Constants.LOGIN_FAIL.equals(logininforEvent.getStatus())) {
             logininfor.setStatus(Constants.FAIL);
         }
         // 鎻掑叆鏁版嵁

--
Gitblit v1.9.3