From d78323a9138aab73f9f1b25e0a74283780176452 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 목, 09 12월 2021 20:43:47 +0900 Subject: [PATCH] - 이슈전체보기/이슈프로젝트보기 권한 생성 - 워크스페이스 권한을 가진 사용자 OWL정보 오류 해결 --- src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java | 59 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java index 255db28..71ee77a 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java @@ -3,6 +3,7 @@ import com.google.common.collect.Lists; import kr.wisestone.owl.common.ExcelConditionCheck; import kr.wisestone.owl.constant.Constants; +import kr.wisestone.owl.constant.MngPermission; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.*; import kr.wisestone.owl.domain.enumType.EmailType; @@ -11,12 +12,14 @@ import kr.wisestone.owl.mapper.ProjectMapper; import kr.wisestone.owl.repository.ProjectClosureRepository; import kr.wisestone.owl.repository.ProjectRepository; +import kr.wisestone.owl.repository.UserDepartmentRepository; import kr.wisestone.owl.service.*; import kr.wisestone.owl.util.CommonUtil; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.util.DateUtil; import kr.wisestone.owl.vo.*; import kr.wisestone.owl.web.condition.ProjectCondition; +import kr.wisestone.owl.web.condition.WidgetCondition; import kr.wisestone.owl.web.form.ProjectForm; import kr.wisestone.owl.web.view.ExcelView; import org.apache.commons.lang3.StringUtils; @@ -48,7 +51,7 @@ private DepartmentService departmentService; @Autowired - private UserDepartmentService userDepartmentService; + private UserDepartmentRepository userDepartmentRepository; @Autowired private ProjectRoleService projectRoleService; @@ -328,6 +331,19 @@ } } + void SetMyDepartmentId(ProjectCondition projectCondition){ + Long loginId = projectCondition.getLoginUserId(); + List<Long> myDepartmentIds = Lists.newArrayList(); + List<UserDepartment> myDepartments = this.userDepartmentRepository.findByUserId(loginId); + + if(myDepartments != null && myDepartments.size() > 0){ + for(UserDepartment myDepartment : myDepartments){ + myDepartmentIds.add(myDepartment.getDepartmentId()); + } + } + projectCondition.setMyDepartmentIds(myDepartmentIds); + } + // �봽濡쒖젥�듃 紐⑸줉�쓣 議고쉶�븳�떎. @Override @Transactional(readOnly = true) @@ -342,14 +358,17 @@ List<Map<String, Object>> results; Long totalCount; + User user = this.webAppUtil.getLoginUserObject(); + if (condition.getWorkspaceManager()) { // �뾽臾닿났媛� 愿�由ъ옄�씪 寃쎌슦 紐⑤뱺 �봽濡쒖젥�듃媛� �몴�떆�릺�뼱�빞 �븳�떎. // 愿�由ъ옄�씪 �븣 - if (this.userWorkspaceService.checkWorkspaceManager()) { + if (this.userWorkspaceService.checkWorkspaceManager(user) || user.getPermission() >= MngPermission.USER_PERMISSION_MNG_PROJECT_ALL) { results = this.projectMapper.findByWorkspaceManager(condition); totalCount = this.projectMapper.countByWorkspaceManager(condition); } else { + this.SetMyDepartmentId(condition); results = this.projectMapper.find(condition); totalCount = this.projectMapper.count(condition); } @@ -361,8 +380,8 @@ int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1; // �봽濡쒖젥�듃 議고쉶 寃곌낵瑜� ProjectVos 濡� 蹂��솚�븳�떎. - 愿�由ъ옄, �씪諛� �궗�슜�옄 �젙蹂� 異붽� - List<ProjectVo> projectVos = this.makeProjectVos(results); - this.setChildrenProject(projectVos); + List<ProjectVo> projectVos = this.makeProjectVos(results, user); + this.setChildrenProject(projectVos, user); resJsonData.put(Constants.RES_KEY_CONTENTS, projectVos); resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(), @@ -371,16 +390,16 @@ return projectVos; } - void setChildrenProject(List<ProjectVo> projectVos) { + void setChildrenProject(List<ProjectVo> projectVos, User user) { int projectCount = projectVos.size(); for (int i=0; i< projectCount; i++) { ProjectVo projectVo = projectVos.get(i); List<Map<String, Object>> children = this.projectMapper.findChildrenProject(projectVo.getId()); if (children != null && children.size() > 0) { - List<ProjectVo> childrenVo = this.makeProjectVos(children); + List<ProjectVo> childrenVo = this.makeProjectVos(children, user); projectVo.setChildProjects(childrenVo); - setChildrenProject(childrenVo); + setChildrenProject(childrenVo, user); } } } @@ -400,7 +419,7 @@ // �봽濡쒖젥�듃 議고쉶 寃곌낵瑜� ProjectVos 濡� 蹂��솚�븳�떎. - 愿�由ъ옄, �씪諛� �궗�슜�옄 �젙蹂� 異붽� - private List<ProjectVo> makeProjectVos(List<Map<String, Object>> results) { + private List<ProjectVo> makeProjectVos(List<Map<String, Object>> results, User user) { List<ProjectVo> projectVos = Lists.newArrayList(); for (Map<String, Object> result : results) { @@ -413,7 +432,7 @@ this.setProjectDepartment(projectVo); // �뾽臾닿났媛� �떞�떦�옄�뒗 紐⑤뱺 �봽濡쒖젥�듃瑜� �닔�젙/�궘�젣�븷 �닔 �엳�뼱�빞 �븳�떎. - if (this.userWorkspaceService.checkWorkspaceManager()) { + if (this.userWorkspaceService.checkWorkspaceManager(user)) { projectVo.setModifyPermissionCheck(true); } projectVos.add(projectVo); @@ -532,10 +551,12 @@ // �봽濡쒖젥�듃 李몄뿬 遺��꽌 List<Long> existDepartmentIds = this.getIncludeProjectDepartment(project); + User user = this.webAppUtil.getLoginUserObject(); + // �썙�겕�뒪�럹�씠�뒪�뿉�꽌 湲곕낯�쑝濡� �젣怨듬릺�뒗 �봽濡쒖젥�듃�뿉 ���븳 泥댄겕 this.checkDefaultProject(project, projectForm); // �닔�젙 沅뚰븳 泥댄겕 - this.checkModifyPermission(project.getId()); + this.checkModifyPermission(project.getId(), user); // 愿�由ъ옄 蹂�寃� Map<String, Object> changeProjectManagerNotifications = this.modifyProjectManagers(project, projectForm, ProjectRole.TYPE_MANAGER); // �씪諛� �궗�슜�옄 蹂�寃� @@ -659,11 +680,11 @@ } // 濡쒓렇�씤�븳 �궗�슜�옄媛� 愿�由ъ옄 �뿭�븷�뿉 �냼�냽�릺�뼱 �엳�뒗吏� �솗�씤�븳�떎. - private void checkModifyPermission(Long projectId) { + private void checkModifyPermission(Long projectId, User user) { Boolean hasPermission = Boolean.FALSE; // �빐�떦 �뾽臾� 怨듦컙�쓽 愿�由ъ옄�씪 寃쎌슦 沅뚰븳 泥댄겕瑜� �븯吏� �븡�뒗�떎. - if (this.userWorkspaceService.checkWorkspaceManager()) { + if (this.userWorkspaceService.checkWorkspaceManager(user)) { return; } @@ -1000,7 +1021,7 @@ } // 濡쒓렇�씤�븳 �궗�슜�옄媛� 愿�由ъ옄 �뿭�븷�뿉 �냼�냽�릺�뼱 �엳�뒗吏� �솗�씤�븳�떎. - this.checkModifyPermission(project.getId()); + this.checkModifyPermission(project.getId(), this.webAppUtil.getLoginUserObject()); List<String> sendEmails = Lists.newArrayList(); Map<String, Object> params = new HashMap<>(); @@ -1094,21 +1115,23 @@ @Override @Transactional(readOnly = true) public List<ProjectVo> findByIncludeProject(List<String> statuses, String projectType) { + User user = this.webAppUtil.getLoginUserObject(); + ProjectCondition projectCondition = new ProjectCondition(); - projectCondition.setLoginUserId(this.webAppUtil.getLoginId()); - projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); + projectCondition.setLoginUserId(user.getId()); + projectCondition.setWorkspaceId(user.getLastWorkspaceId()); projectCondition.setProjectType(projectType); projectCondition.setStatuses(statuses); List<Map<String, Object>> results; - if (this.userWorkspaceService.checkWorkspaceManager()) { + if (this.userWorkspaceService.checkWorkspaceManager(user)) { results = this.projectMapper.findByWorkspaceManager(projectCondition); } else { results = this.projectMapper.findByWorkspaceIdAndIncludeProject(projectCondition); } List<ProjectVo> projectVos = this.makeProjectByVos(results); - this.setChildrenProject(projectVos); + this.setChildrenProject(projectVos, user); return projectVos; } @@ -1135,7 +1158,7 @@ projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); List<Map<String, Object>> results = this.projectMapper.find(projectCondition); // �봽濡쒖젥�듃 議고쉶 寃곌낵瑜� ProjectVos 濡� 蹂��솚�븳�떎. - 愿�由ъ옄, �씪諛� �궗�슜�옄 �젙蹂� 異붽� - List<ProjectVo> projectVos = this.makeProjectVos(results); + List<ProjectVo> projectVos = this.makeProjectVos(results, this.webAppUtil.getLoginUserObject()); ExportExcelVo excelInfo = new ExportExcelVo(); excelInfo.setFileName(this.messageAccessor.message("common.projectList")); // �봽濡쒖젥�듃 紐⑸줉 excelInfo.addAttrInfos(new ExportExcelAttrVo("statusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �긽�깭 -- Gitblit v1.8.0