mirror of https://gitee.com/stylefeng/roses
【8.3.4】【tenant】重新整理租户切换的方式
parent
10b4255bbf
commit
c32ca70ffa
|
@ -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.pojo.entity.BaseEntity;
|
||||
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.dsctn.api.context.DataSourceContext;
|
||||
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);
|
||||
|
||||
// 单独填充租户id
|
||||
SysUser sysUserServiceOne;
|
||||
try {
|
||||
TenantIdHolder.set(tenantId);
|
||||
sysUserServiceOne = this.getOne(sysUserLambdaQueryWrapper, false);
|
||||
SysUser sysUserServiceOne = TenantSwitchContext.me().changeTenant(tenantId, () -> {
|
||||
|
||||
// 获取用户信息
|
||||
SysUser user = this.getOne(sysUserLambdaQueryWrapper, false);
|
||||
|
||||
// 用户查询不到,提示账号密码错误
|
||||
if (sysUserServiceOne == null) {
|
||||
if (user == null) {
|
||||
throw new ServiceException(SysUserExceptionEnum.ACCOUNT_NOT_EXIST);
|
||||
}
|
||||
|
||||
// 更新用户的冻结状态
|
||||
this.updateSysUserFreezeStatus(account, sysUserServiceOne);
|
||||
this.updateSysUserFreezeStatus(account, user);
|
||||
|
||||
} finally {
|
||||
TenantIdHolder.remove();
|
||||
}
|
||||
return user;
|
||||
});
|
||||
|
||||
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;
|
||||
LambdaQueryWrapper<SysUser> sysUserOriginLoginCountWrapper = new LambdaQueryWrapper<>();
|
||||
sysUserOriginLoginCountWrapper.eq(SysUser::getUserId, userId);
|
||||
sysUserOriginLoginCountWrapper.select(SysUser::getLoginCount);
|
||||
SysUser originUser;
|
||||
try {
|
||||
TenantIdHolder.set(tenantId);
|
||||
originUser = this.getOne(sysUserOriginLoginCountWrapper, false);
|
||||
} finally {
|
||||
TenantIdHolder.remove();
|
||||
}
|
||||
SysUser originUser = TenantSwitchContext.me().changeTenant(tenantId, () -> {
|
||||
LambdaQueryWrapper<SysUser> sysUserOriginLoginCountWrapper = new LambdaQueryWrapper<>();
|
||||
sysUserOriginLoginCountWrapper.eq(SysUser::getUserId, userId);
|
||||
sysUserOriginLoginCountWrapper.select(SysUser::getLoginCount);
|
||||
return this.getOne(sysUserOriginLoginCountWrapper, false);
|
||||
});
|
||||
|
||||
// 获取原有的登录次数,准备加1
|
||||
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::getLastLoginIp, ip);
|
||||
sysUserLambdaUpdateWrapper.set(SysUser::getLoginCount, loginCount);
|
||||
try {
|
||||
TenantIdHolder.set(tenantId);
|
||||
TenantSwitchContext.me().changeTenant(tenantId, () -> {
|
||||
this.update(sysUserLambdaUpdateWrapper);
|
||||
} finally {
|
||||
TenantIdHolder.remove();
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -711,19 +704,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
@Override
|
||||
public void lockUserStatus(String tenantCode, String account) {
|
||||
|
||||
// 获取租户id
|
||||
Long tenantId = tenantCodeGetApi.getTenantIdByCode(tenantCode);
|
||||
LambdaUpdateWrapper<SysUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(SysUser::getAccount, account);
|
||||
lambdaUpdateWrapper.set(SysUser::getStatusFlag, UserStatusEnum.TEMP_FREEZE.getKey());
|
||||
lambdaUpdateWrapper.set(SysUser::getFreezeDeadlineTime, DateUtil.offset(new Date(), DateField.DAY_OF_MONTH, 1));
|
||||
|
||||
try {
|
||||
TenantIdHolder.set(tenantId);
|
||||
LambdaUpdateWrapper<SysUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(SysUser::getAccount, account);
|
||||
lambdaUpdateWrapper.set(SysUser::getStatusFlag, UserStatusEnum.TEMP_FREEZE.getKey());
|
||||
lambdaUpdateWrapper.set(SysUser::getFreezeDeadlineTime, DateUtil.offset(new Date(), DateField.DAY_OF_MONTH, 1));
|
||||
TenantSwitchContext.me().changeTenant(tenantCode, () -> {
|
||||
this.update(lambdaUpdateWrapper);
|
||||
} finally {
|
||||
TenantIdHolder.remove();
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue