From c5dbd04c9c99fc187ef526c0fda188dc30e51825 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: Tue, 14 Dec 2021 10:11:16 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=20=E4=BB=85=E8=87=AA=E5=B7=B1=20=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/enums/DataScopeType.java | 17 +++++++++++------ .../handler/PlusDataPermissionHandler.java | 5 +++-- 2 files changed, 14 insertions(+), 8 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 f99413bad..5ae69ecfa 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 @@ -23,34 +23,39 @@ public enum DataScopeType { /** * 全部数据权限 */ - ALL("1", ""), + ALL("1", "", ""), /** * 自定数据权限 */ - CUSTOM("2", " #{#deptName} IN ( #{@sdss.getRoleCustom( #user.roleId )} ) "), + CUSTOM("2", " #{#deptName} IN ( #{@sdss.getRoleCustom( #user.roleId )} ) ", ""), /** * 部门数据权限 */ - DEPT("3", " #{#deptName} = #{#user.deptId} "), + DEPT("3", " #{#deptName} = #{#user.deptId} ", ""), /** * 部门及以下数据权限 */ - DEPT_AND_CHILD("4", " #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} )"), + DEPT_AND_CHILD("4", " #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} )", ""), /** * 仅本人数据权限 */ - SELF("5", " #{#userName?:1} = #{#user.userId} "); + SELF("5", " #{#userName} = #{#user.userId} " , " 1 = 0 "); private final String code; /** * 语法 采用 spel 模板表达式 */ - private final String sql; + private final String sqlTemplate; + + /** + * 不满足 sqlTemplate 则填充 + */ + private final String elseSql; public static DataScopeType findCode(String code) { if (StringUtils.isBlank(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 89897c31d..527fa60a4 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 @@ -96,13 +96,14 @@ public class PlusDataPermissionHandler { return ""; } // 不包含 key 变量 则不处理 - if (!StringUtils.contains(type.getSql(), "#" + dataColumn.key())) { + if (!StringUtils.contains(type.getSqlTemplate(), "#" + dataColumn.key())) { + sqlString.append(type.getElseSql()); continue; } // 更新或删除需满足所有条件 sqlString.append(isSelect ? " OR " : " AND "); // 解析sql模板并填充 - String sql = parser.parseExpression(type.getSql(), parserContext).getValue(context, String.class); + String sql = parser.parseExpression(type.getSqlTemplate(), parserContext).getValue(context, String.class); sqlString.append(sql); } }