From 516530312ac3e6e25004235f35c1758e88da9aa0 Mon Sep 17 00:00:00 2001 From: cm Date: Wed, 2 Mar 2022 17:01:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=9F=A5=E8=AF=A2=E4=B8=AD?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9=E5=A4=9A=E8=A1=A8=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86=20=E6=95=B0=E6=8D=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=B7=BB=E5=8A=A0=E7=BA=A7=E5=88=AB=20=E2=80=9C?= =?UTF-8?q?=E6=9C=AC=E7=BA=A7=E5=8F=8A=E5=85=B6=E4=B8=8B=E5=B1=9E=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/me/zhengjie/utils/DateUtil.java | 2 +- .../src/main/java/me/zhengjie/utils/QueryHelp.java | 10 +++++++++- .../java/me/zhengjie/utils/enums/DataScopeEnum.java | 3 +++ .../java/me/zhengjie/modules/system/domain/Role.java | 2 +- .../modules/system/service/impl/DataServiceImpl.java | 7 +++++++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/DateUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/DateUtil.java index 0b0bf637..e855d1b6 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/DateUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/DateUtil.java @@ -123,7 +123,7 @@ public class DateUtil { * @param localDateTime / * @return / */ - public String localDateTimeFormatyMd(LocalDateTime localDateTime) { + public static String localDateTimeFormatyMd(LocalDateTime localDateTime) { return DFY_MD.format(localDateTime); } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java index 69cb5e24..81232497 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java @@ -45,7 +45,15 @@ public class QueryHelp { List dataScopes = SecurityUtils.getCurrentUserDataScope(); if(CollectionUtil.isNotEmpty(dataScopes)){ if(StringUtils.isNotBlank(permission.joinName()) && StringUtils.isNotBlank(permission.fieldName())) { - Join join = root.join(permission.joinName(), JoinType.LEFT); + Join join = null; + String[] joinNames = permission.joinName().split(">"); + for (String name : joinNames) { + if (ObjectUtil.isNotNull(join)) { + join = join.join(name, JoinType.LEFT); + } else { + join = root.join(name, JoinType.LEFT); + } + } list.add(getExpression(permission.fieldName(),join, root).in(dataScopes)); } else if (StringUtils.isBlank(permission.joinName()) && StringUtils.isNotBlank(permission.fieldName())) { list.add(getExpression(permission.fieldName(),null, root).in(dataScopes)); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java b/eladmin-common/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java index 5352b7bb..7ab529c9 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java @@ -35,6 +35,9 @@ public enum DataScopeEnum { /* 自己部门的数据权限 */ THIS_LEVEL("本级", "自己部门的数据权限"), + /* 自己部门的数据权限 */ + THIS_LEVEL_AND_SUB("本级及其下属", "自己部门及其下属部门的数据权限"), + /* 自定义的数据权限 */ CUSTOMIZE("自定义", "自定义的数据权限"); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index d33d75c1..0b41ff8a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -70,7 +70,7 @@ public class Role extends BaseEntity implements Serializable { @ApiModelProperty(value = "名称", hidden = true) private String name; - @ApiModelProperty(value = "数据权限,全部 、 本级 、 自定义") + @ApiModelProperty(value = "数据权限,全部 、 本级 、本级及其下属 、 自定义") private String dataScope = DataScopeEnum.THIS_LEVEL.getValue(); @Column(name = "level") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java index 33a81480..2bfbbc87 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java @@ -61,6 +61,13 @@ public class DataServiceImpl implements DataService { case THIS_LEVEL: deptIds.add(user.getDept().getId()); break; + case THIS_LEVEL_AND_SUB: + deptIds.add(user.getDept().getId()); + List deptChildren = deptService.findByPid(user.getDept().getId()); + if (deptChildren != null && deptChildren.size() != 0) { + deptIds.addAll(deptService.getDeptChildren(deptChildren)); + } + break; case CUSTOMIZE: deptIds.addAll(getCustomize(deptIds, role)); break;