package kr.wisestone.owl.web.controller.Api;
|
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiOperation;
|
import kr.wisestone.owl.constant.MsgConstants;
|
import kr.wisestone.owl.domain.Issue;
|
import kr.wisestone.owl.exception.OwlRuntimeException;
|
import kr.wisestone.owl.service.IssueService;
|
import kr.wisestone.owl.util.ConvertUtil;
|
import kr.wisestone.owl.web.controller.BaseController;
|
import kr.wisestone.owl.web.form.ApiIssueAddForm;
|
import kr.wisestone.owl.web.form.ApiIssueModifyForm;
|
import kr.wisestone.owl.web.form.IssueApiForm;
|
import org.json.simple.parser.ParseException;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* OWL-API 컨트롤러
|
*/
|
@Controller
|
@RequestMapping("/api")
|
public class ApiController extends BaseController {
|
|
@Autowired
|
private IssueService issueService;
|
|
|
/**
|
* 이슈 추가
|
* @param apiIssueAddForm 입력 폼 데이터
|
* @param files 파일
|
* @return JSON
|
* @throws OwlRuntimeException 파라미터 오류시 발생
|
* @throws CloneNotSupportedException 이슈 복사 시에 발생
|
*/
|
@PostMapping(value = "/issue")
|
@ApiOperation(value = "이슈 추가", notes = "새로운 이슈를 추가한다.")
|
@ApiImplicitParam(name = "files", required = false, dataType = "file")
|
public
|
@ResponseBody
|
Map<String, Object> addIssue(ApiIssueAddForm apiIssueAddForm, @RequestParam("files") List<MultipartFile> files) throws OwlRuntimeException, CloneNotSupportedException, ParseException {
|
Map<String, Object> resJsonData = new HashMap<>();
|
|
IssueApiForm issueApiForm = ConvertUtil.copyProperties(apiIssueAddForm, IssueApiForm.class);
|
// String str = request.getParameter(Constants.REQ_KEY_CONTENT);
|
issueApiForm.setMultipartFiles(files);
|
issueApiForm.parseCustomFields(apiIssueAddForm.getCustomFields());
|
issueApiForm.setApiType(IssueApiForm.ApiType.add);
|
// 사용자 정의 필드가 없을 경우 검색을 할 수 없기 때문에 예외처리
|
if (issueApiForm.getCustomFieldValues() == null || issueApiForm.getCustomFieldValues().size() == 0) {
|
throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_CUSTOM_FIELD_NOT_EXIST));
|
}
|
|
List<Issue> issues = this.issueService.addApiIssue(issueApiForm);
|
// 버전 생성
|
for (Issue issue : issues) {
|
this.issueService.addIssueVersion(issue.getId(), issue.getRegisterId());
|
}
|
|
return this.setSuccessMessage(resJsonData);
|
}
|
|
/**
|
* 이슈 상태 수정
|
* @param apiIssueModifyForm 수정 폼 데이터
|
* @return JSON
|
* @throws OwlRuntimeException 파라미터 오류시 발생
|
* @throws CloneNotSupportedException 이슈 복사 시에 발생
|
*/
|
@PostMapping(value = "/issue/1")
|
@ApiOperation(value = "이슈 상태 수정", notes = "사용자 정의 필드가 동일한 기존 이슈를 변경한다.")
|
public
|
@ResponseBody
|
Map<String, Object> modifyIssue(ApiIssueModifyForm apiIssueModifyForm) throws OwlRuntimeException, CloneNotSupportedException, ParseException {
|
Map<String, Object> resJsonData = new HashMap<>();
|
|
IssueApiForm issueApiForm = ConvertUtil.copyProperties(apiIssueModifyForm, IssueApiForm.class);
|
issueApiForm.parseCustomFields(apiIssueModifyForm.getCustomFields());
|
issueApiForm.setApiType(IssueApiForm.ApiType.add);
|
// 사용자 정의 필드가 없을 경우 검색을 할 수 없기 때문에 예외처리
|
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<>());
|
|
return this.setSuccessMessage(resJsonData);
|
}
|
}
|