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.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;
|
||||||
LambdaQueryWrapper<SysUser> sysUserOriginLoginCountWrapper = new LambdaQueryWrapper<>();
|
SysUser originUser = TenantSwitchContext.me().changeTenant(tenantId, () -> {
|
||||||
sysUserOriginLoginCountWrapper.eq(SysUser::getUserId, userId);
|
LambdaQueryWrapper<SysUser> sysUserOriginLoginCountWrapper = new LambdaQueryWrapper<>();
|
||||||
sysUserOriginLoginCountWrapper.select(SysUser::getLoginCount);
|
sysUserOriginLoginCountWrapper.eq(SysUser::getUserId, userId);
|
||||||
SysUser originUser;
|
sysUserOriginLoginCountWrapper.select(SysUser::getLoginCount);
|
||||||
try {
|
return this.getOne(sysUserOriginLoginCountWrapper, false);
|
||||||
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
|
LambdaUpdateWrapper<SysUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||||
Long tenantId = tenantCodeGetApi.getTenantIdByCode(tenantCode);
|
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 {
|
TenantSwitchContext.me().changeTenant(tenantCode, () -> {
|
||||||
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));
|
|
||||||
this.update(lambdaUpdateWrapper);
|
this.update(lambdaUpdateWrapper);
|
||||||
} finally {
|
return 0;
|
||||||
TenantIdHolder.remove();
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue