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; }