From 367c498ea88844fd36079b46a9f7c7f5d0a9c1cd Mon Sep 17 00:00:00 2001
From: jhjang <jhjang@maprex.co.kr>
Date: 월, 27 12월 2021 10:33:53 +0900
Subject: [PATCH] - api 이슈 변경시 워크플로우에 포함된 상태로만 변경가능하도록 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java              |   18 +++++++-
 src/main/java/kr/wisestone/owl/data/CheckIssueData.java                        |   45 ----------------------
 src/main/java/kr/wisestone/owl/web/controller/ApiController.java               |   39 +++++--------------
 src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java |    7 +++
 src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java          |    2 +
 src/main/java/kr/wisestone/owl/constant/MsgConstants.java                      |    2 +
 6 files changed, 37 insertions(+), 76 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
index 349f92a..e581672 100644
--- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
+++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -251,5 +251,7 @@
     public static final String API_ISSUE_NOT_EXIST = "API_ISSUE_NOT_EXIST";     // �닔�젙�븷 �씠�뒋瑜� 李얠쓣�닔 �뾾�뒿�땲�떎.
     public static final String API_COMPLETE_ISSUE_STATUS_NOT_EXIST = "API_COMPLETE_ISSUE_STATUS_NOT_EXIST";     // �옄�룞 醫낅즺 泥섎━�븷 �긽�깭媛� �꽕�젙�릺吏� �븡�븯�뒿�땲�떎.
     public static final String API_ISSUE_STATUS_NOT_EXIST = "API_ISSUE_STATUS_NOT_EXIST";     // �씠�뒋 �긽�깭瑜� 李얠쓣�닔 �뾾�뒿�땲�떎
+    public static final String API_ISSUE_STATUS_IS_NULL = "API_ISSUE_STATUS_IS_NULL";     // �씠�뒋 �긽�깭 媛믪씠 �뾾�뒿�땲�떎.
     public static final String API_CUSTOM_FIELD_NOT_EXIST = "API_CUSTOM_FIELD_NOT_EXIST";     // �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 議댁옱�븯吏� �븡�뒿�땲�떎.
+    public static final String API_ISSUE_STATUS_NOT_IN_WORKFLOW = "API_ISSUE_STATUS_NOT_IN_WORKFLOW";     // �씠�뒋 �긽�깭媛� �썙�겕�뵆濡쒖슦�뿉 �룷�븿�릺�뼱 �엳吏� �븡�뒿�땲�떎
 }
diff --git a/src/main/java/kr/wisestone/owl/data/CheckIssueData.java b/src/main/java/kr/wisestone/owl/data/CheckIssueData.java
index d4d60b5..17357ae 100644
--- a/src/main/java/kr/wisestone/owl/data/CheckIssueData.java
+++ b/src/main/java/kr/wisestone/owl/data/CheckIssueData.java
@@ -1,12 +1,8 @@
 package kr.wisestone.owl.data;
 
-import kr.wisestone.owl.config.CommonConfiguration;
 import kr.wisestone.owl.domain.*;
-import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.web.form.IssueForm;
-import org.springframework.beans.factory.annotation.Autowired;
-
 
 // issue �쑀�슚�꽦 泥댄겕�슜 �겢�옒�뒪
 public class CheckIssueData {
@@ -18,48 +14,7 @@
     Priority priority;
     Severity severity;
 
-    @Autowired
-    private IssueService issueService;
-
-    @Autowired
-    private WorkspaceService workspaceService;
-
-    @Autowired
-    private ProjectService projectService;
-
-    @Autowired
-    private IssueStatusService issueStatusService;
-
-    @Autowired
-    private IssueTypeService issueTypeService;
-
-    @Autowired
-    private PriorityService priorityService;
-
-    @Autowired
-    private SeverityService severityService;
-
     public CheckIssueData() {}
-
-    public boolean CheckData(User user, IssueForm issueForm) {
-        //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
-        this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
-
-        Issue issue = this.issueService.getIssue(issueForm.getId());
-        IssueStatus oldIssueStatus = issue.getIssueStatus();
-        //  �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕
-        Project project = this.projectService.getProject(issueForm.getProjectId());
-        //  �씠�뒋 �긽�깭 �쑀�슚�꽦 泥댄겕
-        IssueStatus issueStatus = this.issueStatusService.getIssueStatus(issueForm.getIssueStatusId());
-        //  �씠�뒋 �쑀�삎 �쑀�슚�꽦 泥댄겕
-        IssueType issueType = this.issueTypeService.getIssueType(issueForm.getIssueTypeId());
-        //  �슦�꽑�닚�쐞 �쑀�슚�꽦 泥댄겕
-        Priority priority = this.priorityService.getPriority(issueForm.getPriorityId());
-        //  以묒슂�룄 �쑀�슚�꽦 泥댄겕
-        Severity severity = this.severityService.getSeverity(issueForm.getSeverityId());
-
-        return true;
-    }
 
     public Issue getIssue() {
         return issue;
diff --git a/src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java b/src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java
index 7be65a3..42c60f1 100644
--- a/src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java
+++ b/src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java
@@ -16,6 +16,8 @@
 
     List<WorkflowTransition> findByWorkflowId(Long workflowId);
 
+    boolean contains(Long issueStatusId, Long workflowId);
+
     List<WorkflowTransitionVo> findBySourceIssueStatusIdAndWorkflowId(Long sourceIssueStatusId, Long workflowId);
 
     void modify(Workflow workflow, List<IssueStatusVo> issueStatusVos);
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 b132251..8151068 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -187,6 +187,9 @@
     private UserDepartmentService userDepartmentService;
 
     @Autowired
+    private WorkflowTransitionService workflowTransitionService;
+
+    @Autowired
     private UserDepartmentRepository userDepartmentRepository;
 
     @Autowired
@@ -194,6 +197,9 @@
 
     @Autowired
     private WorkflowDepartmentRepository workflowDepartmentRepository;
+
+    @Autowired
+    WorkflowService workflowService;
 
     @Override
     protected JpaRepository<Issue, Long> getRepository() {
@@ -234,7 +240,6 @@
         }
 
         Workflow workflow = issueType.getWorkflow();
-
         if (issueApiForm.getApiType().equals(IssueApiForm.ApiType.add)) {
             // �씠�뒋 �긽�깭媛� 吏��젙�릺�뼱 �엳吏� �븡�쓣 寃쎌슦 �썙�겕�뵆濡쒖슦 ��湲� �긽�깭 媛믪쑝濡� 吏��젙
             List<Long> departmentIds = this.workflowDepartmentService.findFirstDepartmentIds(workflow);
@@ -243,8 +248,15 @@
                     issueForm.addDepartmentId(departmentId);
                 }
             }
-        } else if (issueApiForm.getIssueStatusId() == null){
-            throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_ISSUE_STATUS_NOT_EXIST));
+        } else {
+            if (issueApiForm.getIssueStatusId() == null){
+                throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_ISSUE_STATUS_IS_NULL));
+            }
+            // �썙�겕�뵆濡쒖슦�뿉�꽌 �궗�슜 以묒씤 �씠�뒋 �긽�깭�씤吏� 泥댄겕
+            else if (!this.workflowTransitionService.contains(issueApiForm.getIssueStatusId(), workflow.getId())) {
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.API_ISSUE_STATUS_NOT_IN_WORKFLOW));
+            }
         }
 
         // �봽濡쒖젥�듃 �엯�젰
