项目列表权限筛查

This commit is contained in:
CD
2022-11-16 14:35:08 +08:00
parent 2543d40046
commit 3c6102b614
2 changed files with 40 additions and 3 deletions
@@ -15,7 +15,7 @@
<select id="queryProjectIdsByUserId" resultType="java.lang.String">
SELECT * FROM project_user_permission pup
SELECT pup.project_id FROM project_user_permission pup
WHERE pup.user_id = #{userId} GROUP BY pup.project_id
</select>
@@ -722,7 +722,11 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
public List<ProjectLibraryBase> queryPageList(Map<String,Object> params) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//根据项目用户权限表筛选有权访问的项目
Set<String> projectIds = projectUserPermissionMapper.queryProjectIdsByUserId(loginUser.getId());
Set<String> projectIds = new HashSet<>();
Set<String> permissionProjectIds = projectUserPermissionMapper.queryProjectIdsByUserId(loginUser.getId());
if (ObjectUtils.isNotEmpty(permissionProjectIds)) {
projectIds.addAll(permissionProjectIds);
}
if (sysRoleMapper.queryUserRoleByCode(ProjectRoleEnum.VIEWER.getName(), loginUser.getId()) > 0) {
//如果是Viewer,根据配置的品牌筛选可访问的项目
List<String> brandTypes = projectUserBrandService.queryBrandByUserId(loginUser.getId());
@@ -819,7 +823,40 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
}
}
}
return resultNew;
//权限筛选
List<ProjectLibraryBase> resultLast = new ArrayList<>();
for (ProjectLibraryBase projectLibraryBase : resultNew) {
//判断父项目是否有权限
if (!projectIds.contains(projectLibraryBase.getId())) {
//判断子项目是否有权限
List<ProjectLibraryBase> children = projectLibraryBase.getChildren();
if (ObjectUtils.isNotEmpty(children)) {
for (ProjectLibraryBase child : children) {
//将有权限的放入最后返回的集合中
if (projectIds.contains(child.getId())) {
resultLast.add(child);
}
}
}
} else {
List<ProjectLibraryBase> children = projectLibraryBase.getChildren();
if (ObjectUtils.isNotEmpty(children)) {
List<ProjectLibraryBase> lastChild = new ArrayList<>();
//判断子项目是否有权限
for (ProjectLibraryBase child : children) {
if (projectIds.contains(child.getId())) {
lastChild.add(child);
}
}
projectLibraryBase.setChildren(lastChild);
}
resultLast.add(projectLibraryBase);
}
}
return resultLast;
}
@NotNull