update 优化 规范化租户业务编码 增加 TenantHelper 租户助手

This commit is contained in:
疯狂的狮子li 2023-02-09 13:50:47 +08:00
parent 6908788480
commit 3f24337b4b
4 changed files with 51 additions and 13 deletions

View File

@ -21,6 +21,7 @@ import com.ruoyi.common.core.exception.user.CaptchaExpireException;
import com.ruoyi.common.core.exception.user.UserException;
import com.ruoyi.common.core.utils.*;
import com.ruoyi.common.log.event.LogininforEvent;
import com.ruoyi.common.mybatis.helper.TenantHelper;
import com.ruoyi.common.redis.utils.RedisUtils;
import com.ruoyi.common.satoken.utils.LoginHelper;
import com.ruoyi.system.domain.SysUser;
@ -62,9 +63,6 @@ public class SysLoginService {
@Value("${user.password.lockTime}")
private Integer lockTime;
@Value("${tenant.enable}")
private Boolean tenantEnable;
/**
* 登录验证
*
@ -205,7 +203,7 @@ public class SysLoginService {
private SysUserVo loadUserByUsername(String tenantId, String username) {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserName, SysUser::getStatus)
.eq(tenantEnable, SysUser::getTenantId, tenantId)
.eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
.eq(SysUser::getUserName, username));
if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", username);
@ -220,7 +218,7 @@ public class SysLoginService {
private SysUserVo loadUserByPhonenumber(String tenantId, String phonenumber) {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getPhonenumber, SysUser::getStatus)
.eq(tenantEnable, SysUser::getTenantId, tenantId)
.eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
.eq(SysUser::getPhonenumber, phonenumber));
if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", phonenumber);
@ -314,7 +312,7 @@ public class SysLoginService {
}
private void checkTenant(String tenantId) {
if (tenantEnable) {
if (TenantHelper.isEnable()) {
return;
}
SysTenantVo tenant = tenantService.queryByTenantId(tenantId);
@ -324,7 +322,8 @@ public class SysLoginService {
} else if (TenantStatus.DISABLE.getCode().equals(tenant.getStatus())) {
log.info("登录租户:{} 已被停用.", tenantId);
throw new TenantException("tenant.blocked");
} else if (tenant.getExpireTime() != null && new Date().after(tenant.getExpireTime())) {
} else if (ObjectUtil.isNotNull(tenant.getExpireTime())
&& new Date().after(tenant.getExpireTime())) {
log.info("登录租户:{} 已超过有效期.", tenantId);
throw new TenantException("tenant.expired");
}

View File

@ -1,4 +1,4 @@
package com.ruoyi.common.mybatis.helper;
package com.ruoyi.common.mybatis.handler;
import com.ruoyi.common.core.domain.R;
import lombok.extern.slf4j.Slf4j;

View File

@ -0,0 +1,40 @@
package com.ruoyi.common.mybatis.helper;
import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
import com.ruoyi.common.core.utils.SpringUtils;
import com.ruoyi.common.mybatis.properties.TenantProperties;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
/**
* 租户助手
*
* @author Lion Li
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class TenantHelper {
private static final TenantProperties PROPERTIES = SpringUtils.getBean(TenantProperties.class);
/**
* 租户功能是否启用
*/
public static boolean isEnable() {
return PROPERTIES.getEnable();
}
/**
* 开启忽略租户(开启后需手动调用 {@link #disableIgnore()} 关闭)
*/
public static void enableIgnore() {
InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
}
/**
* 关闭忽略租户
*/
public static void disableIgnore() {
InterceptorIgnoreHelper.clearIgnoreStrategy();
}
}

View File

@ -1,8 +1,7 @@
package com.ruoyi.system.runner;
import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
import com.ruoyi.common.core.config.RuoYiConfig;
import com.ruoyi.common.mybatis.helper.TenantHelper;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysDictTypeService;
import com.ruoyi.system.service.ISysOssConfigService;
@ -29,18 +28,18 @@ public class SystemApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
TenantHelper.enableIgnore();
ossConfigService.init();
log.info("初始化OSS配置成功");
if (ruoyiConfig.isCacheLazy()) {
InterceptorIgnoreHelper.clearIgnoreStrategy();
TenantHelper.disableIgnore();
return;
}
configService.loadingConfigCache();
log.info("加载参数缓存数据成功");
dictTypeService.loadingDictCache();
log.info("加载字典缓存数据成功");
InterceptorIgnoreHelper.clearIgnoreStrategy();
TenantHelper.disableIgnore();
}
}