diff --git a/src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java
index c2271c6..5fc42b4 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java
@@ -131,6 +131,13 @@
         return this.workflowTransitionRepository.findByWorkflowId(workflowId);
     }
 
+    // �썙�겕�뵆濡쒖슦�뿉 �궗�슜�릺�뒗 �씠�뒋 �긽�깭�씤吏� �솗�씤�븳�떎
+    @Override
+    public boolean contains(Long issueStatusId, Long workflowId) {
+        List<WorkflowTransitionVo> workflowTransitionVos = this.findBySourceIssueStatusIdAndWorkflowId(issueStatusId, workflowId);
+        return workflowTransitionVos != null && workflowTransitionVos.size() > 0;
+    }
+
     //  �씠�뒋 �긽�깭�� �뿰寃곕맂 �쟾�씠�꽑 �젙蹂대�� 議고쉶�븳�떎.
     @Override
     @Transactional(readOnly = true)
diff --git a/src/main/java/kr/wisestone/owl/web/controller/ApiController.java b/src/main/java/kr/wisestone/owl/web/controller/ApiController.java
index 9c7b5f4..5c13abc 100644
--- a/src/main/java/kr/wisestone/owl/web/controller/ApiController.java
+++ b/src/main/java/kr/wisestone/owl/web/controller/ApiController.java
@@ -3,16 +3,12 @@
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.MsgConstants;
 import kr.wisestone.owl.domain.Issue;
-import kr.wisestone.owl.domain.User;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.service.IssueService;
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.web.form.IssueApiForm;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Pageable;
-import org.springframework.http.MediaType;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -28,19 +24,6 @@
     @Autowired
     private IssueService issueService;
 
-    //  �씠�뒋 異붽�(json 諛⑹떇�쑝濡� �뙆�씪�쟾�넚)
-//    @RequestMapping(value = "api/issue", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
-//    public
-//    @ResponseBody
-//    Map<String, Object> addIssue(@RequestBody Map<String, Map<String, Object>> params) {
-//        Map<String, Object> resJsonData = new HashMap<>();
-//
-//        IssueApiForm issueForm = IssueApiForm.make(params.get(Constants.REQ_KEY_CONTENT));
-//        Issue issue = this.issueService.addApiIssue(issueForm);
-//        //  踰꾩쟾 �깮�꽦
-//        this.issueService.addIssueVersion(issue.getId());
-//        return this.setSuccessMessage(resJsonData);
-//    }
     @RequestMapping(value = "api/issue", method = RequestMethod.POST)
     public
     @ResponseBody
@@ -57,7 +40,7 @@
         else if (issueForm.getCustomFieldValues() == null || issueForm.getCustomFieldValues().size() == 0) {
             throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_CUSTOM_FIELD_NOT_EXIST));
         }
-        
+
         if (issueForm.getApiType() == IssueApiForm.ApiType.add) {
             List<Issue> issues = this.issueService.addApiIssue(issueForm);
             //  踰꾩쟾 �깮�꽦
@@ -74,15 +57,15 @@
     }
 
     //  �씠�뒋 議고쉶
-    @RequestMapping(value = "/api/issueList", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
-    public
-    @ResponseBody
-    Map<String, Object> find(@RequestBody Map<String, Map<String, Object>> params) {
-        Map<String, Object> resJsonData = new HashMap<>();
-        Pageable pageable = this.pageUtil.convertPageable(this.getPageVo(params));
-
-        // todo
-        return this.setSuccessMessage(resJsonData);
-    }
+//    @RequestMapping(value = "/api/issueList", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+//    public
+//    @ResponseBody
+//    Map<String, Object> find(@RequestBody Map<String, Map<String, Object>> params) {
+//        Map<String, Object> resJsonData = new HashMap<>();
+//        Pageable pageable = this.pageUtil.convertPageable(this.getPageVo(params));
+//
+//        // todo
+//        return this.setSuccessMessage(resJsonData);
+//    }
 }
 

--
Gitblit v1.8.0