多租户模式彻底架构化,脱离实体类注解配置

This commit is contained in:
attiya 2025-10-09 19:01:23 +08:00
parent ee2c046425
commit d265ddec06
10 changed files with 44 additions and 44 deletions

View File

@ -1,9 +1,13 @@
package com.cdzy.operations.config; package com.cdzy.operations.config;
import com.cdzy.operations.component.EbikeTenantFactory;
import com.mybatisflex.annotation.KeyType; import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.core.FlexGlobalConfig; import com.mybatisflex.core.FlexGlobalConfig;
import com.mybatisflex.core.audit.AuditManager; import com.mybatisflex.core.audit.AuditManager;
import com.mybatisflex.core.dialect.DbType; import com.mybatisflex.core.dialect.DbType;
import com.mybatisflex.core.keygen.KeyGenerators;
import com.mybatisflex.core.tenant.TenantFactory;
import com.mybatisflex.core.tenant.TenantManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -29,19 +33,15 @@ public class MyBatisFlexConfiguration {
, auditMessage.getElapsedTime()) , auditMessage.getElapsedTime())
); );
FlexGlobalConfig globalConfig = FlexGlobalConfig.getDefaultConfig();
//全局ID生成策略配置 //全局ID生成策略配置
FlexGlobalConfig.KeyConfig keyConfig = new FlexGlobalConfig.KeyConfig(); FlexGlobalConfig.KeyConfig keyConfig = new FlexGlobalConfig.KeyConfig();
keyConfig.setKeyType(KeyType.Generator); keyConfig.setKeyType(KeyType.Generator);
keyConfig.setValue("snowFlakeId"); keyConfig.setValue(KeyGenerators.snowFlakeId);
keyConfig.setBefore(true); keyConfig.setBefore(true);
globalConfig.setTenantColumn("operator_id");
FlexGlobalConfig.getDefaultConfig().setKeyConfig(keyConfig); globalConfig.setKeyConfig(keyConfig);
}
@Bean
public FlexGlobalConfig flexGlobalConfig() {
FlexGlobalConfig globalConfig = FlexGlobalConfig.getDefaultConfig();
//方言配置 //方言配置
globalConfig.setDbType(DbType.POSTGRE_SQL); // 关键配置 globalConfig.setDbType(DbType.POSTGRE_SQL); // 关键配置
//设置数据库正常时的值 //设置数据库正常时的值
@ -49,7 +49,17 @@ public class MyBatisFlexConfiguration {
//设置数据已被删除时的值 //设置数据已被删除时的值
globalConfig.setDeletedValueOfLogicDelete(Boolean.TRUE); globalConfig.setDeletedValueOfLogicDelete(Boolean.TRUE);
globalConfig.setTenantColumn("operator_id");
return globalConfig;
} }
/**
* 详细的租户工厂配置
*/
@Bean
public static TenantFactory tenantFactory() {
logger.info("开始初始化租户工厂...");
EbikeTenantFactory factory = new EbikeTenantFactory();
TenantManager.setTenantFactory(factory);
return new EbikeTenantFactory();
}
} }

View File

