From 85a7c64bf3bb7380de32c44ef0fcecdf763d61bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 11 Dec 2021 21:33:16 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=9B=9E=E9=80=80=20=E7=AE=80=E5=8C=96sp?= =?UTF-8?q?el=E5=86=99=E6=B3=95=20=E6=9C=89=E4=B8=80=E5=AE=9A=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/common/enums/DataScopeType.java | 8 ++++---- .../framework/handler/PlusDataPermissionHandler.java | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java index fd0796afe..8e3fd5a16 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java @@ -25,22 +25,22 @@ public enum DataScopeType { /** * 自定数据权限 */ - CUSTOM("2", " #deptName IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = #roleId ) "), + CUSTOM("2", " #{#deptName} IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = #{#roleId} ) "), /** * 部门数据权限 */ - DEPT("3", " #deptName = #deptId "), + DEPT("3", " #{#deptName} = #{#deptId} "), /** * 部门及以下数据权限 */ - DEPT_AND_CHILD("4", " #deptName IN ( SELECT dept_id FROM sys_dept WHERE dept_id = #deptId OR find_in_set( #deptId , ancestors ) )"), + DEPT_AND_CHILD("4", " #{#deptName} IN ( SELECT dept_id FROM sys_dept WHERE dept_id = #{#deptId} OR find_in_set( #{#deptId} , ancestors ) )"), /** * 仅本人数据权限 */ - SELF("5", " #userName?:1 = #userId "); + SELF("5", " #{#userName?:1} = #{#userId} "); private final String code; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java index 3161bb695..a7c7fded6 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java @@ -21,6 +21,8 @@ import net.sf.jsqlparser.expression.operators.conditional.AndExpression; import net.sf.jsqlparser.parser.CCJSqlParserUtil; import org.springframework.expression.EvaluationContext; import org.springframework.expression.ExpressionParser; +import org.springframework.expression.ParserContext; +import org.springframework.expression.common.TemplateParserContext; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; @@ -38,6 +40,7 @@ import java.util.stream.Collectors; public class PlusDataPermissionHandler { private final ExpressionParser parser = new SpelExpressionParser(); + private final ParserContext parserContext = new TemplateParserContext(); public Expression getSqlSegment(Expression where, String mappedStatementId, boolean isSelect) { DataColumn[] dataColumns = findAnnotation(mappedStatementId); @@ -96,7 +99,7 @@ public class PlusDataPermissionHandler { // 更新或删除需满足所有条件 sqlString.append(isSelect ? " OR " : " AND "); // 解析sql模板并填充 - String sql = parser.parseExpression(type.getSql()).getValue(context, String.class); + String sql = parser.parseExpression(type.getSql(), parserContext).getValue(context, String.class); sqlString.append(sql); } }