|
|
@ -91,7 +91,8 @@ public class KiccTenantLineInnerInterceptor extends TenantLineInnerInterceptor { |
|
|
|
}); |
|
|
|
}); |
|
|
|
statementBuilder.delete(statementBuilder.length()-4, statementBuilder.length()); |
|
|
|
statementBuilder.delete(statementBuilder.length()-4, statementBuilder.length()); |
|
|
|
TenantLikeExpression tenantLikeExpression = new TenantLikeExpression(statementBuilder.toString()); |
|
|
|
TenantLikeExpression tenantLikeExpression = new TenantLikeExpression(statementBuilder.toString()); |
|
|
|
duplicateUpdateColumns.add(tenantLikeExpression); |
|
|
|
Parenthesis parenthesis = new Parenthesis(tenantLikeExpression); |
|
|
|
|
|
|
|
duplicateUpdateColumns.add(parenthesis); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Select select = insert.getSelect(); |
|
|
|
Select select = insert.getSelect(); |
|
|
@ -145,10 +146,11 @@ public class KiccTenantLineInnerInterceptor extends TenantLineInnerInterceptor { |
|
|
|
}); |
|
|
|
}); |
|
|
|
statementBuilder.delete(statementBuilder.length()-4, statementBuilder.length()); |
|
|
|
statementBuilder.delete(statementBuilder.length()-4, statementBuilder.length()); |
|
|
|
TenantLikeExpression tenantLikeExpression = new TenantLikeExpression(statementBuilder.toString()); |
|
|
|
TenantLikeExpression tenantLikeExpression = new TenantLikeExpression(statementBuilder.toString()); |
|
|
|
|
|
|
|
Parenthesis parenthesis = new Parenthesis(tenantLikeExpression); |
|
|
|
if (null != where) { |
|
|
|
if (null != where) { |
|
|
|
return where instanceof OrExpression ? new AndExpression(tenantLikeExpression, new Parenthesis(where)) : new AndExpression(tenantLikeExpression, where); |
|
|
|
return where instanceof OrExpression ? new AndExpression(parenthesis, new Parenthesis(where)) : new AndExpression(parenthesis, where); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
return tenantLikeExpression; |
|
|
|
return parenthesis; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -158,7 +160,7 @@ public class KiccTenantLineInnerInterceptor extends TenantLineInnerInterceptor { |
|
|
|
return currentExpression; |
|
|
|
return currentExpression; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// 替换likeExpression支持查询多个租户ID的条件,包括查询数据对应多个多租户ID的数据
|
|
|
|
// 替换likeExpression支持查询多个租户ID的条件,包括查询数据对应多个多租户ID的数据
|
|
|
|
List<TenantLikeExpression> strExpressions = tables.stream() |
|
|
|
List<Parenthesis> likeParenthesisExpressions = tables.stream() |
|
|
|
.filter(x -> !this.tenantLineHandler.ignoreTable(x.getName())) |
|
|
|
.filter(x -> !this.tenantLineHandler.ignoreTable(x.getName())) |
|
|
|
.map(item -> { |
|
|
|
.map(item -> { |
|
|
|
List<String> tenantIds = StrUtil.split(this.tenantLineHandler.getTenantId().toString(), ","); |
|
|
|
List<String> tenantIds = StrUtil.split(this.tenantLineHandler.getTenantId().toString(), ","); |
|
|
@ -171,15 +173,17 @@ public class KiccTenantLineInnerInterceptor extends TenantLineInnerInterceptor { |
|
|
|
}); |
|
|
|
}); |
|
|
|
statementBuilder.delete(statementBuilder.length()-4, statementBuilder.length()); |
|
|
|
statementBuilder.delete(statementBuilder.length()-4, statementBuilder.length()); |
|
|
|
TenantLikeExpression tenantLikeExpression = new TenantLikeExpression(statementBuilder.toString()); |
|
|
|
TenantLikeExpression tenantLikeExpression = new TenantLikeExpression(statementBuilder.toString()); |
|
|
|
return tenantLikeExpression; |
|
|
|
Parenthesis parenthesis = new Parenthesis(tenantLikeExpression); |
|
|
|
|
|
|
|
return parenthesis; |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
if (CollectionUtils.isEmpty(strExpressions)) { |
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(likeParenthesisExpressions)) { |
|
|
|
return currentExpression; |
|
|
|
return currentExpression; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
Expression injectExpression = strExpressions.get(0); |
|
|
|
Expression injectExpression = likeParenthesisExpressions.get(0); |
|
|
|
if (strExpressions.size() > 1) { |
|
|
|
if (likeParenthesisExpressions.size() > 1) { |
|
|
|
for(int i = 1; i < strExpressions.size(); ++i) { |
|
|
|
for(int i = 1; i < likeParenthesisExpressions.size(); ++i) { |
|
|
|
injectExpression = new AndExpression(injectExpression, strExpressions.get(i)); |
|
|
|
injectExpression = new AndExpression(injectExpression, likeParenthesisExpressions.get(i)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|