Преглед на файлове

+ 脚手架支持多租户

chen.cheng преди 2 месеца
родител
ревизия
31d739f143

+ 2 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/mapper/SysCustDictDataMapper.java

@@ -3,6 +3,7 @@ package com.huashe.park.core.mapper;
 import java.util.List;
 import java.util.Map;
 
+import com.huashe.common.annotation.mybatis.IgnoreTenant;
 import org.apache.ibatis.annotations.Param;
 
 import com.huashe.common.annotation.DataSource;
@@ -14,6 +15,7 @@ import com.huashe.common.enums.DataSourceType;
  * @author ruoyi
  */
 @DataSource(DataSourceType.MASTER)
+@IgnoreTenant
 public interface SysCustDictDataMapper {
     /**
      * 根据条件分页查询字典数据

+ 4 - 0
bd-park/park-backend/park-infrastructure/pom.xml

@@ -53,6 +53,10 @@
             <groupId>cn.idev.excel</groupId>
             <artifactId>fastexcel</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.jsqlparser</groupId>
+            <artifactId>jsqlparser</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 8 - 10
bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/TenantSqlInterceptor.java

@@ -5,7 +5,6 @@ import java.sql.Connection;
 import java.util.List;
 import java.util.Properties;
 
-import com.huashe.common.annotation.mybatis.Tenant;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.ibatis.executor.statement.StatementHandler;
 import org.apache.ibatis.mapping.MappedStatement;
@@ -18,10 +17,11 @@ import org.apache.ibatis.reflection.MetaObject;
 import org.apache.ibatis.reflection.SystemMetaObject;
 import org.springframework.stereotype.Component;
 
+import com.huashe.common.annotation.mybatis.Tenant;
 import com.huashe.park.common.animations.mybatis.MethodMetadataCache;
 
 import net.sf.jsqlparser.expression.Expression;
-import net.sf.jsqlparser.expression.JdbcParameter;
+import net.sf.jsqlparser.expression.LongValue;
 import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
 import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
 import net.sf.jsqlparser.parser.CCJSqlParserUtil;
@@ -49,8 +49,7 @@ public class TenantSqlInterceptor extends BaseInterceptor implements Interceptor
         MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
         Method mapperMethod = getMapperMethod(mappedStatement);
         // 判断是否需要添加租户条件
-        if (ObjectUtils.isNotEmpty(mapperMethod)) {
-
+        if (ObjectUtils.allNotNull(mapperMethod, getLoginUser().getUser().getTenantId())) {
             // 解析 SQL 语法树
             Statement stmt = CCJSqlParserUtil.parse(originalSql);
             if (stmt instanceof Select) {
@@ -61,7 +60,7 @@ public class TenantSqlInterceptor extends BaseInterceptor implements Interceptor
                     // 构建租户条件表达式(tenant_id = ?)
                     EqualsTo tenantCondition = new EqualsTo();
                     tenantCondition.setLeftExpression(handleColumn(mapperMethod));
-                    tenantCondition.setRightExpression(new JdbcParameter());
+                    tenantCondition.setRightExpression(new LongValue(getLoginUser().getUser().getTenantId()));
 
                     // 修改 WHERE 条件
                     Expression where = plainSelect.getWhere();
@@ -78,11 +77,6 @@ public class TenantSqlInterceptor extends BaseInterceptor implements Interceptor
                     // 生成修改后的 SQL
                     String modifiedSql = plainSelect.toString();
                     metaObject.setValue("delegate.boundSql.sql", modifiedSql);
-
-                    // 添加租户参数(动态绑定到 PreparedStatement)
-                    List<Object> parameters = (List<Object>) metaObject.getValue("delegate.boundSql.parameterObject");
-
-                    parameters.add(getLoginUser().getUser().getTenantId()); // 租户值
                 }
             }
         }
@@ -124,4 +118,8 @@ public class TenantSqlInterceptor extends BaseInterceptor implements Interceptor
     @Override
     public void setProperties(Properties properties) {
     }
+
+    public static void main(String[] args) {
+
+    }
 }

+ 6 - 1
bd-park/park-backend/pom.xml

@@ -59,6 +59,7 @@
         <paho.version>1.2.5</paho.version>
         <common.collect>4.4</common.collect>
         <geotools.version>20.0</geotools.version>
+        <jsqlparser.version>4.6</jsqlparser.version>
     </properties>
 
     <!-- 依赖声明 -->
@@ -373,7 +374,11 @@
                 <artifactId>commons-collections4</artifactId>
                 <version>${common.collect}</version>
             </dependency>
-
+            <dependency>
+                <groupId>com.github.jsqlparser</groupId>
+                <artifactId>jsqlparser</artifactId>
+                <version>${jsqlparser.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.geotools</groupId>
                 <artifactId>gt-api</artifactId>

+ 12 - 10
common-application/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java

@@ -1,18 +1,20 @@
 package com.ruoyi.generator.mapper;
 
-import java.util.List;
+import com.huashe.common.annotation.mybatis.IgnoreTenant;
 import com.ruoyi.generator.domain.GenTableColumn;
 
+import java.util.List;
+
 /**
  * 业务字段 数据层
- * 
+ *
  * @author ruoyi
  */
-public interface GenTableColumnMapper
-{
+@IgnoreTenant
+public interface GenTableColumnMapper {
     /**
      * 根据表名称查询列信息
-     * 
+     *
      * @param tableName 表名称
      * @return 列信息
      */
@@ -20,7 +22,7 @@ public interface GenTableColumnMapper
 
     /**
      * 查询业务字段列表
-     * 
+     *
      * @param tableId 业务字段编号
      * @return 业务字段集合
      */
@@ -28,7 +30,7 @@ public interface GenTableColumnMapper
 
     /**
      * 新增业务字段
-     * 
+     *
      * @param genTableColumn 业务字段信息
      * @return 结果
      */
@@ -36,7 +38,7 @@ public interface GenTableColumnMapper
 
     /**
      * 修改业务字段
-     * 
+     *
      * @param genTableColumn 业务字段信息
      * @return 结果
      */
@@ -44,7 +46,7 @@ public interface GenTableColumnMapper
 
     /**
      * 删除业务字段
-     * 
+     *
      * @param genTableColumns 列数据
      * @return 结果
      */
@@ -52,7 +54,7 @@ public interface GenTableColumnMapper
 
     /**
      * 批量删除业务字段
-     * 
+     *
      * @param ids 需要删除的数据ID
      * @return 结果
      */

+ 3 - 0
common-application/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java

@@ -1,6 +1,8 @@
 package com.ruoyi.generator.mapper;
 
 import java.util.List;
+
+import com.huashe.common.annotation.mybatis.IgnoreTenant;
 import com.ruoyi.generator.domain.GenTable;
 
 /**
@@ -8,6 +10,7 @@ import com.ruoyi.generator.domain.GenTable;
  * 
  * @author ruoyi
  */
+@IgnoreTenant
 public interface GenTableMapper
 {
     /**