OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-12-02 c84a58af50fc2a966b8fd2420a1c26bb0ef3a916
이슈 타입에 따라 프로젝트 선택 변경
11개 파일 변경됨
127 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/domain/User.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/UserService.java 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java 24 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/UserVo.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java 12 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/UserController.java 13 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/UserForm.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/migration/V1_9__Alter_Table.sql 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/common/common.controller.js 41 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/user/user.service.js 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
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;
    }
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);
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;
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)
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;
    }
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;
    }
}
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
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;
    }
}
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;
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") {
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);