From c84a58af50fc2a966b8fd2420a1c26bb0ef3a916 Mon Sep 17 00:00:00 2001
From: wyu <kknd09321@nate.com>
Date: 목, 02 12월 2021 20:45:26 +0900
Subject: [PATCH] 이슈 타입에 따라 프로젝트 선택 변경

---
 src/main/java/kr/wisestone/owl/vo/UserVo.java                         |    9 +++
 src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java      |   24 ++++++++
 src/main/resources/migration/V1_9__Alter_Table.sql                    |    1 
 src/main/java/kr/wisestone/owl/domain/User.java                       |    9 +++
 src/main/java/kr/wisestone/owl/web/controller/UserController.java     |   13 ++++
 src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java  |   12 ++++
 src/main/webapp/scripts/app/common/common.controller.js               |   41 +++++++++++++
 src/main/java/kr/wisestone/owl/web/form/UserForm.java                 |    9 +++
 src/main/java/kr/wisestone/owl/service/UserService.java               |    2 
 src/main/webapp/scripts/components/user/user.service.js               |    6 ++
 src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java |    1 
 11 files changed, 125 insertions(+), 2 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/domain/User.java b/src/main/java/kr/wisestone/owl/domain/User.java
index d3efd00..dd8ccc7 100644
--- a/src/main/java/kr/wisestone/owl/domain/User.java
+++ b/src/main/java/kr/wisestone/owl/domain/User.java
@@ -36,6 +36,7 @@
     private SocialType socialType;
     private Long lastWorkspaceId;
     private Long lastProjectId;
+    private Long lastIssueTypeId;
     private Date lastLoginDate;
     private String reservationNotifyTime;   //  �씠硫붿씪 �븣由� �떆媛� �삁�젙
     private String language;
@@ -162,6 +163,14 @@
         this.lastProjectId = lastProjectId;
     }
 
+    public Long getLastIssueTypeId() {
+        return lastIssueTypeId;
+    }
+
+    public void setLastIssueTypeId(Long lastIssueTypeId) {
+        this.lastIssueTypeId = lastIssueTypeId;
+    }
+
     public String getAwsKey() {
         return awsKey;
     }
diff --git a/src/main/java/kr/wisestone/owl/service/UserService.java b/src/main/java/kr/wisestone/owl/service/UserService.java
index fc41945..cefe199 100644
--- a/src/main/java/kr/wisestone/owl/service/UserService.java
+++ b/src/main/java/kr/wisestone/owl/service/UserService.java
@@ -50,6 +50,8 @@
 
     void updateLastProject(Map<String, Object> resJsonData, UserForm userForm);
 
+    void updateLastIssueType(Map<String, Object> resJsonData, UserForm userForm);
+
     void updateLastMyWorkspace(User user);
 
     void findProjectMember(Map<String, Object> resJsonData, UserCondition userCondition);
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
index 68b8a8c..1e14323 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
@@ -173,6 +173,7 @@
         condition.setPage(pageable.getPageNumber() * pageable.getPageSize());
         condition.setPageSize(pageable.getPageSize());
         condition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
+
         List<Map<String, Object>> results = this.issueTypeMapper.find(condition);
         Long totalCount = this.issueTypeMapper.count(condition);
         int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1;
diff --git a/src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
index 0001712..5cf3422 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
@@ -1064,6 +1064,30 @@
         resJsonData.put(Constants.RES_KEY_CONTENTS, userVo);
     }
 
+    //  留덉�留됱쑝濡� �꽑�깮�븳 �씠�뒋 ���엯 �젙蹂대�� ���옣�븳�떎.
+    @Override
+    @Transactional
+    public void updateLastIssueType(Map<String, Object> resJsonData, UserForm userForm) {
+        User user = this.getUser(this.webAppUtil.getLoginId());
+
+        if (userForm.getLastIssueTypeId() != null) {
+            user.setLastIssueTypeId(userForm.getLastIssueTypeId());
+        }
+
+        this.userRepository.saveAndFlush(user);
+        //  �꽭�뀡 �뾽�뜲�씠�듃
+        SecurityUtils.setUserToSession(user);
+        //  �겢�씪�씠�뼵�듃�쓽 �궗�슜�옄 �젙蹂� �뾽�뜲�씠�듃
+        UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class, "password");
+
+        if (user.getSocialType() != null) {
+            userVo.setSocialType(user.getSocialType().toString());
+        }
+
+        userVo.setAccount(CommonUtil.decryptAES128(userVo.getAccount()));
+
+        resJsonData.put(Constants.RES_KEY_CONTENTS, userVo);
+    }
     //  �듅�젙 �븘�씠�뵒�뿉 �빐�떦�븯�뒗 �궗�슜�옄 紐⑸줉�쓣 媛��졇�삩�떎.
     @Override
     @Transactional(readOnly = true)
