From 7692206a290b593b5beb9fb391e0a68db7b5b88a Mon Sep 17 00:00:00 2001 From: thinkgem Date: Wed, 13 May 2020 14:17:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20API=20=E6=96=B9=E5=BC=8F=E5=AE=9E=E7=8E=B0=EF=BC=88?= =?UTF-8?q?=E9=80=82=E5=BA=94=20Cloud=20=E7=8E=AF=E5=A2=83=EF=BC=8C?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=94=A8=E6=88=B7=E8=A1=A8=E4=B8=8E=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E6=95=B0=E6=8D=AE=E8=A1=A8=E8=B7=A8=E5=BA=93=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeesite/modules/sys/entity/EmpUser.java | 2 + .../jeesite/modules/sys/utils/EmpUtils.java | 51 +++++++++++++++++++ .../main/resources/config/jeesite-core.yml | 10 +++- 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/entity/EmpUser.java b/modules/core/src/main/java/com/jeesite/modules/sys/entity/EmpUser.java index 767e7372..fcee6a45 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/entity/EmpUser.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/entity/EmpUser.java @@ -71,6 +71,8 @@ import com.jeesite.common.utils.excel.fieldtype.OfficeType; @Column(name="area_type", label="区域类型"), }), }, +// extFromKeys="dsfOfficeFrom, dsfCompanyFrom", +// extWhereKeys="dsfOfficeWhere, dsfCompanyWhere", extWhereKeys="dsfOffice, dsfCompany", orderBy="a.user_weight DESC, a.update_date DESC" ) diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java b/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java index dfcdde88..3da9b844 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/utils/EmpUtils.java @@ -4,8 +4,10 @@ package com.jeesite.modules.sys.utils; import java.util.List; +import java.util.Set; import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.collect.SetUtils; import com.jeesite.common.lang.StringUtils; import com.jeesite.common.utils.SpringUtils; import com.jeesite.modules.sys.entity.Company; @@ -155,6 +157,33 @@ public class EmpUtils { return list.toArray(new String[list.size()]); } + /** + * 获取当前员工所有机构编码,包括附属机构以及子机构(数据权限用) + * @author ThinkGem + */ + public static String[] getOfficeCodesAndChildren(){ + Set list = SetUtils.newLinkedHashSet(); + Set parentCodess = SetUtils.newHashSet(); + Office currentOffice = getOffice(); + list.add(currentOffice.getOfficeCode()); + parentCodess.add(currentOffice.getParentCodes() + currentOffice.getOfficeCode() + ","); + // 添加附属机构 + getEmployeeOfficeList().forEach(e -> { + list.add(e.getOfficeCode()); + parentCodess.add(e.getParentCodes() + e.getOfficeCode() + ","); + }); + // 查找并添加子机构 + getOfficeAllList().forEach(e -> { + for (String parentCodes : parentCodess) { + if (e.getParentCodes().startsWith(parentCodes)) { + list.add(e.getOfficeCode()); + break; + } + } + }); + return list.toArray(new String[list.size()]); + } + /** * 根据机构类型,获取当前员工所有机构编码,包括附属机构(数据权限用) * @author ThinkGem @@ -265,6 +294,28 @@ public class EmpUtils { return companyList; } + /** + * 获取当前员工所有公司编码,包括子公司(数据权限用) + * @author ThinkGem + */ + public static String[] getCompanyCodesAndChildren(){ + Set list = SetUtils.newLinkedHashSet(); + Set parentCodess = SetUtils.newHashSet(); + Company currentCompany = getCompany(); + list.add(currentCompany.getCompanyCode()); + parentCodess.add(currentCompany.getParentCodes() + currentCompany.getCompanyCode() + ","); + // 查找并添加子公司 + getCompanyAllList().forEach(e -> { + for (String parentCodes : parentCodess) { + if (e.getParentCodes().startsWith(parentCodes)) { + list.add(e.getCompanyCode()); + break; + } + } + }); + return list.toArray(new String[list.size()]); + } + /** * 清除指定用户缓存,不包括改用的SESSION缓存 * @author ThinkGem diff --git a/modules/core/src/main/resources/config/jeesite-core.yml b/modules/core/src/main/resources/config/jeesite-core.yml index 3ad7a882..7b921c59 100644 --- a/modules/core/src/main/resources/config/jeesite-core.yml +++ b/modules/core/src/main/resources/config/jeesite-core.yml @@ -167,6 +167,12 @@ user: remarks: "" }] + # 数据权限调试模式(会输出一些日志) + dataScopeDebug: false + + # 数据权限使用 API 方式实现(适应 Cloud 环境,基础用户表与业务数据表跨库的情况) + dataScopeApiMode: false + # 管理功能的控制权限类型(1拥有的权限 2管理的权限)(v4.1.5+) adminCtrlPermi: 2 @@ -188,9 +194,9 @@ role: #控制数据的类名: "指定一个静态类名,方便 ctrlDataAttrName 得到权限数据,如:当前机构编码、当前公司编码、当前行业编码等", ctrlDataClass: "com.jeesite.modules.sys.utils.EmpUtils", #控制数据的类名下的属性名 : "可看做 ctrlDataClass 下的 get 方法,如:EmpUtils.getOfficeCodes(),支持返回字符串或字符串数组类型", - ctrlDataAttrName: "officeCodes", + ctrlDataAttrName: "officeCodesAndChildren", #控制数据的所有上级编码 : "用于控制数据为树表的情况,为数组时,必须与 ctrlDataAttrName 返回的长度相同,不是树表设置为空", - ctrlDataParentCodesAttrName: "officeParentCodess" + ctrlDataParentCodesAttrName: "" }, Company: { ctrlTypeClass: "NONE"