Skip to content

Commit

Permalink
refactor: #118-Swagger 작성 및 컨트롤러 관련 오류 해결
Browse files Browse the repository at this point in the history
  • Loading branch information
BlueBerrySoda committed May 1, 2024
1 parent c175f40 commit 6d30f93
Showing 1 changed file with 28 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
import com.example.capstone.domain.qna.service.FAQService;
import com.example.capstone.domain.qna.service.ImageService;
import com.example.capstone.global.dto.ApiResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
Expand All @@ -32,34 +35,48 @@ public class FAQController {
private final JwtTokenProvider jwtTokenProvider;

@PostMapping("/create")
public ResponseEntity<?> createFAQ(@RequestPart FAQPostRequest request,
@RequestPart List<MultipartFile> multipartFileList) {
@Operation(summary = "FAQ글 생성", description = "request 정보를 기반으로 FAQ글을 생성합니다. imgList 정보를 통해 이미지 파일을 업로드 합니다")
@ApiResponse(responseCode = "200", description = "request 정보를 기반으로 생성된 FAQ글과 imgList을 통해 업로드된 이미지 파일의 url 정보가 함께 반환됩니다.")
public ResponseEntity<?> createFAQ( @Parameter(description = "FAQ글 생성을 위한 파라미터입니다. 제목, 작성자, 질문, 답변, 언어, 태그값이 필요합니다.", required = true)
@RequestPart FAQPostRequest request,
@Parameter(description = "FAQ글에 첨부될 이미지입니다. List 형태로 입력되야 합니다.")
@RequestPart(required = false) List<MultipartFile> imgList) {
List<String> urlList = new ArrayList<>();
FAQResponse faq = faqService.createFAQ(request);
if(multipartFileList != null) {
urlList = imageService.upload(multipartFileList, faq.id(), true);
if(imgList != null) {
System.out.println(imgList.size());
urlList = imageService.upload(imgList, faq.id(), true);
}
return ResponseEntity
.ok(new ApiResult<>("Successfully create FAQ", Map.of("content", faq, "imgUrl", urlList)));
}

@GetMapping("/read")
public ResponseEntity<?> readFAQ(@RequestBody Long id) {
@Operation(summary = "FAQ글 읽기", description = "FAQ글을 읽어 반환합니다.")
@ApiResponse(responseCode = "200", description = "FAQ글의 내용이 담긴 content와 첨부이미지 주소가 담긴 imgUrl이 반환됩니다.")
public ResponseEntity<?> readFAQ( @Parameter(description = "읽을 FAQ글의 id가 필요합니다.", required = true)
@RequestParam Long id) {
FAQResponse faqResponse = faqService.getFAQ(id);
List<String> urlList = imageService.getUrlListByFAQId(id);
return ResponseEntity
.ok(new ApiResult<>("Successfully read FAQ", Map.of("content", faqResponse, "imgUrl", urlList)));
}

@PutMapping("/update")
public ResponseEntity<?> updateFAQ(@RequestBody FAQPutRequest request) {
@Operation(summary = "FAQ글 수정", description = "FAQ글을 수정합니다.")
@ApiResponse(responseCode = "200", description = "완료시 200을 반환합니다.")
public ResponseEntity<?> updateFAQ( @Parameter(description = "FAQ글 수정을 위한 파라미터입니다. FAQ글 id, 제목, 작성자, 질문, 답변, 언어, 태그값이 필요합니다.", required = true)
@RequestBody FAQPutRequest request) {
faqService.updateFAQ(request);
return ResponseEntity
.ok(new ApiResult<>("Successfully update FAQ", 200));
}

@DeleteMapping("/erase")
public ResponseEntity<?> eraseFAQ(@RequestBody Long id) {
@Operation(summary = "FAQ글 삭제", description = "FAQ글을 삭제합니다.")
@ApiResponse(responseCode = "200", description = "완료시 200을 반환합니다.")
public ResponseEntity<?> eraseFAQ( @Parameter(description = "삭제할 FAQ글의 id가 필요합니다.", required = true)
@RequestParam Long id) {
List<String> urlList = imageService.getUrlListByFAQId(id);
for(String url : urlList) {
imageService.deleteImageFromS3(url);
Expand All @@ -71,7 +88,10 @@ public ResponseEntity<?> eraseFAQ(@RequestBody Long id) {
}

@GetMapping("/list")
public ResponseEntity<?> listFAQ(FAQListRequest request) {
@Operation(summary = "FAQ글의 미리보기 리스트 생성", description = "FAQ글 리스트를 생성하여 반환합니다.")
@ApiResponse(responseCode = "200", description = "FAQ글의 미리보기 리스트가 반환됩니다.")
public ResponseEntity<?> listFAQ( @Parameter(description = "FAQ글 리스트를 생성하기 위한 파라미터입니다. cursorId, 언어, 검색어, 태그값이 필요합니다.", required = true)
@RequestBody FAQListRequest request) {
Map<String, Object> response = faqService.getFAQList(request.cursorId(), request.language(), request.word(), request.tag());
return ResponseEntity
.ok(new ApiResult<>("Successfully create FAQ list", response));
Expand Down

0 comments on commit 6d30f93

Please sign in to comment.