From 0baf2c5861a039403385a7e41da79c43a136cdd3 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期三, 30 十月 2024 10:51:45 +0800
Subject: [PATCH] fix 修复 新版本mp默认使用最新 sqlserver 语法导致代码生成分页报错问题
---
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java | 41 ++++++++++++++++++++++++++++++++++++-----
1 files changed, 36 insertions(+), 5 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
index 9b8b0ec..fee0a5b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
@@ -435,7 +435,7 @@
.eq(SysUserRole::getRoleId, userRole.getRoleId())
.eq(SysUserRole::getUserId, userRole.getUserId()));
if (rows > 0) {
- cleanOnlineUserByRole(userRole.getRoleId());
+ cleanOnlineUser(List.of(userRole.getUserId()));
}
return rows;
}
@@ -449,11 +449,12 @@
*/
@Override
public int deleteAuthUsers(Long roleId, Long[] userIds) {
+ List<Long> ids = List.of(userIds);
int rows = userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
.eq(SysUserRole::getRoleId, roleId)
- .in(SysUserRole::getUserId, Arrays.asList(userIds)));
+ .in(SysUserRole::getUserId, ids));
if (rows > 0) {
- cleanOnlineUserByRole(roleId);
+ cleanOnlineUser(ids);
}
return rows;
}
@@ -469,7 +470,8 @@
public int insertAuthUsers(Long roleId, Long[] userIds) {
// 鏂板鐢ㄦ埛涓庤鑹茬鐞�
int rows = 1;
- List<SysUserRole> list = StreamUtils.toList(List.of(userIds), userId -> {
+ List<Long> ids = List.of(userIds);
+ List<SysUserRole> list = StreamUtils.toList(ids, userId -> {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
@@ -479,7 +481,7 @@
rows = userRoleMapper.insertBatch(list) ? list.size() : 0;
}
if (rows > 0) {
- cleanOnlineUserByRole(roleId);
+ cleanOnlineUser(ids);
}
return rows;
}
@@ -503,6 +505,9 @@
return;
}
LoginUser loginUser = LoginHelper.getLoginUser(token);
+ if (ObjectUtil.isNull(loginUser) || CollUtil.isEmpty(loginUser.getRoles())) {
+ return;
+ }
if (loginUser.getRoles().stream().anyMatch(r -> r.getRoleId().equals(roleId))) {
try {
StpUtil.logoutByTokenValue(token);
@@ -511,4 +516,30 @@
}
});
}
+
+ @Override
+ public void cleanOnlineUser(List<Long> userIds) {
+ List<String> keys = StpUtil.searchTokenValue("", 0, -1, false);
+ if (CollUtil.isEmpty(keys)) {
+ return;
+ }
+ // 瑙掕壊鍏宠仈鐨勫湪绾跨敤鎴烽噺杩囧ぇ浼氬鑷磖edis闃诲鍗¢】 璋ㄦ厧鎿嶄綔
+ keys.parallelStream().forEach(key -> {
+ String token = StringUtils.substringAfterLast(key, ":");
+ // 濡傛灉宸茬粡杩囨湡鍒欒烦杩�
+ if (StpUtil.stpLogic.getTokenActiveTimeoutByToken(token) < -1) {
+ return;
+ }
+ LoginUser loginUser = LoginHelper.getLoginUser(token);
+ if (ObjectUtil.isNull(loginUser)) {
+ return;
+ }
+ if (userIds.contains(loginUser.getUserId())) {
+ try {
+ StpUtil.logoutByTokenValue(token);
+ } catch (NotLoginException ignored) {
+ }
+ }
+ });
+ }
}
--
Gitblit v1.9.3