| | |
| | | } |
| | | |
| | | |
| | | |
| | | // API 를 통해 이슈 추가. |
| | | @Override |
| | | @Transactional |
| | | public Issue addApiIssue(IssueApiForm issueApiForm) { |
| | | private IssueForm convertToIssueForm(IssueApiForm issueApiForm, User user) { |
| | | if (issueApiForm.getIssueTypeId() == null) { |
| | | throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_PARAMETER_ISSUE_TYPE_ERROR)); |
| | | } |
| | |
| | | } |
| | | issueForm.setProjectId(project.getId()); |
| | | |
| | | // 토큰으로 유저 정보 가져오기 |
| | | String token = issueApiForm.getToken(); |
| | | UserVo userVo = this.apiTokenService.certification(token); |
| | | |
| | | // 해당 유저 정보가 현재 db에 있는지 확인 |
| | | User user = this.userService.getUser(userVo.getId()); |
| | | if (user != null) { |
| | | |
| | | // 기본값 입력하기 |
| | | IssueApiDefaultForm issueApiDefaultForm = new IssueApiDefaultForm(); |
| | | issueApiDefaultForm.setUserId(user.getId()); |
| | |
| | | IssueApiDefault issueApiDefault = this.issueApiDefaultService.find(issueApiDefaultForm); |
| | | if (issueApiDefault != null) { |
| | | ConvertUtil.copyProperties(issueApiDefault, issueForm); |
| | | issueForm.setId(null); |
| | | issueForm.setPriorityId(issueApiDefault.getPriority().getId()); |
| | | issueForm.setSeverityId(issueApiDefault.getSeverity().getId()); |
| | | } |
| | |
| | | // api 입력값 적용 |
| | | ConvertUtil.copyProperties(issueApiForm, issueForm); |
| | | |
| | | return addIssue(user, issueForm, issueApiForm.getMultipartFiles()); |
| | | return issueForm; |
| | | |
| | | } else { |
| | | throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_USER_ERROR)); |
| | | } |
| | | } |
| | | |
| | | private User convertToUser(String token) { |
| | | // 토큰으로 유저 정보 가져오기 |
| | | UserVo userVo = this.apiTokenService.certification(token); |
| | | |
| | | // 해당 유저 정보가 현재 db에 있는지 확인 |
| | | return this.userService.getUser(userVo.getId()); |
| | | } |
| | | |
| | | |
| | | // API 를 통해 이슈 추가. |
| | | @Override |
| | | @Transactional |
| | | public Issue addApiIssue(IssueApiForm issueApiForm) { |
| | | User user = convertToUser(issueApiForm.getToken()); |
| | | IssueForm issueForm = this.convertToIssueForm(issueApiForm, user); |
| | | |
| | | return addIssue(user, issueForm, issueApiForm.getMultipartFiles()); |
| | | } |
| | | |
| | | |
| | | |
| | | // 중복된 상위 이슈 검색 |
| | | private IssueVo findIssue(IssueApiForm issueApiForm, Long userId) { |
| | |
| | | issue.setIssueType(issueType); |
| | | issue.setPriority(priority); |
| | | issue.setSeverity(severity); |
| | | if (issueForm.getParentIssueId() != null){ |
| | | Issue parentIssue = this.getIssue(issueForm.getParentIssueId()); |
| | | issue.setParentIssue(parentIssue); |
| | | } |
| | | |
| | | issue.setIssueNumber(this.issueNumberGeneratorService.generateIssueNumber(project)); // 각 프로젝트의 고유 이슈 번호 생성 |
| | | |
| | |
| | | issueVo.setIssueHistoryVos(this.issueHistoryService.findIssueHistory(issue.getId())); |
| | | } |
| | | |
| | | // 이슈를 수정한다 |
| | | @Override |
| | | public Issue modifyIssue(IssueApiForm issueApiForm, List<MultipartFile> files) { |
| | | User user = this.convertToUser(issueApiForm.getToken()); |
| | | IssueForm issueForm = this.convertToIssueForm(issueApiForm, user); |
| | | |
| | | return this.modifyIssue(user, issueForm, files); |
| | | } |
| | | |
| | | // 이슈를 수정한다. |
| | | @Override |
| | | @Transactional |
| | | public Issue modifyIssue(IssueForm issueForm, List<MultipartFile> multipartFiles) { |
| | | User user = this.webAppUtil.getLoginUserObject(); |
| | | return modifyIssue(user, issueForm, multipartFiles); |
| | | } |
| | | |
| | | // 이슈를 수정한다. |
| | | @Override |
| | | @Transactional |
| | | public Issue modifyIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) { |
| | | // 사용하고 있는 업무 공간이 활성 상태인지 확인한다. 사용 공간에서 로그인한 사용자가 비활성인지 확인한다. |
| | | this.workspaceService.checkUseWorkspace(); |
| | | this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId()); |
| | | // 이슈 수정 권한 체크 |
| | | this.verifyIssueModifyPermission(issueForm.getId()); |
| | | // 프로젝트 유효성 체크 |
| | |
| | | //this.issueUserService.modifyIssueUser(issue, project.getWorkspace(), issueForm.getUserIds()); |
| | | // 담당부서 지정 |
| | | if(issueForm.getDepartmentIds().size()>0){ |
| | | this.issueDepartmentService.modifyIssueDepartment(issue, project.getWorkspace(), issueForm.getDepartmentIds()); |
| | | this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds()); |
| | | } |
| | | |
| | | // multipartFile 을 file Map List 객체로 변경한다. |
| | | List<Map<String, Object>> convertFileMaps = this.convertMultipartFileToFile(multipartFiles); |
| | | |
| | | // 첨부 파일 저장 - 비동기로 작동 |
| | | this.attachedFileService.addAttachedFile(convertFileMaps, issue, this.webAppUtil.getLoginUser().getAccount()); |
| | | this.attachedFileService.addAttachedFile(convertFileMaps, issue, user.getAccount()); |
| | | // 삭제된 첨부파일 처리 |
| | | this.attachedFileService.removeAttachedFiles(issueForm.getRemoveFiles()); |
| | | // 텍스트 에디터에 첨부한 파일을 이슈와 연결 |
| | |
| | | this.issueCustomFieldValueService.modifyIssueCustomFieldValue(issue, issueForm.getIssueCustomFields()); |
| | | // 이슈 이력 등록 |
| | | if (!StringUtils.isEmpty(detectIssueChange.toString())) { |
| | | this.issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, detectIssueChange.toString()); |
| | | this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString()); |
| | | } |
| | | // 사용자 시스템 기능 사용 정보 수집 |
| | | log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_MODIFY)); |