diff --git a/src/main/java/kr/wisestone/owl/vo/UserVo.java b/src/main/java/kr/wisestone/owl/vo/UserVo.java
index 71bf358..574694e 100644
--- a/src/main/java/kr/wisestone/owl/vo/UserVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/UserVo.java
@@ -20,6 +20,7 @@
     private String socialType;
     private Long lastWorkspaceId;
     private Long lastProjectId;
+    private Long lastIssueTypeId;
     private Long departmentId;
     private Boolean userSocialLogin = Boolean.FALSE;
     private List<ProjectVo> projectVos = Lists.newArrayList();
@@ -191,6 +192,14 @@
         this.sessionActiveTime = sessionActiveTime;
     }
 
+    public Long getLastIssueTypeId() {
+        return lastIssueTypeId;
+    }
+
+    public void setLastIssueTypeId(Long lastIssueTypeId) {
+        this.lastIssueTypeId = lastIssueTypeId;
+    }
+
     public Long getLastProjectId() {
         return lastProjectId;
     }
diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java
index a366fa2..772eded 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java
@@ -1,8 +1,10 @@
 package kr.wisestone.owl.web.condition;
 
+import com.google.common.collect.Lists;
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.util.MapUtil;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -24,6 +26,8 @@
 
     private String startDate;
     private String endDate;
+
+    private List<Long> projectIds = Lists.newArrayList();
 
     public IssueTypeCondition(){}
 
@@ -138,4 +142,12 @@
     public void setEndDate(String endDate) {
         this.endDate = endDate;
     }
+
+    public List<Long> getProjectIds() {
+        return projectIds;
+    }
+
+    public void setProjectIds(List<Long> projectIds) {
+        this.projectIds = projectIds;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/controller/UserController.java b/src/main/java/kr/wisestone/owl/web/controller/UserController.java
index 3084944..0cefa21 100644
--- a/src/main/java/kr/wisestone/owl/web/controller/UserController.java
+++ b/src/main/java/kr/wisestone/owl/web/controller/UserController.java
@@ -181,6 +181,19 @@
         return this.setSuccessMessage(resJsonData);
     }
 
+    //  �궗�슜�옄�쓽 留덉�留� �젒洹� �씠�뒋 �쑀�삎 �젙蹂� �뾽�뜲�씠�듃
+    @RequestMapping(value = "/user/updateLastIssueType", method = RequestMethod.POST)
+    public
+    @ResponseBody
+    Map<String, Object> updateLastIssueType(@RequestBody Map<String, Map<String, Object>> params) {
+        Map<String, Object> resJsonData = new HashMap<>();
+
+        this.userService.updateLastIssueType(resJsonData, UserForm.make(params.get(Constants.REQ_KEY_CONTENT)));
+
+        return this.setSuccessMessage(resJsonData);
+    }
+
+
     //  �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 �씪諛� �궗�슜�옄 紐⑸줉 議고쉶
     @RequestMapping(value = "/user/findProjectMember", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
     public
diff --git a/src/main/java/kr/wisestone/owl/web/form/UserForm.java b/src/main/java/kr/wisestone/owl/web/form/UserForm.java
index 06d0a08..8e92ff6 100644
--- a/src/main/java/kr/wisestone/owl/web/form/UserForm.java
+++ b/src/main/java/kr/wisestone/owl/web/form/UserForm.java
@@ -23,6 +23,7 @@
     private String socialType;
     private Long lastWorkspaceId;
     private Long lastProjectId;
+    private Long lastIssueTypeId;
     private String reservationNotifyTime;
     private String language;
     private String licensekey;
@@ -177,4 +178,12 @@
     public void setLicensekey(String licensekey) {
         this.licensekey = licensekey;
     }
+
+    public Long getLastIssueTypeId() {
+        return lastIssueTypeId;
+    }
+
+    public void setLastIssueTypeId(Long lastIssueTypeId) {
+        this.lastIssueTypeId = lastIssueTypeId;
+    }
 }
diff --git a/src/main/resources/migration/V1_9__Alter_Table.sql b/src/main/resources/migration/V1_9__Alter_Table.sql
index 4217a77..d11ac0e 100644
--- a/src/main/resources/migration/V1_9__Alter_Table.sql
+++ b/src/main/resources/migration/V1_9__Alter_Table.sql
@@ -24,6 +24,7 @@
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
 ALTER TABLE `user` ADD COLUMN `last_project_id` bigint(20) NULL DEFAULT '0';
+ALTER TABLE `user` ADD COLUMN `last_issue_type_id` bigint(20) NULL DEFAULT '0';
 ALTER TABLE `user` ADD COLUMN `last_login_date` TIMESTAMP NULL;
 ALTER TABLE `issue` ADD COLUMN `workflow_status_id` bigint(20) NULL DEFAULT NULL;
 
