提交
This commit is contained in:
35
ruoyi-base-support/ruoyi-tenant/pom.xml
Normal file
35
ruoyi-base-support/ruoyi-tenant/pom.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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 避免缓存万一出现问题
|
||||
*/
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user