From 1bf54ac4463cc9a821bb818f6c8cfb01d981e91a Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 23 12월 2021 15:51:29 +0900
Subject: [PATCH] - '이슈관리' 권한은 내가 속해있는 프로젝트의 이슈에 대해서만 관리 권한이 있음 - 일반 사용자 검색 문제 해결 - 이슈리스트 툴팁 재추가

---
 src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java |   70 ++++++++++++++++++++++++++++++----
 1 files changed, 61 insertions(+), 9 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
index b83d5e1..a17c3b5 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
@@ -4,6 +4,7 @@
 import kr.wisestone.owl.common.ExcelConditionCheck;
 import kr.wisestone.owl.common.MessageAccessor;
 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.ProjectType;
@@ -53,6 +54,9 @@
     private ProjectService projectService;
 
     @Autowired
+    private ProjectRoleDepartmentService projectRoleDepartmentService;
+
+    @Autowired
     private ProjectClosureService projectClosureService;
 
     @Autowired
@@ -60,6 +64,9 @@
 
     @Autowired
     private UserService userService;
+
+    @Autowired
+    private UserLevelService userLevelService;
 
     @Autowired
     private UserDepartmentService userDepartmentService;
@@ -164,9 +171,11 @@
     @Transactional(readOnly = true)
     public WidgetCondition makeWidgetCondition() {
         User user = this.webAppUtil.getLoginUserObject();
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
         //  �빐�떦 �썙�겕�뒪�럹�씠�뒪�뿉�꽌 李몄뿬�븯怨� �엳�뒗 �봽濡쒖젥�듃 以� �긽�깭媛� �삤�뵂�씤 �봽濡쒖젥�듃
         List<Map<String, Object>> projects = null;
-        if (this.userWorkspaceService.checkWorkspaceManager(user)) {
+        if (this.userWorkspaceService.checkWorkspaceManager(user)
+                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) {
             projects = this.projectService.findByWorkspaceManagerAll();
         } else  {
             projects = this.projectService.findByWorkspaceIdAndIncludeProjectAll(Lists.newArrayList("02"), ProjectType.BTS_PROJECT.toString());
@@ -208,8 +217,20 @@
 
     void SetMeAndDownProjectIds(List<Long> parentProjectIds, WidgetCondition widgetCondition) {
         List<Long> downProjectIds = Lists.newArrayList();
+        List<Long> projectIds = Lists.newArrayList();
+        projectIds.add(-1L);
+        User user = this.webAppUtil.getLoginUserObject();
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
         if(parentProjectIds != null && parentProjectIds.size() > 0){
             for(Long parentProjectId : parentProjectIds){
+                if(!this.userWorkspaceService.checkWorkspaceManager(user) || !MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)){
+                    Project project = this.projectService.getProject(parentProjectId);
+                    List<Map<String, Object>> results = this.projectService.findByWorkspaceIdAndIncludeProject(Lists.newArrayList("01", "02", "03"), project.getProjectType().toString());
+                    if(results == null || results.size() < 1) {
+                        widgetCondition.setMeAndDownProjectIds(projectIds);
+                        break;
+                    }
+                }
                 List<ProjectClosure> projectClosures = this.projectClosureRepository.findByParentProjectId(parentProjectId); //�궡 �봽濡쒖젥�듃ID媛� �긽�쐞�봽濡쒖젥�듃�씤寃� �엳�뒗吏�
                 if(projectClosures != null && projectClosures.size() > 0){
                     for(ProjectClosure projectClosure : projectClosures){
@@ -246,10 +267,12 @@
         widgetCondition.setLoginUserId(this.webAppUtil.getLoginId());
         widgetCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
         User user = this.webAppUtil.getLoginUserObject();
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
 
         if (widgetCondition.getProjectIds().size() > 0) {
             SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
-            if (this.userWorkspaceService.checkWorkspaceManager(user)) {
+            if (this.userWorkspaceService.checkWorkspaceManager(user)
+                    || (MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE))) {
                 remainIssue = this.widgetMapper.countRemainIssue(widgetCondition);   //  �옍�뿬 �씠�뒋
                 delayIssue = this.widgetMapper.countTodayDelayIssue(widgetCondition); //  吏��뿰�맂 �씠�뒋
                 assigneeIssue = this.widgetMapper.countAssigneeIssue(widgetCondition);   //  �븷�떦�맂 �씠�뒋
@@ -262,7 +285,7 @@
                 delayIssue = this.widgetMapper.countTodayDelayIssueByDepartment(widgetCondition); //  吏��뿰�맂 �씠�뒋
                 assigneeIssue = this.widgetMapper.countAssigneeIssueByDepartment(widgetCondition);   //  �븷�떦�맂 �씠�뒋
                 registerIssue = this.widgetMapper.countTodayRegisterIssueByDepartment(widgetCondition);    //  �벑濡앺븳 �씠�뒋
-                noAssigneeIssue = this.widgetMapper.countNoAssigneeIssueByDepartment(widgetCondition);   //  誘명븷�떦 �씠�뒋
+                //noAssigneeIssue = this.widgetMapper.countNoAssigneeIssueByDepartment(widgetCondition);   //  �씪諛� �쑀���뒗 誘명븷�떦 �씠�뒋 0媛쒕줈 蹂댁씠寃�
                 completeIssue = this.widgetMapper.countCompleteIssueByDepartment(widgetCondition); // �셿猷뚮맂 �씠�뒋
             }
         }
@@ -289,10 +312,12 @@
         List<Map<String, Object>> progressingProjectDetails = Lists.newArrayList();
 
         User user = this.webAppUtil.getLoginUserObject();
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
 
         if (widgetCondition.getProjectIds().size() > 0) {
             SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
-            if (this.userWorkspaceService.checkWorkspaceManager(user)) {
+            if (this.userWorkspaceService.checkWorkspaceManager(user)
+                    || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) {
                 progressingProjectDetails = this.widgetMapper.findProjectProgressAll(widgetCondition);
             } else {
                 progressingProjectDetails = this.widgetMapper.findProjectProgress(widgetCondition);
@@ -392,6 +417,7 @@
 
         if (widgetCondition.getProjectIds().size() > 0) {
             SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
+            this.SetMyDepartmentId(widgetCondition);
             todayCount = this.widgetMapper.countTodayMyAssigneeIssue(widgetCondition);
             assigneeIssues = this.widgetMapper.findMyAssigneeIssue(widgetCondition);
             totalCount = this.widgetMapper.countMyAssigneeIssue(widgetCondition);
@@ -496,11 +522,13 @@
         widgetCondition.setLoginUserId(this.webAppUtil.getLoginId());
         widgetCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
         User user = this.webAppUtil.getLoginUserObject();
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
 
         if (widgetCondition.getProjectId() != null) {
             SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             List<Map<String, Object>> projectMemberIssues = Lists.newArrayList();
-            if (this.userWorkspaceService.checkWorkspaceManager(user)) {
+            if (this.userWorkspaceService.checkWorkspaceManager(user)
+                    || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE)) {
                 projectMemberIssues = this.widgetMapper.findProjectMemberIssue(widgetCondition);
             } else {
                 projectMemberIssues = this.widgetMapper.findProjectMemberIssueByDepartment(widgetCondition);
@@ -782,10 +810,17 @@
         }
 
         List<Map<String, Object>> results = Lists.newArrayList();
+        User user = this.webAppUtil.getLoginUserObject();
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
 
         if (widgetCondition.getProjectIds().size() > 0) {
             SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
-            results = this.widgetMapper.findByStandIssueStatus(widgetCondition);
+            if (this.userWorkspaceService.checkWorkspaceManager(user)
+                    || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE)) {
+                results = this.widgetMapper.findByStandIssueStatus(widgetCondition);
+            }else {
+                results = this.widgetMapper.findByStandIssueStatusOfDepartment(widgetCondition);
+            }
         }
 
         for (Map<String, Object> result : results) {
@@ -809,10 +844,24 @@
     public void findByStandIssueType(Map<String, Object> resJsonData, WidgetCondition widgetCondition, Boolean getWidgetCondition) {
         //  �쐞�젽 寃��깋 議곌굔�쓣 �뼸�뼱�빞 �븷 �긽�솴�씪 �븣 - �솕硫댁뿉�꽌 �꺆�쓣 �닃�윭 �뜲�씠�꽣瑜� �옱�슂泥��뻽�쓣 �븣 �쐞�젽 寃��깋 議곌굔�쓣 留뚮뱾怨� �쟾泥� �봽濡쒖젥�듃 �젙蹂대�� 由ы꽩�븳�떎.
         Map<String, Object> results = this.makeWidgetConditionAllProject(widgetCondition, getWidgetCondition);
-
+        User user = this.webAppUtil.getLoginUserObject();
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
         if (widgetCondition.getProjectId() != null) {
             SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
-            List<Map<String, Object>> issueTypeIssues = this.widgetMapper.findByStandIssueType(widgetCondition);
+            if (widgetCondition.getMeAndDownProjectIds() != null) {
+                for (Long meAndProjectId : widgetCondition.getMeAndDownProjectIds()) {
+                    if(meAndProjectId == -1L) {
+                        results.replace("projectVos", null);
+                    }
+                }
+            }
+            List<Map<String, Object>> issueTypeIssues = Lists.newArrayList();
+            if (this.userWorkspaceService.checkWorkspaceManager(user)
+                    || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE)) {
+                issueTypeIssues = this.widgetMapper.findByStandIssueType(widgetCondition);
+            } else {
+                issueTypeIssues = this.widgetMapper.findByStandIssueTypeOfDepartment(widgetCondition);
+            }
             //  �씠�뒋 �젙蹂�
             results.put("issues", issueTypeIssues);
         } else {
@@ -825,6 +874,7 @@
     //  �쐞�젽 寃��깋 議곌굔�쓣 留뚮뱾怨� �쟾泥� �봽濡쒖젥�듃 �젙蹂대�� 由ы꽩�븳�떎.
     private Map<String, Object> makeWidgetConditionAllProject(WidgetCondition widgetCondition, boolean getWidgetCondition) {
         Map<String, Object> results = new HashMap<>();
+        SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
 
         //  �쐞�젽 寃��깋 議곌굔�쓣 �뼸�뼱�빞 �븷 �긽�솴�씪 �븣 - �솕硫댁뿉�꽌 �꺆�쓣 �닃�윭 �뜲�씠�꽣瑜� �옱�슂泥��뻽�쓣 �븣
         if (getWidgetCondition) {
@@ -888,10 +938,12 @@
         widgetCondition.setLoginUserId(this.webAppUtil.getLoginId());
         widgetCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
         User user = this.webAppUtil.getLoginUserObject();
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
 
         if (widgetCondition.getProjectIds().size() > 0) {
             SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
-            if (this.userWorkspaceService.checkWorkspaceManager(user)) {
+            if (this.userWorkspaceService.checkWorkspaceManager(user)
+                    || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE)) {
                 severityCounts = this.widgetMapper.countSeverityIssue(widgetCondition);
                 severityIssues = this.widgetMapper.findSeverityIssues(widgetCondition);
                 totalCount = this.widgetMapper.countSearchIssue(widgetCondition);

--
Gitblit v1.8.0