@ -1,10 +1,7 @@
package com.cdzy.operations.config; package com.cdzy.operations.config;
import com.cdzy.operations.component.EbikeTenantFactory;
import com.cdzy.operations.component.TenantInterceptor; import com.cdzy.operations.component.TenantInterceptor;
import com.mybatisflex.core.tenant.TenantFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@ -12,11 +9,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration @Configuration
public class WebConfig implements WebMvcConfigurer { public class WebConfig implements WebMvcConfigurer {
@Bean
public TenantFactory tenantFactory(){
return new EbikeTenantFactory();
}
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TenantInterceptor()); registry.addInterceptor(new TenantInterceptor());

View File

@ -34,7 +34,6 @@ public class EbikeBatteryInfo implements Serializable {
@Id @Id
private Long batteryId; private Long batteryId;
@Column(tenantId = true)
private Long operatorId; private Long operatorId;
/** /**

View File

@ -37,7 +37,6 @@ public class EbikeEcuInfo implements Serializable {
/** /**
* 运营商ID * 运营商ID
*/ */
@Column(tenantId = true)
private Long operatorId; private Long operatorId;
/** /**

View File

@ -1,9 +1,13 @@
package com.cdzy.staff.config; package com.cdzy.staff.config;
import com.cdzy.staff.component.EbikeTenantFactory;
import com.mybatisflex.annotation.KeyType; import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.core.FlexGlobalConfig; import com.mybatisflex.core.FlexGlobalConfig;
import com.mybatisflex.core.audit.AuditManager; import com.mybatisflex.core.audit.AuditManager;
import com.mybatisflex.core.dialect.DbType; import com.mybatisflex.core.dialect.DbType;
import com.mybatisflex.core.keygen.KeyGenerators;
import com.mybatisflex.core.tenant.TenantFactory;
import com.mybatisflex.core.tenant.TenantManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -29,19 +33,15 @@ public class MyBatisFlexConfiguration {
, auditMessage.getElapsedTime()) , auditMessage.getElapsedTime())
); );
FlexGlobalConfig globalConfig = FlexGlobalConfig.getDefaultConfig();
//全局ID生成策略配置 //全局ID生成策略配置
FlexGlobalConfig.KeyConfig keyConfig = new FlexGlobalConfig.KeyConfig(); FlexGlobalConfig.KeyConfig keyConfig = new FlexGlobalConfig.KeyConfig();
keyConfig.setKeyType(KeyType.Generator); keyConfig.setKeyType(KeyType.Generator);
keyConfig.setValue("snowFlakeId"); keyConfig.setValue(KeyGenerators.snowFlakeId);
keyConfig.setBefore(true); keyConfig.setBefore(true);
globalConfig.setTenantColumn("operator_id");
FlexGlobalConfig.getDefaultConfig().setKeyConfig(keyConfig); globalConfig.setKeyConfig(keyConfig);
}
@Bean
public FlexGlobalConfig flexGlobalConfig() {
FlexGlobalConfig globalConfig = FlexGlobalConfig.getDefaultConfig();
//方言配置 //方言配置
globalConfig.setDbType(DbType.POSTGRE_SQL); // 关键配置 globalConfig.setDbType(DbType.POSTGRE_SQL); // 关键配置
//设置数据库正常时的值 //设置数据库正常时的值
@ -49,7 +49,17 @@ public class MyBatisFlexConfiguration {
//设置数据已被删除时的值 //设置数据已被删除时的值
globalConfig.setDeletedValueOfLogicDelete(Boolean.TRUE); globalConfig.setDeletedValueOfLogicDelete(Boolean.TRUE);
globalConfig.setTenantColumn("operator_id");
return globalConfig;
} }
/**
* 详细的租户工厂配置
*/
@Bean
public static TenantFactory tenantFactory() {
logger.info("开始初始化租户工厂...");
EbikeTenantFactory factory = new EbikeTenantFactory();
TenantManager.setTenantFactory(factory);
return new EbikeTenantFactory();
}
} }

View File

@ -1,9 +1,7 @@
package com.cdzy.staff.config; package com.cdzy.staff.config;
import com.cdzy.staff.component.EbikeTenantFactory;
import com.cdzy.staff.component.TenantInterceptor; import com.cdzy.staff.component.TenantInterceptor;
import com.mybatisflex.core.tenant.TenantFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@ -11,11 +9,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration @Configuration
public class WebConfig implements WebMvcConfigurer { public class WebConfig implements WebMvcConfigurer {
@Bean
public TenantFactory tenantFactory(){
return new EbikeTenantFactory();
}
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TenantInterceptor()); registry.addInterceptor(new TenantInterceptor());

View File

@ -29,7 +29,6 @@ public class EbikeOperator implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Id @Id
@Column(tenantId = true)
private Long operatorId; private Long operatorId;
private String operatorName; private String operatorName;

View File

@ -37,7 +37,6 @@ public class EbikeOperatorStaff implements Serializable {
private String salt; private String salt;
@Column(tenantId = true)
private Long operatorId; private Long operatorId;
@Column(onInsertValue = "1") @Column(onInsertValue = "1")

View File

@ -44,7 +44,6 @@ public class EbikeRole implements Serializable {
/** /**
* 所属运营商 * 所属运营商
*/ */
@Column(tenantId = true)
private Long operatorId; private Long operatorId;
/** /**

View File

@ -29,7 +29,7 @@
<jackson.version>2.18.0</jackson.version> <jackson.version>2.18.0</jackson.version>
<hutool.version>5.8.26</hutool.version> <hutool.version>5.8.26</hutool.version>
<org.projectlombok.version>1.18.30</org.projectlombok.version> <org.projectlombok.version>1.18.30</org.projectlombok.version>
<mybatis-flex.version>1.11.0</mybatis-flex.version> <mybatis-flex.version>1.11.3</mybatis-flex.version>
<mybatis.version>3.0.4</mybatis.version> <mybatis.version>3.0.4</mybatis.version>
<satoken.version>1.40.0</satoken.version> <satoken.version>1.40.0</satoken.version>
<mysql.version>8.0.32</mysql.version> <mysql.version>8.0.32</mysql.version>