From 4868f0d213ffae6f05876a6cd1b79e37a6ae921f Mon Sep 17 00:00:00 2001 From: PIGCLOUD Date: Wed, 4 Feb 2026 14:09:17 +0800 Subject: [PATCH] =?UTF-8?q?fix(pigx-upms-biz):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=A7=9F=E6=88=B7=E7=94=A8=E6=88=B7=E7=A7=BB=E9=99=A4=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E7=A7=9F=E6=88=B7=E5=88=87=E6=8D=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在removeTenantUser方法添加@Transactional注解确保事务性 - 增加用户当前租户检查逻辑 - 当用户当前租户是被移除租户时自动切换到其他可用租户 - 更新用户租户信息后清除用户缓存 --- .../service/impl/SysTenantServiceImpl.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java index 82417fe84..d3bc9199b 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java @@ -357,6 +357,7 @@ public class SysTenantServiceImpl extends ServiceImpl userIdList = CollUtil.toList(tenantUserDTO.getUserIds()); @@ -373,6 +374,30 @@ public class SysTenantServiceImpl extends ServiceImpllambdaQuery().in(SysUserDept::getUserId, userIdList)); })); + + // 检查用户当前租户是否为被移除的租户,若是则自动切换到其他租户 + TenantBroker.noneAs(() -> { + for (Long userId : userIdList) { + SysUser sysUser = sysUserMapper.selectById(userId); + if (Objects.nonNull(sysUser) && tenantUserDTO.getTenantId().equals(sysUser.getTenantId())) { + // 查询用户的其他租户 + SysTenantUser otherTenantUser = sysTenantUserMapper.selectOne( + Wrappers.lambdaQuery() + .eq(SysTenantUser::getUserId, userId) + .ne(SysTenantUser::getTenantId, tenantUserDTO.getTenantId()), + false); + if (otherTenantUser != null) { + // 切换到其他租户 + sysUserMapper.update(Wrappers.lambdaUpdate() + .set(SysUser::getTenantId, otherTenantUser.getTenantId()) + .eq(SysUser::getUserId, userId)); + // 清除用户缓存 + cacheManager.getCache(CacheConstants.USER_DETAILS).evict(sysUser.getUsername()); + } + } + } + return null; + }); return Boolean.TRUE; }