【8.3.4】【tenant】重新整理租户切换的方式

master
stylefeng 2025-05-05 22:49:01 +08:00
parent 10b4255bbf
commit c32ca70ffa
1 changed files with 25 additions and 36 deletions

View File

@ -17,7 +17,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.db.mp.tenant.holder.TenantIdHolder; import cn.stylefeng.roses.kernel.db.mp.tenant.context.TenantSwitchContext;
import cn.stylefeng.roses.kernel.db.mp.tenant.holder.TenantSwitchHolder; import cn.stylefeng.roses.kernel.db.mp.tenant.holder.TenantSwitchHolder;
import cn.stylefeng.roses.kernel.dsctn.api.context.DataSourceContext; import cn.stylefeng.roses.kernel.dsctn.api.context.DataSourceContext;
import cn.stylefeng.roses.kernel.event.sdk.publish.BusinessEventPublisher; import cn.stylefeng.roses.kernel.event.sdk.publish.BusinessEventPublisher;
@ -505,22 +505,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
sysUserLambdaQueryWrapper.select(SysUser::getPassword, SysUser::getPasswordSalt, SysUser::getStatusFlag, SysUser::getFreezeDeadlineTime, SysUser::getUserId); sysUserLambdaQueryWrapper.select(SysUser::getPassword, SysUser::getPasswordSalt, SysUser::getStatusFlag, SysUser::getFreezeDeadlineTime, SysUser::getUserId);
// 单独填充租户id // 单独填充租户id
SysUser sysUserServiceOne; SysUser sysUserServiceOne = TenantSwitchContext.me().changeTenant(tenantId, () -> {
try {
TenantIdHolder.set(tenantId); // 获取用户信息
sysUserServiceOne = this.getOne(sysUserLambdaQueryWrapper, false); SysUser user = this.getOne(sysUserLambdaQueryWrapper, false);
// 用户查询不到,提示账号密码错误 // 用户查询不到,提示账号密码错误
if (sysUserServiceOne == null) { if (user == null) {
throw new ServiceException(SysUserExceptionEnum.ACCOUNT_NOT_EXIST); throw new ServiceException(SysUserExceptionEnum.ACCOUNT_NOT_EXIST);
} }
// 更新用户的冻结状态 // 更新用户的冻结状态
this.updateSysUserFreezeStatus(account, sysUserServiceOne); this.updateSysUserFreezeStatus(account, user);
} finally { return user;
TenantIdHolder.remove(); });
}
return new UserValidateDTO(sysUserServiceOne.getUserId(), sysUserServiceOne.getPassword(), sysUserServiceOne.getPasswordSalt(), sysUserServiceOne.getStatusFlag(), tenantId, account); return new UserValidateDTO(sysUserServiceOne.getUserId(), sysUserServiceOne.getPassword(), sysUserServiceOne.getPasswordSalt(), sysUserServiceOne.getStatusFlag(), tenantId, account);
} }
@ -556,16 +555,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
// 获取原来的登录次数 // 获取原来的登录次数
long loginCount = 0; long loginCount = 0;
SysUser originUser = TenantSwitchContext.me().changeTenant(tenantId, () -> {
LambdaQueryWrapper<SysUser> sysUserOriginLoginCountWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUser> sysUserOriginLoginCountWrapper = new LambdaQueryWrapper<>();
sysUserOriginLoginCountWrapper.eq(SysUser::getUserId, userId); sysUserOriginLoginCountWrapper.eq(SysUser::getUserId, userId);
sysUserOriginLoginCountWrapper.select(SysUser::getLoginCount); sysUserOriginLoginCountWrapper.select(SysUser::getLoginCount);
SysUser originUser; return this.getOne(sysUserOriginLoginCountWrapper, false);
try { });
TenantIdHolder.set(tenantId);
originUser = this.getOne(sysUserOriginLoginCountWrapper, false);
} finally {
TenantIdHolder.remove();
}
// 获取原有的登录次数准备加1 // 获取原有的登录次数准备加1
if (originUser == null || originUser.getLoginCount() == null) { if (originUser == null || originUser.getLoginCount() == null) {
@ -580,12 +575,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
sysUserLambdaUpdateWrapper.set(SysUser::getLastLoginTime, new Date()); sysUserLambdaUpdateWrapper.set(SysUser::getLastLoginTime, new Date());
sysUserLambdaUpdateWrapper.set(SysUser::getLastLoginIp, ip); sysUserLambdaUpdateWrapper.set(SysUser::getLastLoginIp, ip);
sysUserLambdaUpdateWrapper.set(SysUser::getLoginCount, loginCount); sysUserLambdaUpdateWrapper.set(SysUser::getLoginCount, loginCount);
try { TenantSwitchContext.me().changeTenant(tenantId, () -> {
TenantIdHolder.set(tenantId);
this.update(sysUserLambdaUpdateWrapper); this.update(sysUserLambdaUpdateWrapper);
} finally { return 0;
TenantIdHolder.remove(); });
}
} }
@Override @Override
@ -711,19 +704,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Override @Override
public void lockUserStatus(String tenantCode, String account) { public void lockUserStatus(String tenantCode, String account) {
// 获取租户id
Long tenantId = tenantCodeGetApi.getTenantIdByCode(tenantCode);
try {
TenantIdHolder.set(tenantId);
LambdaUpdateWrapper<SysUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SysUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(SysUser::getAccount, account); lambdaUpdateWrapper.eq(SysUser::getAccount, account);
lambdaUpdateWrapper.set(SysUser::getStatusFlag, UserStatusEnum.TEMP_FREEZE.getKey()); lambdaUpdateWrapper.set(SysUser::getStatusFlag, UserStatusEnum.TEMP_FREEZE.getKey());
lambdaUpdateWrapper.set(SysUser::getFreezeDeadlineTime, DateUtil.offset(new Date(), DateField.DAY_OF_MONTH, 1)); lambdaUpdateWrapper.set(SysUser::getFreezeDeadlineTime, DateUtil.offset(new Date(), DateField.DAY_OF_MONTH, 1));
TenantSwitchContext.me().changeTenant(tenantCode, () -> {
this.update(lambdaUpdateWrapper); this.update(lambdaUpdateWrapper);
} finally { return 0;
TenantIdHolder.remove(); });
}
} }
@Override @Override