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);