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