refactor: 多租户开发和代码规范调整

This commit is contained in:
Ray.Hao
2025-12-11 21:13:52 +08:00
parent 47cabcbcfc
commit 51d8220a18
67 changed files with 922 additions and 1157 deletions

View File

@@ -9,12 +9,11 @@ import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerIntercept
import com.youlai.boot.config.property.TenantProperties;
import com.youlai.boot.plugin.mybatis.MyDataPermissionHandler;
import com.youlai.boot.plugin.mybatis.MyMetaObjectHandler;
import com.youlai.boot.plugin.mybatis.TenantLineHandler;
import com.youlai.boot.plugin.mybatis.MyTenantLineHandler;
import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -35,7 +34,7 @@ public class MybatisConfig {
private String dbType;
@Autowired(required = false)
private TenantLineHandler tenantLineHandler;
private MyTenantLineHandler myTenantLineHandler;
@Autowired(required = false)
private TenantProperties tenantProperties;
@@ -51,8 +50,8 @@ public class MybatisConfig {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 多租户插件(如果启用,必须在最前面)
if (tenantProperties != null && Boolean.TRUE.equals(tenantProperties.getEnabled()) && tenantLineHandler != null) {
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(tenantLineHandler));
if (tenantProperties != null && Boolean.TRUE.equals(tenantProperties.getEnabled()) && myTenantLineHandler != null) {
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(myTenantLineHandler));
}
// 数据权限

View File

@@ -7,21 +7,17 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.youlai.boot.core.interceptor.TenantValidationInterceptor;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.validator.HibernateValidator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.validation.beanvalidation.SpringConstraintValidatorFactory;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.math.BigInteger;
@@ -43,9 +39,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Autowired(required = false)
private TenantValidationInterceptor tenantValidationInterceptor;
/**
* 配置消息转换器
*
@@ -85,22 +78,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
* @param autowireCapableBeanFactory 用于注入 SpringConstraintValidatorFactory
* @return Validator 实例
*/
/**
* 配置拦截器
*
* @param registry 拦截器注册器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册租户校验拦截器(仅在多租户模式启用时生效)
if (tenantValidationInterceptor != null) {
registry.addInterceptor(tenantValidationInterceptor)
.addPathPatterns("/api/**")
.order(2); // 在认证拦截器之后执行
log.info("租户校验拦截器已注册");
}
}
@Bean
public Validator validator(final AutowireCapableBeanFactory autowireCapableBeanFactory) {
try (ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)

View File

@@ -57,6 +57,9 @@ public class TenantProperties {
ignoreTables.add("sys_dict");
ignoreTables.add("sys_dict_item");
ignoreTables.add("sys_config");
// 代码生成表(平台共用,不做租户隔离)
ignoreTables.add("gen_table");
ignoreTables.add("gen_table_column");
}
}