From a72bda0256b8a5f3bc348142449e759cd445560b Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 화, 14 12월 2021 17:53:56 +0900 Subject: [PATCH] 이슈 수정시 사용자가 담당부서에 속해있으면 수정 가능 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 66 ++++++++++++++++++++++++++------- src/main/java/kr/wisestone/owl/repository/IssueDepartmentRepository.java | 2 + src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java | 3 + src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java | 8 ++++ 4 files changed, 65 insertions(+), 14 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/repository/IssueDepartmentRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueDepartmentRepository.java index da29e2c..9cf7cb4 100644 --- a/src/main/java/kr/wisestone/owl/repository/IssueDepartmentRepository.java +++ b/src/main/java/kr/wisestone/owl/repository/IssueDepartmentRepository.java @@ -3,9 +3,11 @@ import kr.wisestone.owl.domain.IssueDepartment; import kr.wisestone.owl.domain.IssueUser; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; import java.util.List; public interface IssueDepartmentRepository extends JpaRepository<IssueDepartment, Long> { List<IssueDepartment> findByIssueId(Long issueId); + List<IssueDepartment> findByDepartmentId(@Param("departmentId") Long departmentId); } diff --git a/src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java b/src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java index be18795..2425fe2 100644 --- a/src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java +++ b/src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java @@ -4,6 +4,7 @@ import kr.wisestone.owl.domain.IssueDepartment; import kr.wisestone.owl.domain.User; import kr.wisestone.owl.domain.Workspace; +import kr.wisestone.owl.vo.DepartmentVo; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -21,4 +22,6 @@ void removeIssueDepartment(Long projectId, List<Long> excludeUserIds); List<IssueDepartment> find(Issue issue); + + List<IssueDepartment> findByDepartmentId(Long departmentId); } diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java index 1390d02..34d1557 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java @@ -8,6 +8,7 @@ import kr.wisestone.owl.service.IssueDepartmentService; import kr.wisestone.owl.util.CommonUtil; import kr.wisestone.owl.util.MapUtil; +import kr.wisestone.owl.vo.DepartmentVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -91,6 +92,13 @@ return this.issueDepartmentRepository.findByIssueId(issue.getId()); } + // �씠�뒋 �떞�떦遺��꽌 李얘린 + @Override + @Transactional + public List<IssueDepartment> findByDepartmentId(Long departmentId) { + return this.issueDepartmentRepository.findByDepartmentId(departmentId); + } + @Override @Transactional public void insertIssueDepartment(List<Map<String, Long>> issueAssigneeMaps) { diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java index 8fa627b..324bb9e 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -175,6 +175,9 @@ private SimpMessagingTemplate simpMessagingTemplate; @Autowired + private UserDepartmentService userDepartmentService; + + @Autowired private UserDepartmentRepository userDepartmentRepository; @Autowired @@ -1238,7 +1241,7 @@ } // �씠�뒋 �닔�젙 沅뚰븳�쓣 媛뽮퀬 �엳�뒗吏� �솗�씤 - if (this.checkHasPermission(issueVo, issueVo.getUserVos(), user)) { + if (this.checkHasPermission(issueVo, issueVo.getUserVos(), user, null)) { issueVo.setModifyPermissionCheck(Boolean.TRUE); } } @@ -1275,7 +1278,7 @@ } // �씠�뒋 �닔�젙 沅뚰븳�쓣 媛뽮퀬 �엳�뒗吏� �솗�씤 - if (this.checkHasPermission(issueVo, issueVo.getUserVos(), user)) { + if (this.checkHasPermission(issueVo, issueVo.getUserVos(), user, issueVo.getDepartmentVos())) { issueVo.setModifyPermissionCheck(Boolean.TRUE); } } @@ -1515,6 +1518,15 @@ DepartmentVo departmentVo = ConvertUtil.copyProperties(issueDepartment.getDepartment(), DepartmentVo.class); departmentVo.setByName(departmentVo.getDepartmentName()); departmentVos.add(departmentVo); + + List<UserDepartment> userDepartments = this.userDepartmentRepository.findByDepartmentId(departmentVo.getId()); + if (userDepartments != null && userDepartments.size() > 0) { + for (UserDepartment userDepartment : userDepartments) { + if (userDepartment.getUserId().equals(this.webAppUtil.getLoginId())){ + issueVo.setModifyPermissionCheck(Boolean.TRUE); + } + } + } } issueVo.setDepartmentVos(departmentVos); } @@ -1921,7 +1933,7 @@ // �씠�뒋 �닔�젙 沅뚰븳 泥댄겕 private void verifyIssueModifyPermission(Issue issue, User user) { // �씠�뒋 �닔�젙 沅뚰븳�쓣 媛뽮퀬 �엳�뒗吏� �솗�씤 - if (!this.checkHasPermission(ConvertUtil.copyProperties(issue, IssueVo.class), this.getIssueUserVos(issue), user)) { + if (!this.checkHasPermission(ConvertUtil.copyProperties(issue, IssueVo.class), this.getIssueUserVos(issue), user, this.getIssueDepartmentVos(issue))) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_MODIFY_PERMISSION)); } @@ -1946,8 +1958,27 @@ return userVos; } + // �씠�뒋�뿉�꽌 �떞�떦�옄 �젙蹂대�� 異붿텧�븳�떎. + private List<DepartmentVo> getIssueDepartmentVos(Issue issue) { + List<DepartmentVo> departmentVos = Lists.newArrayList(); + + Set<IssueDepartment> issueDepartments = issue.getIssueDepartments(); + + try { + for (IssueDepartment issueDepartment : issueDepartments) { + Department department = issueDepartment.getDepartment(); + DepartmentVo departmentVo = ConvertUtil.copyProperties(department, DepartmentVo.class); + departmentVos.add(departmentVo); + } + } catch (Exception ex) { + + } + + return departmentVos; + } + // �씠�뒋 �닔�젙 沅뚰븳�쓣 媛뽮퀬 �엳�뒗吏� �솗�씤 - private boolean checkHasPermission(IssueVo issueVo, List<UserVo> issueUserVos, User user) { + private boolean checkHasPermission(IssueVo issueVo, List<UserVo> issueUserVos, User user, List<DepartmentVo> departmentVos) { boolean hasPermission = false; // �뾽臾� 怨듦컙 愿�由ъ옄�씪 寃쎌슦 �닔�젙 沅뚰븳�쓣 媛뽯뒗�떎. @@ -1956,8 +1987,10 @@ hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.PROJECT_MANAGER, issueVo, null, null, user); // �씠�뒋 �벑濡앹옄�씪 寃쎌슦 �닔�젙 沅뚰븳�쓣 媛뽯뒗�떎. hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.REGISTER, issueVo, null, null, user); - // �씠�뒋 �떞�떦�옄�씪 寃쎌슦 �닔�젙 沅뚰븳�쓣 媛뽯뒗�떎. => �떞�떦遺��꽌濡� �닔�젙 - 泥댄겕 + // �씠�뒋 �떞�떦�옄�씪 寃쎌슦 �닔�젙 沅뚰븳�쓣 媛뽯뒗�떎. //hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ASSIGNEE, issueVo, issueUserVos); + // �씠�뒋 �떞�떦遺��꽌�씪 寃쎌슦 �닔�젙 沅뚰븳�쓣 媛뽯뒗�떎. + hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.DEPARTMENT, issueVo, null, departmentVos, user); // �떞�떦�옄媛� �뾾�쑝硫� 紐⑤뱺 �궗�슜�옄媛� �닔�젙 沅뚰븳�쓣 媛뽯뒗�떎. //hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ALL_ISSUE_MANAGER, issueVo, null, null, user); @@ -1967,7 +2000,7 @@ } // �씠�뒋 �닔�젙 沅뚰븳�쓣 �솗�씤�븳�떎. - private boolean checkIssueModifyPermission(Boolean hasPermission, String checkType, IssueVo issueVo, List<UserVo> issueUserVos, List<DepartmentVo> issueDepartmentVos, User user) { + private boolean checkIssueModifyPermission(Boolean hasPermission, String checkType, IssueVo issueVo, List<UserVo> issueUserVos, List<DepartmentVo> departmentVos, User user) { if (!hasPermission) { switch (checkType) { case Issue.WORKSPACE_MANAGER: // �뾽臾� 怨듦컙 愿�由ъ옄 @@ -2002,17 +2035,22 @@ case Issue.DEPARTMENT: // �떞�떦遺��꽌媛� �뾾�쑝硫� 紐⑤뱺 �궗�슜�옄媛� �닔�젙 沅뚰븳�쓣 媛뽯뒗�떎. - if (issueDepartmentVos.size() < 1) { + /*if (userDepartmentVos.size() < 1) { hasPermission = true; break; - } - // �씠�뒋 �떞�떦遺��꽌 �뿬遺� �솗�씤 - /*for (DepartmentVo issueDepartmentVo : issueDepartmentVos) { - if (issueDepartmentVo.getId().equals()) { - hasPermission = true; - break; - } }*/ + // �씠�뒋 �떞�떦遺��꽌 �뿬遺� �솗�씤 + for (DepartmentVo departmentVo : departmentVos) { + List<UserDepartment> userDepartments = this.userDepartmentService.findByDepartmentId(departmentVo.getId()); + if(userDepartments != null && userDepartments.size() > 0) { + for (UserDepartment userDepartment : userDepartments) { + if (userDepartment.getUserId().equals(user.getId())){ + hasPermission = true; + break; + } + } + } + } break; } } -- Gitblit v1.8.0