From 82a8ddb10bf83254a0de092834e5c4f17301cbb7 Mon Sep 17 00:00:00 2001 From: smallchill Date: Fri, 5 Jun 2020 22:55:44 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E6=9C=BA=E6=9E=84=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=A1=B5=E9=9D=9E=E8=B6=85=E7=AE=A1=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E5=8F=AA=E5=8F=AF=E7=9C=8B=E5=88=B0=E6=9C=AC=E7=BA=A7?= =?UTF-8?q?=E5=8F=8A=E4=BB=A5=E4=B8=8B=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/system/mapper/DeptMapper.xml | 2 +- .../system/service/impl/DeptServiceImpl.java | 21 ++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml index 6a205b9a..6026aac7 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml +++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml @@ -61,7 +61,7 @@ and dept.tenant_id = #{param1} - and dept.parent_id = #{param2} + and (dept.parent_id = #{param2} or dept.ancestors like concat(concat('%', #{param2}),'%')) and dept.dept_name like concat(concat('%', #{param3.deptName}),'%') diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java index e8035c0d..1fcbc66a 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java @@ -24,6 +24,7 @@ import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.node.ForestNodeMerger; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringPool; +import org.springblade.system.cache.SysCache; import org.springblade.system.entity.Dept; import org.springblade.system.mapper.DeptMapper; import org.springblade.system.service.IDeptService; @@ -42,19 +43,33 @@ import java.util.stream.Collectors; @Service public class DeptServiceImpl extends ServiceImpl implements IDeptService { + private static final String TENANT_ID = "tenantId"; + private static final String PARENT_ID = "parentId"; + @Override public List lazyList(String tenantId, Long parentId, Map param) { + // 设置租户ID if (AuthUtil.isAdministrator()) { tenantId = StringPool.EMPTY; } - String paramTenantId = Func.toStr(param.get("tenantId")); + String paramTenantId = Func.toStr(param.get(TENANT_ID)); if (Func.isNotEmpty(paramTenantId) && AuthUtil.isAdministrator()) { tenantId = paramTenantId; } - if (Func.isEmpty(param.get("parentId")) && param.size() == 1) { + // 判断点击搜索但是没有查询条件的情况 + if (Func.isEmpty(param.get(PARENT_ID)) && param.size() == 1) { parentId = 0L; } - if (Func.isEmpty(param.get("parentId")) && param.size() > 1) { + // 判断数据权限控制,非超管角色只可看到本级及以下数据 + if (Func.toLong(parentId) == 0L && !AuthUtil.isAdministrator()) { + Long deptId = Func.firstLong(AuthUtil.getDeptId()); + Dept dept = SysCache.getDept(deptId); + if (dept.getParentId() != 0) { + parentId = dept.getParentId(); + } + } + // 判断点击搜索带有查询条件的情况 + if (Func.isEmpty(param.get(PARENT_ID)) && param.size() > 1 && Func.toLong(parentId) == 0L) { parentId = null; } return baseMapper.lazyList(tenantId, parentId, param);