From 1ae369855ba448bc2562ebbbe59a89e42b8c53b0 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期二, 19 十月 2021 17:23:14 +0800
Subject: [PATCH] update 优化 多账号体系用户行为监听逻辑

---
 /dev/null                                                                          |  106 --------------------------
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java      |    1 
 ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java |  109 +++++++++++++++++++++++++++
 3 files changed, 109 insertions(+), 107 deletions(-)

diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java
new file mode 100644
index 0000000..f407774
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java
@@ -0,0 +1,109 @@
+package com.ruoyi.framework.listener;
+
+import cn.dev33.satoken.listener.SaTokenListener;
+import cn.dev33.satoken.stp.SaLoginModel;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentUtil;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.dto.UserOnlineDTO;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.UserType;
+import com.ruoyi.common.utils.*;
+import com.ruoyi.common.utils.ip.AddressUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * 鐢ㄦ埛琛屼负 渚﹀惉鍣ㄧ殑瀹炵幇
+ */
+@Component
+@Slf4j
+public class UserActionListener implements SaTokenListener {
+
+    /**
+     * 姣忔鐧诲綍鏃惰Е鍙�
+     */
+    @Override
+    public void doLogin(String loginType, Object loginId, SaLoginModel loginModel) {
+        UserType userType = LoginUtils.getUserType(loginId);
+        if (userType == UserType.SYS_USER) {
+            UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
+            String ip = ServletUtils.getClientIP();
+            SysUser user = SecurityUtils.getUser();
+            String tokenValue = StpUtil.getTokenValue();
+            UserOnlineDTO userOnlineDTO = new UserOnlineDTO()
+                    .setIpaddr(ip)
+                    .setLoginLocation(AddressUtils.getRealAddressByIP(ip))
+                    .setBrowser(userAgent.getBrowser().getName())
+                    .setOs(userAgent.getOs().getName())
+                    .setLoginTime(System.currentTimeMillis())
+                    .setTokenId(tokenValue)
+                    .setUserName(user.getUserName());
+            if (StringUtils.isNotNull(user.getDept())) {
+                userOnlineDTO.setDeptName(user.getDept().getDeptName());
+            }
+            RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO);
+            log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue);
+        } else if (userType == UserType.APP_USER) {
+            // app绔� 鑷鏍规嵁涓氬姟缂栧啓
+        }
+    }
+
+    /**
+     * 姣忔娉ㄩ攢鏃惰Е鍙�
+     */
+    @Override
+    public void doLogout(String loginType, Object loginId, String tokenValue) {
+        RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue);
+        log.info("user doLogout, useId:{}, token:{}", loginId, tokenValue);
+    }
+
+    /**
+     * 姣忔琚涪涓嬬嚎鏃惰Е鍙�
+     */
+    @Override
+    public void doKickout(String loginType, Object loginId, String tokenValue) {
+        RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue);
+        log.info("user doLogoutByLoginId, useId:{}, token:{}", loginId, tokenValue);
+    }
+
+    /**
+     * 姣忔琚《涓嬬嚎鏃惰Е鍙�
+     */
+    @Override
+    public void doReplaced(String loginType, Object loginId, String tokenValue) {
+        RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue);
+        log.info("user doReplaced, useId:{}, token:{}", loginId, tokenValue);
+    }
+
+    /**
+     * 姣忔琚皝绂佹椂瑙﹀彂
+     */
+    @Override
+    public void doDisable(String loginType, Object loginId, long disableTime) {
+    }
+
+    /**
+     * 姣忔琚В灏佹椂瑙﹀彂
+     */
+    @Override
+    public void doUntieDisable(String loginType, Object loginId) {
+    }
+
+    /**
+     * 姣忔鍒涘缓Session鏃惰Е鍙�
+     */
+    @Override
+    public void doCreateSession(String id) {
+    }
+
+    /**
+     * 姣忔娉ㄩ攢Session鏃惰Е鍙�
+     */
+    @Override
+    public void doLogoutSession(String id) {
+    }
+
+
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/MySaTokenListener.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/MySaTokenListener.java
deleted file mode 100644
index cdb17bd..0000000
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/MySaTokenListener.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.ruoyi.framework.satoken;
-
-import cn.dev33.satoken.listener.SaTokenListener;
-import cn.dev33.satoken.stp.SaLoginModel;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.http.useragent.UserAgent;
-import cn.hutool.http.useragent.UserAgentUtil;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.dto.UserOnlineDTO;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.utils.RedisUtils;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.ServletUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.ip.AddressUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-/**
- * 鑷畾涔変睛鍚櫒鐨勫疄鐜�
- */
-@Component
-@Slf4j
-public class MySaTokenListener implements SaTokenListener {
-
-    /**
-     * 姣忔鐧诲綍鏃惰Е鍙�
-     */
-    @Override
-    public void doLogin(String loginType, Object loginId, SaLoginModel loginModel) {
-        UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
-        String ip = ServletUtils.getClientIP();
-        SysUser user = SecurityUtils.getUser();
-        String tokenValue = StpUtil.getTokenValue();
-        UserOnlineDTO userOnlineDTO = new UserOnlineDTO()
-                .setIpaddr(ip)
-                .setLoginLocation(AddressUtils.getRealAddressByIP(ip))
-                .setBrowser(userAgent.getBrowser().getName())
-                .setOs(userAgent.getOs().getName())
-                .setLoginTime(System.currentTimeMillis())
-                .setTokenId(tokenValue)
-                .setUserName(user.getUserName());
-        if (StringUtils.isNotNull(user.getDept())) {
-            userOnlineDTO.setDeptName(user.getDept().getDeptName());
-        }
-        RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO);
-        log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue);
-    }
-
-    /**
-     * 姣忔娉ㄩ攢鏃惰Е鍙�
-     */
-    @Override
-    public void doLogout(String loginType, Object loginId, String tokenValue) {
-        RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue);
-        log.info("user doLogout, useId:{}, token:{}", loginId, tokenValue);
-    }
-
-    /**
-     * 姣忔琚涪涓嬬嚎鏃惰Е鍙�
-     */
-    @Override
-    public void doKickout(String loginType, Object loginId, String tokenValue) {
-        RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue);
-        log.info("user doLogoutByLoginId, useId:{}, token:{}", loginId, tokenValue);
-    }
-
-    /**
-     * 姣忔琚《涓嬬嚎鏃惰Е鍙�
-     */
-    @Override
-    public void doReplaced(String loginType, Object loginId, String tokenValue) {
-        RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue);
-        log.info("user doReplaced, useId:{}, token:{}", loginId, tokenValue);
-    }
-
-    /**
-     * 姣忔琚皝绂佹椂瑙﹀彂
-     */
-    @Override
-    public void doDisable(String loginType, Object loginId, long disableTime) {
-    }
-
-    /**
-     * 姣忔琚В灏佹椂瑙﹀彂
-     */
-    @Override
-    public void doUntieDisable(String loginType, Object loginId) {
-    }
-
-    /**
-     * 姣忔鍒涘缓Session鏃惰Е鍙�
-     */
-    @Override
-    public void doCreateSession(String id) {
-    }
-
-    /**
-     * 姣忔娉ㄩ攢Session鏃惰Е鍙�
-     */
-    @Override
-    public void doLogoutSession(String id) {
-    }
-
-
-}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java
index 11a1974..5dc66f2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java
@@ -28,7 +28,6 @@
             Long userId = LoginUtils.getUserId();
             SysUser user = iSysUserService.getById(userId);
             Set<String> menuPermission = sysPermissionService.getMenuPermission(user);
-            //閲囩敤鐨勬槸鐢ㄦ埛閲岃嚜甯︾殑鏉冮檺锛屽疄鐜颁竴娆℃�ц闂畆eids,杩涜鍒ゆ柇鏄惁鍙互璁块棶
             return new ArrayList<>(menuPermission);
         } else if (userType == UserType.APP_USER) {
             // app绔潈闄愯繑鍥� 鑷鏍规嵁涓氬姟缂栧啓

--
Gitblit v1.9.3