OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-11-04 f2b3cbd3a0639f55eef38a4e90ad52ef8e63b1c1
"사용자 관리" 프론트 수정 완료!
8개 파일 변경됨
155 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/impl/UserWorkspaceServiceImpl.java 60 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/UserWorkspaceVo.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/UserWorkspaceCondition.java 26 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/UserWorkspaceForm.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/userWorkspace-template.xml 22 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/workspace/workspaceUserConfig.html 2 ●●● 패치 | 보기 | raw | blame | 히스토리
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);
    }
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;
    }
}
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;
    }
}
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;
    }
}
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>
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" :
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,
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>