diff --git a/src/main/webapp/scripts/app/common/common.controller.js b/src/main/webapp/scripts/app/common/common.controller.js
index 741b63a..1750d6d 100644
--- a/src/main/webapp/scripts/app/common/common.controller.js
+++ b/src/main/webapp/scripts/app/common/common.controller.js
@@ -22,7 +22,8 @@
                     sendMessage: sendMessage,
                     moveMenu : moveMenu,
                     findIssueList : findIssueList,   // �궗�씠�뱶諛� �씠�뒋 紐⑸줉 媛��졇�삤湲�
-                    changeIssueListMenu : changeIssueListMenu
+                    changeIssueListMenu : changeIssueListMenu,
+                    setLastIssueType : setLastIssueType
                 };
 
                 $scope.vm = {
@@ -48,6 +49,19 @@
                     findAllWorkproject();
                 });
 
+                function setLastIssueType() {
+                    if (User != null) {
+                        User.updateLastIssueType($resourceProvider.getContent(
+                            {lastIssueTypeId: $rootScope.getCurrentIssueTypeId()},
+                            $resourceProvider.getPageContent(0, 0))).then(function (result) {
+
+                            if (result.data.message.status === "success") {
+
+                            }
+                        });
+                    }
+                }
+
                 function changeIssueListMenu(issueTypeId) {
                     $rootScope.issueTypeMenu = null;
                     for (var issueType of $rootScope.workIssueTypes) {
@@ -56,6 +70,7 @@
                             break;
                         }
                     }
+
                     // sidebar �겢由��떆 �봽濡쒖젥�듃 �븘�씠�뵒 �꽕�젙
                     $rootScope.changeLastProject($rootScope.issueTypeMenu.projectVo.id);
 
@@ -64,6 +79,11 @@
                     }
 
                     $rootScope.$broadcast("changeIssueListMenu", $rootScope.issueTypeMenu);
+
+                    if ($rootScope.user.lastIssueTypeId !== issueTypeId) {
+                        $scope.fn.setLastIssueType(issueTypeId);
+                    }
+
                 }
 
                 function moveMenu(stateName) {
@@ -222,12 +242,28 @@
                        useProject : true,
                        deep : "01" //  �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �썙�겕�뵆濡쒖슦 �젙蹂대�� 李얜뒗�떎.
                    }
-
                    IssueType.find($resourceProvider.getContent(conditions,
                        $resourceProvider.getPageContent(0, 100))).then(function (result) {
 
                        if (result.data.message.status === "success") {
                            $rootScope.workIssueTypes = result.data.data;
+
+                           if ($rootScope.workIssueTypes != null && $rootScope.workIssueTypes.length > 0) {
+                               $rootScope.workIssueTypes.forEach(function (issueType) {
+
+                                   var selectIssueTypeId = null;
+                                   if (issueType.id === $rootScope.user.lastIssueTypeId) {
+                                       selectIssueTypeId = issueType.id;
+                                       $scope.fn.changeIssueListMenu(issueType.id);
+                                   }
+
+                                   if (selectIssueTypeId == null) {
+                                       $scope.fn.changeIssueListMenu($rootScope.workIssueTypes[0].id);
+                                   }
+                               });
+                           } else {
+                               $state.go('dashboards.dashboard');
+                           }
                        }
                        else {
                            SweetAlert.error($filter("translate")("managementType.failedToIssueTypeList"), result.data.message.message); // "�씠�뒋 �쑀�삎 紐⑸줉 議고쉶 �떎�뙣"
@@ -250,6 +286,7 @@
 
                         if (result.data.message.status === "success") {
                             $rootScope.user = result.data.data;
+                            $rootScope.setCurrentIssueTypeId()
                             $state.go($state.current, {}, {reload: true});
 
                             if ($state.current.name === "dashboards.dashboard") {
diff --git a/src/main/webapp/scripts/components/user/user.service.js b/src/main/webapp/scripts/components/user/user.service.js
index b9fac63..f6f321b 100644
--- a/src/main/webapp/scripts/components/user/user.service.js
+++ b/src/main/webapp/scripts/components/user/user.service.js
@@ -40,6 +40,12 @@
                     return response;
                 });
             },
+            updateLastIssueType : function (conditions) {
+                return $http.post("user/updateLastIssueType", conditions).then(function (response) {
+                    $log.debug("�궗�슜�옄媛� 留덉�留됱쑝濡� �꽑�깮�븳 �씠�뒋 �쑀�삎 : ", response);
+                    return response;
+                });
+            },
             find : function (conditions) {
                 return $http.post("user/find", conditions).then(function (response) {
                     $log.debug("�궗�슜�옄 紐⑸줉 �뜲�씠�꽣 : ", response);

--
Gitblit v1.8.0