From f2b3cbd3a0639f55eef38a4e90ad52ef8e63b1c1 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 04 11월 2021 20:24:32 +0900
Subject: [PATCH] "사용자 관리" 프론트 수정 완료!

---
 src/main/java/kr/wisestone/owl/service/impl/UserWorkspaceServiceImpl.java    |   60 ++++++++++++-------
 src/main/resources/mybatis/query-template/userWorkspace-template.xml         |   22 +++++++
 src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js      |    7 +-
 src/main/java/kr/wisestone/owl/vo/UserWorkspaceVo.java                       |   18 ++++++
 src/main/webapp/views/workspace/workspaceUserConfig.html                     |    2 
 src/main/java/kr/wisestone/owl/web/form/UserWorkspaceForm.java               |   18 ++++++
 src/main/java/kr/wisestone/owl/web/condition/UserWorkspaceCondition.java     |   26 ++++++++
 src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js |    2 
 8 files changed, 126 insertions(+), 29 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/UserWorkspaceServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/UserWorkspaceServiceImpl.java
index 405cfe5..6271319 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/UserWorkspaceServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/UserWorkspaceServiceImpl.java
@@ -3,11 +3,13 @@
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.MsgConstants;
 import kr.wisestone.owl.domain.User;
+import kr.wisestone.owl.domain.UserLevel;
 import kr.wisestone.owl.domain.UserWorkspace;
 import kr.wisestone.owl.domain.Workspace;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.UserWorkspaceMapper;
 import kr.wisestone.owl.repository.UserWorkspaceRepository;
+import kr.wisestone.owl.service.UserLevelService;
 import kr.wisestone.owl.service.UserService;
 import kr.wisestone.owl.service.UserWorkspaceService;
 import kr.wisestone.owl.service.WorkspaceService;
@@ -39,6 +41,9 @@
 
     @Autowired
     private UserService userService;
+
+    @Autowired
+    private UserLevelService userLevelService;
 
     @Autowired
     private UserWorkspaceMapper userWorkspaceMapper;
