This commit is contained in:
清晨
2025-04-08 16:37:17 +08:00
commit 0c9d340a05
1659 changed files with 170293 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi-base-support</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-tenant</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>${mybatis-plus-boot-starter.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,52 @@
package com.ruoyi.tenant;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import lombok.AllArgsConstructor;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.StringValue;
@AllArgsConstructor
public class CommonTenantHandler implements TenantLineHandler {
/**
* 获取租户ID
*
* @return 租户ID
*/
@Override
public Expression getTenantId() {
if (SecurityUtils.getLoginUser() != null) {
String tenantId = SecurityUtils.getLoginUser().getTenantId();
if (!StringUtils.isEmpty(tenantId)) {
return new StringValue(tenantId);
}
}
return new StringValue(TenantProperties.getInstance().getDefaultTenantId());
}
/**
* 获取租户字段名称
*
* @return 租户字段名称
*/
@Override
public String getTenantIdColumn() {
return TenantProperties.getInstance().getColumn();
}
/**
* 过滤租户表
*
* @param tableName 表名
* @return 是否进行过滤 返回true 表示不进行多租户处理
*/
@Override
public boolean ignoreTable(String tableName) {
if (Boolean.FALSE.equals(TenantProperties.getInstance().getEnable())){
return true;
}
return TenantProperties.getInstance().getIgnoreTables().contains(tableName);
}
}

View File

@@ -0,0 +1,46 @@
package com.ruoyi.tenant;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import lombok.AllArgsConstructor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@AllArgsConstructor
public class TenantConfiguration {
/**
* 自定义租户处理器
*
* @return TenantHandler
*/
@Bean
@ConditionalOnMissingBean(TenantLineHandler.class)
public TenantLineHandler tenantHandler() {
return new CommonTenantHandler();
}
/**
* 分页插件
*
* @param tenantHandler 自定义租户处理器
* @return PaginationInterceptor
*//*
@Bean
public PaginationInnerInterceptor paginationInterceptor(TenantLineHandler tenantHandler) {
PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
paginationInterceptor.
List<ISqlParser> sqlParserList = new ArrayList<>();
TenantSqlParser tenantSqlParser = new TenantSqlParser();
tenantSqlParser.setTenantHandler(tenantHandler);
sqlParserList.add(tenantSqlParser);
paginationInterceptor.setSqlParserList(sqlParserList);
return paginationInterceptor;
}*/
/**
* 新多租户插件配置,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存万一出现问题
*/
}

View File

@@ -0,0 +1,41 @@
package com.ruoyi.tenant;
import lombok.Data;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Data
public class TenantProperties {
private static TenantProperties instance;
private Boolean enable = false;
private String defaultTenantId = "00000000";
/**
* 多租户字段名称
*/
private String column = "tenant_id";
/**
* 多租户系统数据表
*/
private List<String> ignoreTables = new ArrayList<>();
private TenantProperties() {
}
public static TenantProperties getInstance() {
if (instance == null) {
instance = new TenantProperties();
instance.getIgnoreTables().addAll(Arrays.asList("sys_menu", "sys_config", "sys_dict_data", "sys_dict_type", "sys_role_data_rule", "gen_table","columns","tables",
"gen_table_column", "sys_role_menu", "sys_logininfor", "sys_tenant", "sys_user", "sys_user_post","sys_role_dept", "sys_role_menu", "sys_role", "sys_dept", "sys_user_role", "sys_job", "sys_job_log", "sys_oper_log"));
}
return instance;
}
}