Selaa lähdekoodia

fix 租户id获取的执行顺序

miemie 3 vuotta sitten
vanhempi
commit
9e43cab111

+ 8 - 7
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/TenantLineInnerInterceptor.java

@@ -528,20 +528,21 @@ public class TenantLineInnerInterceptor extends JsqlParserSupport implements Inn
         if (CollectionUtils.isEmpty(tables)) {
             return currentExpression;
         }
-        // 租户
         // 构造每张表的条件
-        List<EqualsTo> equalsTos = tables.stream()
+        List<Table> tempTables = tables.stream()
             .filter(x -> !tenantLineHandler.ignoreTable(x.getName()))
-            .map(item -> {
-                Expression tenantId = tenantLineHandler.getTenantId();
-                return new EqualsTo(getAliasColumn(item), tenantId);
-            })
             .collect(Collectors.toList());
 
-        if (CollectionUtils.isEmpty(equalsTos)) {
+        // 没有表需要处理直接返回
+        if (CollectionUtils.isEmpty(tempTables)) {
             return currentExpression;
         }
 
+        Expression tenantId = tenantLineHandler.getTenantId();
+        List<EqualsTo> equalsTos = tempTables.stream()
+            .map(item -> new EqualsTo(getAliasColumn(item), tenantId))
+            .collect(Collectors.toList());
+
         // 注入的表达式
         Expression injectExpression = equalsTos.get(0);
         // 如果有多表,则用 and 连接