From 2ba0ab306d12882d3a1c5f35134ba10baa3442a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Sat, 19 Jan 2019 23:23:23 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B7=BB=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E7=89=B9=E6=80=A7=EF=BC=8C=E6=94=AF=E6=8C=81=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E8=A1=A8=E9=85=8D=E7=BD=AE=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/mybatis/MybatisPlusConfig.java | 14 ++++------- .../tenant/PigxTenantAutoConfiguration.java | 24 ------------------- .../common/data/tenant/PigxTenantConfig.java | 17 ------------- ...s.java => PigxTenantConfigProperties.java} | 16 +++++++++---- .../common/data/tenant/PigxTenantHandler.java | 13 +++++----- .../main/resources/META-INF/spring.factories | 2 +- .../transaction/TransactionConfiguration.java | 3 +-- .../resources/config/pigx-activiti-dev.yml | 3 +++ .../resources/config/pigx-upms-biz-dev.yml | 3 +++ 9 files changed, 31 insertions(+), 64 deletions(-) delete mode 100644 pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantAutoConfiguration.java delete mode 100644 pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfig.java rename pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/{TenantProperties.java => PigxTenantConfigProperties.java} (55%) diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfig.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfig.java index ef8bd476d..8d1cc1d98 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfig.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfig.java @@ -23,9 +23,7 @@ import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser; import com.pig4cloud.pigx.common.data.datascope.DataScopeInterceptor; -import com.pig4cloud.pigx.common.data.tenant.PigxTenantConfig; import com.pig4cloud.pigx.common.data.tenant.PigxTenantHandler; -import lombok.AllArgsConstructor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; @@ -41,11 +39,8 @@ import java.util.List; */ @Configuration @MapperScan("com.pig4cloud.pigx.*.mapper") -@AllArgsConstructor public class MybatisPlusConfig { - private final PigxTenantConfig pigxTenantConfig; - /** * 创建租户维护处理器对象 * @@ -54,23 +49,22 @@ public class MybatisPlusConfig { @Bean @ConditionalOnMissingBean public PigxTenantHandler pigxTenantHandler() { - PigxTenantHandler pigxTenantHandler = new PigxTenantHandler(); - pigxTenantHandler.setTenantTables(pigxTenantConfig.getTenantTables()); - return pigxTenantHandler; + return new PigxTenantHandler(); } /** * 分页插件 * + * @param tenantHandler 租户处理器 * @return PaginationInterceptor */ @Bean @ConditionalOnMissingBean - public PaginationInterceptor paginationInterceptor() { + public PaginationInterceptor paginationInterceptor(PigxTenantHandler tenantHandler) { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); List sqlParserList = new ArrayList<>(); TenantSqlParser tenantSqlParser = new TenantSqlParser(); - tenantSqlParser.setTenantHandler(pigxTenantHandler()); + tenantSqlParser.setTenantHandler(tenantHandler); sqlParserList.add(tenantSqlParser); paginationInterceptor.setSqlParserList(sqlParserList); return paginationInterceptor; diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantAutoConfiguration.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantAutoConfiguration.java deleted file mode 100644 index bbca1d082..000000000 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantAutoConfiguration.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.pig4cloud.pigx.common.data.tenant; - -import lombok.AllArgsConstructor; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; - -/** - * 多租户自动配置类 - * - * @author oathsign - */ -@AllArgsConstructor -@EnableConfigurationProperties(TenantProperties.class) -public class PigxTenantAutoConfiguration { - - private final TenantProperties properties; - - @Bean - PigxTenantConfig pigxTenantTable() { - PigxTenantConfig pigxTenantConfig = new PigxTenantConfig(); - pigxTenantConfig.setTenantTables(properties.getTables()); - return pigxTenantConfig; - } -} diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfig.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfig.java deleted file mode 100644 index e74b79893..000000000 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfig.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.pig4cloud.pigx.common.data.tenant; - -import lombok.Data; - -/** - * 多租户配置 - * - * @author oathsign - */ -@Data -public class PigxTenantConfig { - - /** - * 应用了多租户的数据表集合 - */ - private String[] tenantTables = new String[]{}; -} diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantProperties.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfigProperties.java similarity index 55% rename from pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantProperties.java rename to pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfigProperties.java index a7c8891ec..eb637aea8 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantProperties.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfigProperties.java @@ -4,18 +4,26 @@ import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import java.util.ArrayList; +import java.util.List; + /** - * 多租户配置类对应属性配置映射 + * 多租户配置 * * @author oathsign */ @Data @Configuration @ConfigurationProperties(prefix = "pigx.tenant") -public class TenantProperties { +public class PigxTenantConfigProperties { /** - * 服务中应用多租户的数据库表名 + * 维护租户列名称 */ - private String[] tables = new String[]{}; + private String column; + + /** + * 多租户的数据表集合 + */ + private List tables = new ArrayList<>(); } diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantHandler.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantHandler.java index b2c6f5f8d..6c5aa8f7f 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantHandler.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantHandler.java @@ -17,12 +17,12 @@ package com.pig4cloud.pigx.common.data.tenant; -import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.LongValue; +import org.springframework.beans.factory.annotation.Autowired; /** * @author lengleng @@ -31,9 +31,9 @@ import net.sf.jsqlparser.expression.LongValue; * 租户维护处理器 */ @Slf4j -@Data public class PigxTenantHandler implements TenantHandler { - private String[] tenantTables = new String[]{}; + @Autowired + private PigxTenantConfigProperties properties; /** * 获取租户值 @@ -54,7 +54,8 @@ public class PigxTenantHandler implements TenantHandler { */ @Override public String getTenantIdColumn() { - return "tenant_id"; + return StrUtil.isNotBlank(properties.getColumn()) + ? properties.getColumn() : "tenant_id"; } /** @@ -65,6 +66,6 @@ public class PigxTenantHandler implements TenantHandler { */ @Override public boolean doTableFilter(String tableName) { - return !ArrayUtil.contains(tenantTables, tableName); + return !properties.getTables().contains(tableName); } } diff --git a/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories b/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories index c29a25e8f..b31d9ce74 100644 --- a/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories +++ b/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories @@ -2,7 +2,7 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.pig4cloud.pigx.common.data.cache.RedisTemplateConfig,\ com.pig4cloud.pigx.common.data.cache.RedisCacheManagerConfig,\ com.pig4cloud.pigx.common.data.cache.RedisCacheAutoConfiguration,\ - com.pig4cloud.pigx.common.data.tenant.PigxTenantAutoConfiguration,\ + com.pig4cloud.pigx.common.data.tenant.PigxTenantConfigProperties,\ com.pig4cloud.pigx.common.data.tenant.TenantContextHolderFilter,\ com.pig4cloud.pigx.common.data.tenant.PigxFeignTenantConfiguration,\ com.pig4cloud.pigx.common.data.mybatis.MybatisPlusConfig \ No newline at end of file diff --git a/pigx-common/pigx-common-transaction/src/main/java/com/pig4cloud/pigx/common/transaction/TransactionConfiguration.java b/pigx-common/pigx-common-transaction/src/main/java/com/pig4cloud/pigx/common/transaction/TransactionConfiguration.java index 176b8acd2..c6676d76c 100755 --- a/pigx-common/pigx-common-transaction/src/main/java/com/pig4cloud/pigx/common/transaction/TransactionConfiguration.java +++ b/pigx-common/pigx-common-transaction/src/main/java/com/pig4cloud/pigx/common/transaction/TransactionConfiguration.java @@ -21,8 +21,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; /** - *@author LCN on 2017/6/26. - * + * @author LCN on 2017/6/26. * @author LCN * @since 4.1.0 */ diff --git a/pigx-config/src/main/resources/config/pigx-activiti-dev.yml b/pigx-config/src/main/resources/config/pigx-activiti-dev.yml index fce70887d..d605fdfec 100644 --- a/pigx-config/src/main/resources/config/pigx-activiti-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-activiti-dev.yml @@ -25,7 +25,10 @@ spring: username: root password: root url: jdbc:mysql://pigx-mysql:3306/pigxx_ac?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true + +# 租户表维护 pigx: tenant: + column: tenant_id tables: - oa_leave_bill diff --git a/pigx-config/src/main/resources/config/pigx-upms-biz-dev.yml b/pigx-config/src/main/resources/config/pigx-upms-biz-dev.yml index 4d6d99761..e1d035822 100644 --- a/pigx-config/src/main/resources/config/pigx-upms-biz-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-upms-biz-dev.yml @@ -44,8 +44,11 @@ minio: logging: level: com.pig4cloud.pigx.admin.mapper: debug + +# 租户表维护 pigx: tenant: + column: tenant_id tables: - sys_user - sys_role