diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectUserPermissionMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectUserPermissionMapper.xml index c64841878..6fb5c10ed 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectUserPermissionMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectUserPermissionMapper.xml @@ -15,7 +15,7 @@ diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java index ef13c9a91..c7ebc0e55 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java @@ -722,7 +722,11 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl queryPageList(Map params) { LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); //根据项目用户权限表筛选有权访问的项目 - Set projectIds = projectUserPermissionMapper.queryProjectIdsByUserId(loginUser.getId()); + Set projectIds = new HashSet<>(); + Set permissionProjectIds = projectUserPermissionMapper.queryProjectIdsByUserId(loginUser.getId()); + if (ObjectUtils.isNotEmpty(permissionProjectIds)) { + projectIds.addAll(permissionProjectIds); + } if (sysRoleMapper.queryUserRoleByCode(ProjectRoleEnum.VIEWER.getName(), loginUser.getId()) > 0) { //如果是Viewer,根据配置的品牌筛选可访问的项目 List brandTypes = projectUserBrandService.queryBrandByUserId(loginUser.getId()); @@ -819,7 +823,40 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl resultLast = new ArrayList<>(); + for (ProjectLibraryBase projectLibraryBase : resultNew) { + //判断父项目是否有权限 + if (!projectIds.contains(projectLibraryBase.getId())) { + //判断子项目是否有权限 + List children = projectLibraryBase.getChildren(); + if (ObjectUtils.isNotEmpty(children)) { + for (ProjectLibraryBase child : children) { + //将有权限的放入最后返回的集合中 + if (projectIds.contains(child.getId())) { + resultLast.add(child); + } + } + } + } else { + List children = projectLibraryBase.getChildren(); + if (ObjectUtils.isNotEmpty(children)) { + List lastChild = new ArrayList<>(); + //判断子项目是否有权限 + for (ProjectLibraryBase child : children) { + if (projectIds.contains(child.getId())) { + lastChild.add(child); + } + } + projectLibraryBase.setChildren(lastChild); + } + resultLast.add(projectLibraryBase); + } + + } + + return resultLast; } @NotNull