|
@@ -26,7 +26,8 @@ public class TenantInterceptor extends TenantLineInnerInterceptor {
|
|
|
|
|
|
private static final String TenantName = "tenant_id";
|
|
|
|
|
|
- private static final Map<String, List<String>> notIncludeTenantIdTableNameMap = new ConcurrentHashMap<>();
|
|
|
+ // 包涵租户字段集合
|
|
|
+ private static final Map<String, List<String>> includeTenantIdTableNameMap = new ConcurrentHashMap<>();
|
|
|
|
|
|
public TenantInterceptor(DataSource dataSource) {
|
|
|
DynamicRoutingDataSource dynamicRoutingDataSource = (DynamicRoutingDataSource) dataSource;
|
|
@@ -39,11 +40,11 @@ public class TenantInterceptor extends TenantLineInnerInterceptor {
|
|
|
// 获取数据库名
|
|
|
String dbName = url.split("/")[3].split("\\?")[0];
|
|
|
// 查询包含逻辑删除字段的表名sql
|
|
|
- String sql = "SELECT DISTINCT table_name FROM information_schema.COLUMNS WHERE table_schema = ? AND column_name != ?";
|
|
|
+ String sql = "SELECT table_name FROM information_schema.COLUMNS WHERE table_schema = ? AND column_name = ?";
|
|
|
// 执行sql找出不包含逻辑删除字段的表名
|
|
|
- List<String> notContainsDelFlagTableNameList = new JdbcTemplate(v).queryForList(sql, String.class, dbName, TenantName);
|
|
|
+ List<String> includeTenantIdTableNameList = new JdbcTemplate(v).queryForList(sql, String.class, dbName, TenantName);
|
|
|
// 数据赋值
|
|
|
- notIncludeTenantIdTableNameMap.put(dataSourceStat.getName(), notContainsDelFlagTableNameList);
|
|
|
+ includeTenantIdTableNameMap.put(dataSourceStat.getName(), includeTenantIdTableNameList);
|
|
|
});
|
|
|
|
|
|
setTenantLineHandler(new TenantLineHandler() {
|
|
@@ -68,9 +69,9 @@ public class TenantInterceptor extends TenantLineInnerInterceptor {
|
|
|
|
|
|
// 获取当前线程处理的数据源类型
|
|
|
String dataSourceType = ObjectUtil.defaultIfBlank(DynamicDataSourceContextHolder.peek(), DatasourceConstant.MASTER_NAME);
|
|
|
- // 获取当前数据原中不包涵租户字段的表名
|
|
|
- List<String> tableNameList = notIncludeTenantIdTableNameMap.get(dataSourceType);
|
|
|
- return tableNameList.contains(tableName);
|
|
|
+ // 获取当前数据原中包涵租户字段的表名
|
|
|
+ List<String> tableNameList = includeTenantIdTableNameMap.get(dataSourceType);
|
|
|
+ return !tableNameList.contains(tableName);
|
|
|
}
|
|
|
|
|
|
});
|