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