pom.xml
@@ -14,23 +14,23 @@ <properties> <revision>5.2.0-SNAPSHOT</revision> <spring-boot.version>3.2.4</spring-boot.version> <spring-boot.version>3.2.5</spring-boot.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>17</java.version> <spring-boot.mybatis>3.0.3</spring-boot.mybatis> <springdoc.version>2.4.0</springdoc.version> <mybatis.version>3.5.16</mybatis.version> <springdoc.version>2.5.0</springdoc.version> <therapi-javadoc.version>0.15.0</therapi-javadoc.version> <poi.version>5.2.3</poi.version> <easyexcel.version>3.3.3</easyexcel.version> <easyexcel.version>3.3.4</easyexcel.version> <velocity.version>2.3</velocity.version> <satoken.version>1.37.0</satoken.version> <mybatis-plus.version>3.5.5</mybatis-plus.version> <mybatis-plus.version>3.5.6</mybatis-plus.version> <p6spy.version>3.9.1</p6spy.version> <hutool.version>5.8.26</hutool.version> <hutool.version>5.8.27</hutool.version> <okhttp.version>4.10.0</okhttp.version> <spring-boot-admin.version>3.2.3</spring-boot-admin.version> <redisson.version>3.27.2</redisson.version> <redisson.version>3.29.0</redisson.version> <lock4j.version>2.2.7</lock4j.version> <dynamic-ds.version>4.3.0</dynamic-ds.version> <alibaba-ttl.version>2.14.4</alibaba-ttl.version> @@ -38,7 +38,7 @@ <easyretry.version>3.2.0</easyretry.version> <mapstruct-plus.version>1.3.6</mapstruct-plus.version> <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version> <lombok.version>1.18.30</lombok.version> <lombok.version>1.18.32</lombok.version> <bouncycastle.version>1.76</bouncycastle.version> <justauth.version>1.16.6</justauth.version> <!-- 离线IP地址定位库 --> @@ -48,7 +48,7 @@ <aws.sdk.version>2.25.15</aws.sdk.version> <aws.crt.version>0.29.13</aws.crt.version> <!-- SMS 配置 --> <sms4j.version>3.2.0</sms4j.version> <sms4j.version>3.2.1</sms4j.version> <!-- 限制框架中的fastjson版本 --> <fastjson.version>1.2.83</fastjson.version> @@ -218,9 +218,9 @@ </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${spring-boot.mybatis}</version> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> ruoyi-common/ruoyi-common-mybatis/pom.xml
@@ -33,19 +33,8 @@ </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> <exclusions> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> </exclusions> </dependency> <!-- sql性能分析插件 --> ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
@@ -2,14 +2,15 @@ import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper; import com.baomidou.mybatisplus.core.toolkit.PluginUtils; import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport; import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; import com.baomidou.mybatisplus.extension.plugins.inner.BaseMultiTableInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.schema.Table; import net.sf.jsqlparser.statement.delete.Delete; import net.sf.jsqlparser.statement.select.PlainSelect; import net.sf.jsqlparser.statement.select.Select; import net.sf.jsqlparser.statement.select.SelectBody; import net.sf.jsqlparser.statement.select.SetOperationList; import net.sf.jsqlparser.statement.update.Update; import org.apache.ibatis.executor.Executor; @@ -32,7 +33,7 @@ * @version 3.5.0 */ @Slf4j public class PlusDataPermissionInterceptor extends JsqlParserSupport implements InnerInterceptor { public class PlusDataPermissionInterceptor extends BaseMultiTableInnerInterceptor implements InnerInterceptor { private final PlusDataPermissionHandler dataPermissionHandler; @@ -75,11 +76,10 @@ @Override protected void processSelect(Select select, int index, String sql, Object obj) { SelectBody selectBody = select.getSelectBody(); if (selectBody instanceof PlainSelect plainSelect) { this.setWhere(plainSelect, (String) obj); } else if (selectBody instanceof SetOperationList setOperationList) { List<SelectBody> selectBodyList = setOperationList.getSelects(); if (select instanceof PlainSelect) { this.setWhere((PlainSelect) select, (String) obj); } else if (select instanceof SetOperationList setOperationList) { List<Select> selectBodyList = setOperationList.getSelects(); selectBodyList.forEach(s -> this.setWhere((PlainSelect) s, (String) obj)); } } @@ -113,5 +113,11 @@ } } @Override public Expression buildTableExpression(Table table, Expression where, String whereSegment) { // 只有新版数据权限处理器才会执行到这里 final MultiDataPermissionHandler handler = (MultiDataPermissionHandler) dataPermissionHandler; return handler.getSqlSegment(table, where, whereSegment); } } ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java
@@ -16,6 +16,7 @@ import org.redisson.config.SingleServerConfig; import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cache.CacheManager; @@ -28,16 +29,22 @@ * @author Lion Li */ @EnableConfigurationProperties(TenantProperties.class) @AutoConfiguration(after = {RedisConfig.class, MybatisPlusConfig.class}) @AutoConfiguration(after = {RedisConfig.class}) @ConditionalOnProperty(value = "tenant.enable", havingValue = "true") public class TenantConfig { /** * 多租户插件 */ @Bean public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantProperties tenantProperties) { return new TenantLineInnerInterceptor(new PlusTenantLineHandler(tenantProperties)); @ConditionalOnBean(MybatisPlusConfig.class) @AutoConfiguration(after = {MybatisPlusConfig.class}) static class MybatisPlusConfigation { /** * 多租户插件 */ @Bean public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantProperties tenantProperties) { return new TenantLineInnerInterceptor(new PlusTenantLineHandler(tenantProperties)); } } @Bean