diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java index d885e7523..b21e985ab 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java @@ -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() .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() .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"); } diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/MybatisExceptionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java similarity index 97% rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/MybatisExceptionHandler.java rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java index 532cd7984..12e1d0c37 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/MybatisExceptionHandler.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java @@ -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; diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/TenantHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/TenantHelper.java new file mode 100644 index 000000000..fc1465de6 --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/TenantHelper.java @@ -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(); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java index c084975af..9a7cd57e1 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java @@ -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(); } }