@@ -104,32 +109,43 @@
     public void modifyUserWorkspace(UserWorkspaceForm userWorkspaceForm) {
         UserWorkspace userWorkspace = this.getUserWorkspace(userWorkspaceForm.getId());
 
-        //  李몄뿬濡� �긽�깭瑜� 蹂�寃쏀븯�젮怨� �븷�븣
-        if (!userWorkspace.getUseYn()) {
-            Integer maxUserCount = userWorkspace.getWorkspace().getMaxUser();  //  理쒕� �궗�슜�옄
-            Integer activeUserCount = this.countByWorkspaceIdAndUseYn(userWorkspace.getWorkspace().getId(), true);
-
-            //  理쒕� �궗�슜�옄 - �쁽�옱 李몄뿬 �궗�슜�옄媛� 0蹂대떎 �겕�떎硫� 李몄뿬 �긽�깭濡� 蹂�寃�
-            if ((maxUserCount - activeUserCount) < 1) {
-                throw new OwlRuntimeException(
-                        this.messageAccessor.getMessage(MsgConstants.WORKSPACE_MAX_USER_EXCESS_NOT_INCLUDE));
-            }
-        }
-        else {
+        UserLevel currentUserlevel = userWorkspace.getUser().getUserLevel();
+        if (currentUserlevel.getId() != userWorkspaceForm.getLevelId()) {
+            // �궗�슜�옄 �벑湲� 蹂�寃쎌떆
             User user = userWorkspace.getUser();
-            //  李몄뿬 ��湲� �궗�슜�옄媛� �쁽�옱 �빐�떦 �뾽臾� 怨듦컙�쓣 �궗�슜�븯怨� �엳�쓣 寃쎌슦 利됱떆 �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �뒘湲곌쾶 �븳�떎.
-            if (user.getLastWorkspaceId().equals(userWorkspace.getWorkspace().getId())){
-                //  �뾽臾� 怨듦컙�뿉 李몄뿬�븯�뜕 �궗�슜�옄�뿉寃� �젣�쇅 �븣由� 諛� �솕硫� �깉濡쒓퀬移�
-                this.simpMessagingTemplate.convertAndSendToUser(user.getAccount(), "/notification/workspace-disabled", this.messageAccessor.getMessage(MsgConstants.WORKSPACE_OUT, userWorkspace.getWorkspace().getName()));
-            }
-
-            //  李몄뿬 ��湲� �긽�깭濡� 蹂�寃쏀븯硫� �빐�떦 �궗�슜�옄�쓽 留덉�留� �젒洹� �뾽臾� 怨듦컙�뒗 �옄�떊�씠 愿�由ы븯�뒗 �뾽臾� 怨듦컙濡� 蹂�寃쏀븳�떎.
-            this.userService.updateLastMyWorkspace(user);
+            UserLevel userLevel = this.userLevelService.getUserLevel(userWorkspaceForm.getLevelId());
+            user.setUserLevel(userLevel);
+            userWorkspace.setUser(user);
         }
 
-        userWorkspace.setUseYn(!userWorkspace.getUseYn());
-        this.userWorkspaceRepository.saveAndFlush(userWorkspace);
+        //todo 遺��꽌 蹂�寃쎌떆
 
+        //  李몄뿬濡� �긽�깭瑜� 蹂�寃쏀븯�젮怨� �븷�븣
+        if (userWorkspace.getUseYn() != userWorkspaceForm.getUseYn()) {
+            if (!userWorkspace.getUseYn()) {
+                Integer maxUserCount = userWorkspace.getWorkspace().getMaxUser();  //  理쒕� �궗�슜�옄
+                Integer activeUserCount = this.countByWorkspaceIdAndUseYn(userWorkspace.getWorkspace().getId(), true);
+
+                //  理쒕� �궗�슜�옄 - �쁽�옱 李몄뿬 �궗�슜�옄媛� 0蹂대떎 �겕�떎硫� 李몄뿬 �긽�깭濡� 蹂�寃�
+                if ((maxUserCount - activeUserCount) < 1) {
+                    throw new OwlRuntimeException(
+                            this.messageAccessor.getMessage(MsgConstants.WORKSPACE_MAX_USER_EXCESS_NOT_INCLUDE));
+                }
+            } else {
+                User user = userWorkspace.getUser();
+                //  李몄뿬 ��湲� �궗�슜�옄媛� �쁽�옱 �빐�떦 �뾽臾� 怨듦컙�쓣 �궗�슜�븯怨� �엳�쓣 寃쎌슦 利됱떆 �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �뒘湲곌쾶 �븳�떎.
+                if (user.getLastWorkspaceId().equals(userWorkspace.getWorkspace().getId())) {
+                    //  �뾽臾� 怨듦컙�뿉 李몄뿬�븯�뜕 �궗�슜�옄�뿉寃� �젣�쇅 �븣由� 諛� �솕硫� �깉濡쒓퀬移�
+                    this.simpMessagingTemplate.convertAndSendToUser(user.getAccount(), "/notification/workspace-disabled", this.messageAccessor.getMessage(MsgConstants.WORKSPACE_OUT, userWorkspace.getWorkspace().getName()));
+                }
+
+                //  李몄뿬 ��湲� �긽�깭濡� 蹂�寃쏀븯硫� �빐�떦 �궗�슜�옄�쓽 留덉�留� �젒洹� �뾽臾� 怨듦컙�뒗 �옄�떊�씠 愿�由ы븯�뒗 �뾽臾� 怨듦컙濡� 蹂�寃쏀븳�떎.
+                this.userService.updateLastMyWorkspace(user);
+            }
+            userWorkspace.setUseYn(!userWorkspace.getUseYn());
+        }
+
+        this.userWorkspaceRepository.saveAndFlush(userWorkspace);
     }
 
 
diff --git a/src/main/java/kr/wisestone/owl/vo/UserWorkspaceVo.java b/src/main/java/kr/wisestone/owl/vo/UserWorkspaceVo.java
index d6281a3..b4921bd 100644
--- a/src/main/java/kr/wisestone/owl/vo/UserWorkspaceVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/UserWorkspaceVo.java
@@ -9,6 +9,8 @@
     private String account;
     private Integer permission;
     private Boolean useYn;
+    private Long levelId;
+    private Long departmentId;
 
     public UserWorkspaceVo(){}
 
@@ -51,4 +53,20 @@
     public void setUseYn(Boolean useYn) {
         this.useYn = useYn;
     }
+
+    public Long getLevelId() {
+        return levelId;
+    }
+
+    public void setLevelId(Long levelId) {
+        this.levelId = levelId;
+    }
+
+    public Long getDepartmentId() {
+        return departmentId;
+    }
+
+    public void setDepartmentId(Long departmentId) {
+        this.departmentId = departmentId;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/condition/UserWorkspaceCondition.java b/src/main/java/kr/wisestone/owl/web/condition/UserWorkspaceCondition.java
index 3ee0ad1..011b209 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/UserWorkspaceCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/UserWorkspaceCondition.java
@@ -15,6 +15,8 @@
     private String name;
     private String account;
     private List<String> statuses = Lists.newArrayList();
+    private List<Long> levelIds = Lists.newArrayList();
+    private List<Long> departmentIds = Lists.newArrayList();
     private Integer page;
     private Integer pageSize;
 
@@ -25,6 +27,14 @@
 
         if (MapUtil.getStrings(conditions, "statuses") != null) {
             condition.setStatuses(MapUtil.getStrings(conditions, "statuses"));
+        }
+
+        if (MapUtil.getLongs(conditions, "levelIds") != null) {
+            condition.setLevelIds(MapUtil.getLongs(conditions, "levelIds"));
+        }
+
+        if (MapUtil.getLongs(conditions, "departmentIds") != null) {
+            condition.setDepartmentIds(MapUtil.getLongs(conditions, "departmentIds"));
         }
 
         return condition;
@@ -77,4 +87,20 @@
     public void setPageSize(Integer pageSize) {
         this.pageSize = pageSize;
     }
+
+    public List<Long> getLevelIds() {
+        return levelIds;
+    }
+
+    public void setLevelIds(List<Long> levelIds) {
+        this.levelIds = levelIds;
+    }
+
+    public List<Long> getDepartmentIds() {
+        return departmentIds;
+    }
+
+    public void setDepartmentIds(List<Long> departmentIds) {
+        this.departmentIds = departmentIds;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/form/UserWorkspaceForm.java b/src/main/java/kr/wisestone/owl/web/form/UserWorkspaceForm.java
index 9654658..14a53bf 100644
--- a/src/main/java/kr/wisestone/owl/web/form/UserWorkspaceForm.java
+++ b/src/main/java/kr/wisestone/owl/web/form/UserWorkspaceForm.java
@@ -10,6 +10,8 @@
 public class UserWorkspaceForm {
     private Long id;
     private Boolean useYn;
+    private Long levelId;
+    private Long departmentId;
 
     public UserWorkspaceForm(){}
 
@@ -34,4 +36,20 @@
     public void setUseYn(Boolean useYn) {
         this.useYn = useYn;
     }
+
+    public Long getLevelId() {
+        return levelId;
+    }
+
+    public void setLevelId(Long levelId) {
+        this.levelId = levelId;
+    }
+
+    public Long getDepartmentId() {
+        return departmentId;
+    }
+
+    public void setDepartmentId(Long departmentId) {
+        this.departmentId = departmentId;
+    }
 }
diff --git a/src/main/resources/mybatis/query-template/userWorkspace-template.xml b/src/main/resources/mybatis/query-template/userWorkspace-template.xml
index 0b89246..ffaeea5 100644
--- a/src/main/resources/mybatis/query-template/userWorkspace-template.xml
+++ b/src/main/resources/mybatis/query-template/userWorkspace-template.xml
@@ -9,7 +9,8 @@
         u.id as userId,
         u.name as userName,
         u.account as account,
-        /*u.permission as permission,*/
+        u.level_id as levelId,
+        u.department_id as departmentId,
         CASE WHEN uw.use_yn = 'Y' THEN 'true' ELSE 'false' END as useYn
         FROM
         user_workspace uw
@@ -34,6 +35,25 @@
                 </foreach>
             </when>
         </choose>
+
+        <choose>
+            <when test="levelIds.size != 0">
+                AND u.level_id IN
+                <foreach collection="levelIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
+
+        <choose>
+            <when test="departmentIds.size != 0">
+                AND u.department_id IN
+                <foreach collection="departmentIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
+
         limit #{pageSize} offset #{page};
     </select>
 
diff --git a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
index 1546743..732c3b0 100644
--- a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
+++ b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
@@ -334,7 +334,7 @@
 
                                         case "LEVEL_OPTION" :
                                             //makeTag += "<select class='form-control input-sm'  ng-model='data.levels[0].id' ng-options='levelName.id as levelName.levelName for levelName in data.levels' ></select>";
-                                            makeTag +="<select class='form-control input-sm' ng-model='data.levelId' ng-change=''><option ng-repeat='level in data.levels' ng-value='level.fieldKey'>{{::level.fieldValue}}</option></select>";
+                                            makeTag +="<select class='form-control input-sm' ng-model='data.levelId' ng-change='event.modifyUserWorkspace(data)'><option ng-repeat='level in data.levels' ng-value='level.fieldKey'>{{::level.fieldValue}}</option></select>";
                                             break;
 
                                         case "WORKSPACE_USE_YN" :
diff --git a/src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js b/src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js
index 51cd538..d7cf0ac 100644
--- a/src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js
+++ b/src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js
@@ -181,7 +181,7 @@
 
                             return statuses;
                         })(),
-                        levels : (function () {
+                        levelIds : (function () {
                             var levels = [];
 
                             angular.forEach($scope.vm.search.levels, function (level) {
@@ -190,7 +190,7 @@
 
                             return levels;
                         })(),
-                        departments : (function () {
+                        departmentIds : (function () {
                             var departments = [];
 
                             angular.forEach($scope.vm.search.departments, function (department) {
@@ -210,7 +210,7 @@
 
                             var idx = 0;
                             angular.forEach($scope.vm.responseData.data, function (data) {
-                                data.levelId = 3; /*$scope.vm.levels[idx].id;*/
+                                // data.levelId = $scope.vm.levels[idx].fieldKey;
                                 data.levels = [];
                                 data.levels = $scope.vm.levels.slice();
                                 idx++;
@@ -231,7 +231,6 @@
                         $resourceProvider.getPageContent(0, 1000))).then(function (result) {
 
                         if (result.data.message.status === "success") {
-                            $scope.vm.search.levels = result.data.data;
                             angular.forEach(result.data.data, function (level) {
                                 $scope.vm.levels.push({
                                     fieldKey : level.id,
diff --git a/src/main/webapp/views/workspace/workspaceUserConfig.html b/src/main/webapp/views/workspace/workspaceUserConfig.html
index 7562820..4fbc1dc 100644
--- a/src/main/webapp/views/workspace/workspaceUserConfig.html
+++ b/src/main/webapp/views/workspace/workspaceUserConfig.html
@@ -97,7 +97,7 @@
                                 <label>�벑湲�</label>
                                 <ng-dropdown-multiselect class="multiSelect cursor"
                                                          data-input-name="levels"
-                                                         selected-model="vm.search.levels.levelName"
+                                                         selected-model="vm.search.levels"
                                                          options="vm.levels"></ng-dropdown-multiselect>
                             </div>
                         </div>

--
Gitblit v1.8.0