| | |
| | | package kr.wisestone.owl.web.controller.Api; |
| | | |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import kr.wisestone.owl.constant.Constants; |
| | | import kr.wisestone.owl.constant.MsgConstants; |
| | | import kr.wisestone.owl.domain.Issue; |
| | | import kr.wisestone.owl.exception.ApiParameterException; |
| | |
| | | */ |
| | | @PostMapping(value = "/issue") |
| | | @ApiOperation(value = "이슈 추가", notes = "새로운 이슈를 추가한다.") |
| | | @ApiImplicitParam(name = "files", dataType = "file") |
| | | @ApiImplicitParams( |
| | | { |
| | | @ApiImplicitParam(name = "files", dataType = "file"), |
| | | @ApiImplicitParam(name = "token", paramType = "form"), |
| | | @ApiImplicitParam(name = "title", paramType = "form"), |
| | | @ApiImplicitParam(name = "description", paramType = "form"), |
| | | @ApiImplicitParam(name = "issueTypeId", paramType = "form"), |
| | | @ApiImplicitParam(name = "customFields", paramType = "form") |
| | | } |
| | | ) |
| | | |
| | | @ResponseStatus(HttpStatus.CREATED) |
| | | public |
| | | @ResponseBody |
| | | void addIssue(ApiIssueAddForm apiIssueAddForm, @RequestParam("files") List<MultipartFile> files) |
| | | Map<String, Object> addIssue(ApiIssueAddForm apiIssueAddForm, @RequestParam("files") List<MultipartFile> files) |
| | | throws OwlRuntimeException, CloneNotSupportedException { |
| | | Map<String, Object> resJsonData = new HashMap<>(); |
| | | |
| | |
| | | |
| | | List<Issue> issues = this.issueService.addApiIssue(issueApiForm); |
| | | // 버전 생성 |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Issue issue : issues) { |
| | | this.issueService.addIssueVersion(issue.getId(), issue.getRegisterId()); |
| | | if (sb.length() > 0) |
| | | sb.append(","); |
| | | sb.append(issue.getProject().getProjectKey()).append("-").append(issue.getIssueNumber()); |
| | | } |
| | | |
| | | resJsonData.put(Constants.RES_KEY_MSG_SUCCESS, sb.toString()); |
| | | return resJsonData; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @throws OwlRuntimeException 파라미터 오류시 발생 |
| | | * @throws CloneNotSupportedException 이슈 복사 시에 발생 |
| | | */ |
| | | @PutMapping(value = "/issue") |
| | | @PostMapping(value = "/issue/status") |
| | | @ApiOperation(value = "이슈 상태 수정", notes = "사용자 정의 필드가 동일한 기존 이슈를 변경한다.") |
| | | @ResponseStatus(HttpStatus.OK) |
| | | public |
| | | @ResponseBody |
| | | void modifyIssue(ApiIssueModifyForm apiIssueModifyForm) throws OwlRuntimeException, CloneNotSupportedException { |
| | | Map<String, Object> modifyIssue(ApiIssueModifyForm apiIssueModifyForm) throws OwlRuntimeException, CloneNotSupportedException { |
| | | Map<String, Object> resJsonData = new HashMap<>(); |
| | | |
| | | IssueApiForm issueApiForm = ConvertUtil.copyProperties(apiIssueModifyForm, IssueApiForm.class); |
| | | issueApiForm.parseCustomFields(apiIssueModifyForm.getCustomFields()); |
| | | issueApiForm.setApiType(IssueApiForm.ApiType.add); |
| | | issueApiForm.setApiType(IssueApiForm.ApiType.modify); |
| | | // 사용자 정의 필드가 없을 경우 검색을 할 수 없기 때문에 예외처리 |
| | | if (issueApiForm.getCustomFieldValues() == null || issueApiForm.getCustomFieldValues().size() == 0) { |
| | | throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_CUSTOM_FIELD_NOT_EXIST)); |
| | | } |
| | | |
| | | this.issueService.modifyIssue(issueApiForm, new ArrayList<>()); |
| | | List<Issue> issues = this.issueService.modifyIssue(issueApiForm, new ArrayList<>()); |
| | | if (issues != null && issues.size() > 0) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Issue issue : issues) { |
| | | if (sb.length() > 0) |
| | | sb.append(","); |
| | | sb.append(issue.getProject().getProjectKey()).append("-").append(issue.getIssueNumber()); |
| | | } |
| | | resJsonData.put(Constants.RES_KEY_MSG_SUCCESS, sb.toString()); |
| | | } |
| | | return resJsonData; |
| | | } |
| | | } |
| | | |