mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	update 优化 mp多租户插件注入逻辑
This commit is contained in:
		@@ -7,11 +7,13 @@ import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
 | 
				
			|||||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 | 
					import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 | 
				
			||||||
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
 | 
					import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
 | 
				
			||||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 | 
					import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 | 
				
			||||||
import org.dromara.common.core.factory.YmlPropertySourceFactory;
 | 
					import org.dromara.common.core.factory.YmlPropertySourceFactory;
 | 
				
			||||||
import org.dromara.common.core.utils.SpringUtils;
 | 
					import org.dromara.common.core.utils.SpringUtils;
 | 
				
			||||||
import org.dromara.common.mybatis.handler.InjectionMetaObjectHandler;
 | 
					import org.dromara.common.mybatis.handler.InjectionMetaObjectHandler;
 | 
				
			||||||
import org.dromara.common.mybatis.interceptor.PlusDataPermissionInterceptor;
 | 
					import org.dromara.common.mybatis.interceptor.PlusDataPermissionInterceptor;
 | 
				
			||||||
import org.mybatis.spring.annotation.MapperScan;
 | 
					import org.mybatis.spring.annotation.MapperScan;
 | 
				
			||||||
 | 
					import org.springframework.beans.BeansException;
 | 
				
			||||||
import org.springframework.context.annotation.Bean;
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
import org.springframework.context.annotation.PropertySource;
 | 
					import org.springframework.context.annotation.PropertySource;
 | 
				
			||||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
 | 
					import org.springframework.transaction.annotation.EnableTransactionManagement;
 | 
				
			||||||
@@ -29,6 +31,12 @@ public class MybatisPlusConfig {
 | 
				
			|||||||
    @Bean
 | 
					    @Bean
 | 
				
			||||||
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
 | 
					    public MybatisPlusInterceptor mybatisPlusInterceptor() {
 | 
				
			||||||
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
 | 
					        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
 | 
				
			||||||
 | 
					        // 多租户插件 必须放到第一位
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            TenantLineInnerInterceptor tenant = SpringUtils.getBean(TenantLineInnerInterceptor.class);
 | 
				
			||||||
 | 
					            interceptor.addInnerInterceptor(tenant);
 | 
				
			||||||
 | 
					        } catch (BeansException ignore) {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        // 数据权限处理
 | 
					        // 数据权限处理
 | 
				
			||||||
        interceptor.addInnerInterceptor(dataPermissionInterceptor());
 | 
					        interceptor.addInnerInterceptor(dataPermissionInterceptor());
 | 
				
			||||||
        // 分页插件
 | 
					        // 分页插件
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,6 @@ package org.dromara.common.tenant.config;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import cn.dev33.satoken.dao.SaTokenDao;
 | 
					import cn.dev33.satoken.dao.SaTokenDao;
 | 
				
			||||||
import cn.hutool.core.util.ObjectUtil;
 | 
					import cn.hutool.core.util.ObjectUtil;
 | 
				
			||||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 | 
					 | 
				
			||||||
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
 | 
					 | 
				
			||||||
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 | 
					import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 | 
				
			||||||
import org.dromara.common.core.utils.reflect.ReflectUtils;
 | 
					import org.dromara.common.core.utils.reflect.ReflectUtils;
 | 
				
			||||||
import org.dromara.common.mybatis.config.MybatisPlusConfig;
 | 
					import org.dromara.common.mybatis.config.MybatisPlusConfig;
 | 
				
			||||||
@@ -24,9 +22,6 @@ import org.springframework.cache.CacheManager;
 | 
				
			|||||||
import org.springframework.context.annotation.Bean;
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
import org.springframework.context.annotation.Primary;
 | 
					import org.springframework.context.annotation.Primary;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 租户配置类
 | 
					 * 租户配置类
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@@ -37,23 +32,10 @@ import java.util.List;
 | 
				
			|||||||
@ConditionalOnProperty(value = "tenant.enable", havingValue = "true")
 | 
					@ConditionalOnProperty(value = "tenant.enable", havingValue = "true")
 | 
				
			||||||
public class TenantConfig {
 | 
					public class TenantConfig {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 初始化租户配置
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Bean
 | 
					 | 
				
			||||||
    public boolean tenantInit(MybatisPlusInterceptor mybatisPlusInterceptor,
 | 
					 | 
				
			||||||
                              TenantProperties tenantProperties) {
 | 
					 | 
				
			||||||
        List<InnerInterceptor> interceptors = new ArrayList<>();
 | 
					 | 
				
			||||||
        // 多租户插件 必须放到第一位
 | 
					 | 
				
			||||||
        interceptors.add(tenantLineInnerInterceptor(tenantProperties));
 | 
					 | 
				
			||||||
        interceptors.addAll(mybatisPlusInterceptor.getInterceptors());
 | 
					 | 
				
			||||||
        mybatisPlusInterceptor.setInterceptors(interceptors);
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 多租户插件
 | 
					     * 多租户插件
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @Bean
 | 
				
			||||||
    public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantProperties tenantProperties) {
 | 
					    public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantProperties tenantProperties) {
 | 
				
			||||||
        return new TenantLineInnerInterceptor(new PlusTenantLineHandler(tenantProperties));
 | 
					        return new TenantLineInnerInterceptor(new PlusTenantLineHandler(tenantProperties));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user