From bb846dd2692d22402d4f20792e6b1e0f8cf85ad3 Mon Sep 17 00:00:00 2001 From: Dftre <3066417822@qq.com> Date: Tue, 30 Apr 2024 03:02:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8E=E8=8B=A5=E4=BE=9D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/annotation/EnableTableMap.java | 2 ++ .../com/ruoyi/mybatis/domain/TableInfo.java | 20 +++++++++++++++++++ .../java/com/ruoyi/mybatis/utils/SQLUtil.java | 8 ++++++++ 3 files changed, 30 insertions(+) diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/EnableTableMap.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/EnableTableMap.java index 6e0d7c5..5c20849 100644 --- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/EnableTableMap.java +++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/EnableTableMap.java @@ -14,4 +14,6 @@ import java.lang.annotation.Target; @Target(ElementType.TYPE) public @interface EnableTableMap { String name() default "t"; + String dept() default ""; + String user() default ""; } diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/TableInfo.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/TableInfo.java index e7070b8..410e4c4 100644 --- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/TableInfo.java +++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/TableInfo.java @@ -9,6 +9,7 @@ import java.util.stream.Collectors; import org.springframework.core.annotation.AnnotationUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.mybatis.annotation.Column; import com.ruoyi.mybatis.annotation.ColumnMap; import com.ruoyi.mybatis.annotation.EnableTableMap; @@ -27,6 +28,7 @@ public class TableInfo { private List primaryKeys = new ArrayList<>(); private List mapColumns = new ArrayList<>(); private Set joinSql = new HashSet<>(); + boolean hasDataScopeValue = false; public TableInfo(Class cls) { this.table = AnnotationUtils.findAnnotation(cls, Table.class); @@ -56,7 +58,25 @@ public class TableInfo { + join.target() + "." + join.targetColumn() + " = " + this.getTableNameT() + "." + join.targetColumn()) .forEach(joinSql::add); + if (this.enableTableMap != null) { + if (StringUtils.isNotEmpty(this.enableTableMap.user())) { + this.joinSql.add("sys_user " + this.enableTableMap.user() + " on " + + this.enableTableMap.user() + ".user_id = " + + this.getTableNameT() + "." + ".user_id"); + this.hasDataScopeValue = true; + } + if (StringUtils.isNotEmpty(this.enableTableMap.dept())) { + this.joinSql.add("sys_dept " + this.enableTableMap.dept() + " on " + + this.enableTableMap.dept() + ".dept_id = " + + this.getTableNameT() + ".dept_id"); + this.hasDataScopeValue = true; + } + } + } + + public boolean hasDataScope() { + return this.hasDataScopeValue; } public Set getJoinSql() { diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/SQLUtil.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/SQLUtil.java index 396b648..17d8cc3 100644 --- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/SQLUtil.java +++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/SQLUtil.java @@ -45,6 +45,10 @@ public class SQLUtil { .map(ColumnInfo::getQuerySql) .map(query -> tableInfo.getTableNameT() + "." + query) .forEach(sql::WHERE); + if (tableInfo.hasDataScope()) { + sql.WHERE("1=1 ${params.dataScope}"); + } + } else { tableInfo.getNotNullColumns(entity).stream() .map(ColumnInfo::getQuerySql) @@ -105,6 +109,10 @@ public class SQLUtil { .map(column -> tableInfo.getTableNameT() + "." + column.getColumnName() + " = " + column.getTemplate()) .forEach(sql::WHERE); + + if (tableInfo.hasDataScope()) { + sql.WHERE("1=1 ${params.dataScope}"); + } } else { tableInfo.getPrimaryKeys().stream() .map(column -> column.getColumnName() + " = " + column.getTemplate())