24282 пре 2 година
родитељ
комит
d1d421e3cf

+ 0 - 1
hx-base/src/main/java/com/fjhx/base/system/SysLoginController.java

@@ -1,7 +1,6 @@
 package com.fjhx.base.system;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.DatasourceConstant;
 import com.ruoyi.common.core.domain.AjaxResult;

+ 1 - 0
hx-base/src/main/resources/i18n/messages.properties

@@ -11,6 +11,7 @@ user.blocked=用户已封禁,请联系管理员
 role.blocked=角色已封禁,请联系管理员
 login.blocked=很遗憾,访问IP已被列入系统黑名单
 user.logout.success=退出成功
+tenantId.not.exists=租户id不能为空
 
 length.not.valid=长度必须在{min}到{max}个字符之间
 

+ 14 - 0
ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserTenantIdNotExistsException.java

@@ -0,0 +1,14 @@
+package com.ruoyi.common.exception.user;
+
+/**
+ * 用户不存在异常类
+ *
+ * @author ruoyi
+ */
+public class UserTenantIdNotExistsException extends UserException {
+    private static final long serialVersionUID = 1L;
+
+    public UserTenantIdNotExistsException() {
+        super("tenantId.not.exists", null);
+    }
+}

+ 3 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/mybatis/interceptor/LogicInterceptor.java

@@ -1,5 +1,6 @@
 package com.ruoyi.framework.mybatis.interceptor;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.stat.JdbcDataSourceStat;
 import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.extension.plugins.inner.BaseMultiTableInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
+import com.ruoyi.common.constant.DatasourceConstant;
 import com.ruoyi.framework.mybatis.holder.LogicHolder;
 import lombok.extern.slf4j.Slf4j;
 import net.sf.jsqlparser.JSQLParserException;
@@ -290,7 +292,7 @@ public class LogicInterceptor extends BaseMultiTableInnerInterceptor implements
         }
 
         // 执行sql的数据源名称
-        String dataSourceType = DynamicDataSourceContextHolder.peek();
+        String dataSourceType = ObjectUtil.defaultIfBlank(DynamicDataSourceContextHolder.peek(), DatasourceConstant.MASTER_NAME);
         // 获取数据源中不包含逻辑删除字段的表名
         List<String> tableNameList = notIncludeLogicIdTableNameMap.get(dataSourceType);
         // 如果包涵则跳过拼接逻辑删除

+ 3 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/mybatis/interceptor/TenantInterceptor.java

@@ -1,5 +1,6 @@
 package com.ruoyi.framework.mybatis.interceptor;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.stat.JdbcDataSourceStat;
 import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
@@ -7,6 +8,7 @@ import com.baomidou.dynamic.datasource.ds.ItemDataSource;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
 import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
+import com.ruoyi.common.constant.DatasourceConstant;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.framework.mybatis.holder.TenantHolder;
 import net.sf.jsqlparser.expression.Expression;
@@ -65,7 +67,7 @@ public class TenantInterceptor extends TenantLineInnerInterceptor {
                 }
 
                 // 获取当前线程处理的数据源类型
-                String dataSourceType = DynamicDataSourceContextHolder.peek();
+                String dataSourceType = ObjectUtil.defaultIfBlank(DynamicDataSourceContextHolder.peek(), DatasourceConstant.MASTER_NAME);
                 // 获取当前数据原中不包涵租户字段的表名
                 List<String> tableNameList = notIncludeTenantIdTableNameMap.get(dataSourceType);
                 return tableNameList.contains(tableName);

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java

@@ -124,7 +124,7 @@ public class SysLoginService {
     public void loginPreCheck(String tenantId, String username, String password) {
 
         if (StringUtils.isEmpty(tenantId)) {
-            throw new ServiceException("租户id不能为空");
+            throw new UserTenantIdNotExistsException();
         }
         // 用户名或密码为空 错误
         if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {