diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java index 868b4b00b..92c77ba8a 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java @@ -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 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 impl // 获取原来的登录次数 long loginCount = 0; - LambdaQueryWrapper 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 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 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 impl @Override public void lockUserStatus(String tenantCode, String account) { - // 获取租户id - Long tenantId = tenantCodeGetApi.getTenantIdByCode(tenantCode); + LambdaUpdateWrapper 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 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