-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
[Feat] 댓글 수정 API 추가 & CommentService 분리
- Loading branch information
Showing
13 changed files
with
540 additions
and
374 deletions.
There are no files selected for viewing
166 changes: 92 additions & 74 deletions
166
src/main/java/com/bbteam/budgetbuddies/domain/comment/controller/CommentController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,83 +1,101 @@ | ||
package com.bbteam.budgetbuddies.domain.comment.controller; | ||
|
||
|
||
import com.bbteam.budgetbuddies.domain.comment.dto.CommentRequestDto; | ||
import com.bbteam.budgetbuddies.domain.comment.dto.CommentResponseDto; | ||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.Parameter; | ||
import io.swagger.v3.oas.annotations.Parameters; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponses; | ||
import com.bbteam.budgetbuddies.domain.comment.service.CommentService; | ||
import org.springframework.beans.factory.annotation.Qualifier; | ||
import org.springframework.data.domain.Page; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.data.web.PageableDefault; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
|
||
public interface CommentController { | ||
@Operation(summary = "[User] 특정 할인 정보 게시글에 댓글달기", description = "특정 할인 정보 게시글에 댓글을 다는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "userId", description = "현재 댓글을 다는 유저 id입니다. parameter"), | ||
@Parameter(name = "discountInfoId", description = "댓글을 다는 할인 정보 게시글 id입니다. requestBody"), | ||
@Parameter(name = "content", description = "댓글 내용입니다. requestBody"), | ||
}) | ||
ResponseEntity<CommentResponseDto.DiscountInfoSuccessDto> saveDiscountInfoComment( | ||
Long userId, | ||
CommentRequestDto.DiscountInfoCommentDto discountInfoCommentDto); | ||
|
||
|
||
@Operation(summary = "[User] 특정 할인 정보 게시글의 댓글 조회하기", description = "특정 할인 정보 게시글의 댓글을 가져오는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "discountInfoId", description = "댓글을 가져올 할인 정보 게시글 id입니다. parameter"), | ||
@Parameter(name = "page", description = "페이징을 위한 페이지 번호입니다. 0부터 시작합니다. parameter"), | ||
@Parameter(name = "size", description = "페이징을 위한 페이지 사이즈입니다. default는 20입니다. parameter") | ||
}) | ||
ResponseEntity<Page<CommentResponseDto.DiscountInfoCommentDto>> findAllByDiscountInfo( | ||
Long discountInfoId, | ||
Pageable pageable); | ||
|
||
@Operation(summary = "[User] 특정 지원 정보 게시글에 댓글달기", description = "특정 지원 정보 게시글에 댓글을 다는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "userId", description = "현재 댓글을 다는 유저 id입니다. parameter"), | ||
@Parameter(name = "supportInfoId", description = "댓글을 다는 지원 정보 게시글 id입니다. requestBody"), | ||
@Parameter(name = "content", description = "댓글 내용입니다. requestBody"), | ||
}) | ||
ResponseEntity<CommentResponseDto.SupportInfoSuccessDto> saveSupportInfoComment( | ||
Long userId, | ||
CommentRequestDto.SupportInfoCommentDto supportInfoCommentDto); | ||
|
||
@Operation(summary = "[User] 특정 지원 정보 게시글의 댓글 조회하기", description = "특정 지원 정보 게시글의 댓글을 가져오는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "supportInfoId", description = "댓글을 가져올 지원 정보 게시글 id입니다. parameter"), | ||
@Parameter(name = "page", description = "페이징을 위한 페이지 번호입니다. 0부터 시작합니다. parameter"), | ||
@Parameter(name = "size", description = "페이징을 위한 페이지 사이즈입니다. default는 20입니다. parameter") | ||
|
||
|
||
}) | ||
ResponseEntity<Page<CommentResponseDto.SupportInfoCommentDto>> findAllBySupportInfo( | ||
Long supportInfoId, | ||
Pageable pageable); | ||
|
||
@Operation(summary = "[User] 특정 댓글 삭제하기", description = "특정 댓글을 삭제하는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "commentId", description = "삭제할 댓글 id 입니다. parameter") | ||
}) | ||
@GetMapping("/comments/delete") | ||
ResponseEntity<String> deleteComment(Long commentId); | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
@RestController | ||
public class CommentController implements CommentControllerApi { | ||
|
||
@Qualifier("discountCommentService") | ||
private final CommentService<CommentRequestDto.DiscountInfoCommentDto, | ||
CommentResponseDto.DiscountInfoCommentDto> discountCommentService; | ||
|
||
@Qualifier("supportCommentService") | ||
private final CommentService<CommentRequestDto.SupportInfoCommentDto, | ||
CommentResponseDto.SupportInfoCommentDto> supportCommentService; | ||
|
||
public CommentController(CommentService<CommentRequestDto.DiscountInfoCommentDto, | ||
CommentResponseDto.DiscountInfoCommentDto> discountCommentService, | ||
CommentService<CommentRequestDto.SupportInfoCommentDto, | ||
CommentResponseDto.SupportInfoCommentDto> supportCommentService) { | ||
this.discountCommentService = discountCommentService; | ||
this.supportCommentService = supportCommentService; | ||
} | ||
|
||
@PostMapping("/discounts/comments") | ||
public ResponseEntity<CommentResponseDto.DiscountInfoCommentDto> saveDiscountInfoComment( | ||
@RequestParam("userId") Long userId, | ||
@RequestBody CommentRequestDto.DiscountInfoCommentDto discountInfoCommentDto){ | ||
CommentResponseDto.DiscountInfoCommentDto dto = discountCommentService.saveComment(userId, discountInfoCommentDto); | ||
return ResponseEntity.ok(dto); | ||
} | ||
|
||
|
||
@GetMapping("/discounts/comments") | ||
public ResponseEntity<Page<CommentResponseDto.DiscountInfoCommentDto>> findAllByDiscountInfo( | ||
@RequestParam("discountInfoId") Long discountInfoId, | ||
@PageableDefault(size = 20, page = 0) Pageable pageable){ | ||
Page<CommentResponseDto.DiscountInfoCommentDto> result = discountCommentService.findByInfoWithPaging(discountInfoId, pageable); | ||
return ResponseEntity.ok(result); | ||
} | ||
|
||
|
||
@PostMapping("/supports/comments") | ||
public ResponseEntity<CommentResponseDto.SupportInfoCommentDto> saveSupportInfoComment( | ||
@RequestParam("userId") Long userId, | ||
@RequestBody CommentRequestDto.SupportInfoCommentDto supportInfoCommentDto){ | ||
CommentResponseDto.SupportInfoCommentDto dto = supportCommentService.saveComment(userId, supportInfoCommentDto); | ||
return ResponseEntity.ok(dto); | ||
} | ||
|
||
|
||
@GetMapping("/supports/comments") | ||
public ResponseEntity<Page<CommentResponseDto.SupportInfoCommentDto>> findAllBySupportInfo( | ||
@RequestParam("supportInfoId") Long supportInfoId, | ||
@PageableDefault(size = 20, page = 0)Pageable pageable){ | ||
Page<CommentResponseDto.SupportInfoCommentDto> result = supportCommentService.findByInfoWithPaging(supportInfoId, pageable); | ||
return ResponseEntity.ok(result); | ||
} | ||
|
||
@PostMapping("/comments/delete") | ||
public ResponseEntity<String> deleteComment(@RequestParam("commentId") Long commentId) { | ||
discountCommentService.deleteComment(commentId); | ||
return ResponseEntity.ok("ok"); | ||
} | ||
|
||
@GetMapping("/supports/comments/modify") | ||
public ResponseEntity<CommentResponseDto.SupportInfoCommentDto> findSupportOne(@RequestParam("commentId")Long commentId) { | ||
CommentResponseDto.SupportInfoCommentDto result = supportCommentService.findCommentOne(commentId); | ||
return ResponseEntity.ok(result); | ||
} | ||
|
||
@PostMapping("/supports/comments/modify") | ||
public ResponseEntity<CommentResponseDto.SupportInfoCommentDto> modifySupportOne( | ||
@RequestBody CommentRequestDto.CommentModifyDto dto) { | ||
CommentResponseDto.SupportInfoCommentDto result = supportCommentService.modifyComment(dto); | ||
return ResponseEntity.ok(result); | ||
} | ||
|
||
@GetMapping("/discounts/comments/modify") | ||
public ResponseEntity<CommentResponseDto.DiscountInfoCommentDto> findDiscountOne(@RequestParam("commentId")Long commentId) { | ||
CommentResponseDto.DiscountInfoCommentDto result = discountCommentService.findCommentOne(commentId); | ||
return ResponseEntity.ok(result); | ||
} | ||
|
||
@PostMapping("/discounts/comments/modify") | ||
public ResponseEntity<CommentResponseDto.DiscountInfoCommentDto> modifyDiscountOne( | ||
@RequestBody CommentRequestDto.CommentModifyDto dto) { | ||
CommentResponseDto.DiscountInfoCommentDto result = discountCommentService.modifyComment(dto); | ||
return ResponseEntity.ok(result); | ||
} | ||
|
||
|
||
|
||
} |
126 changes: 126 additions & 0 deletions
126
src/main/java/com/bbteam/budgetbuddies/domain/comment/controller/CommentControllerApi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
package com.bbteam.budgetbuddies.domain.comment.controller; | ||
|
||
|
||
import com.bbteam.budgetbuddies.domain.comment.dto.CommentRequestDto; | ||
import com.bbteam.budgetbuddies.domain.comment.dto.CommentResponseDto; | ||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.Parameter; | ||
import io.swagger.v3.oas.annotations.Parameters; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponses; | ||
import org.springframework.data.domain.Page; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
|
||
public interface CommentControllerApi { | ||
@Operation(summary = "[User] 특정 할인 정보 게시글에 댓글달기", description = "특정 할인 정보 게시글에 댓글을 다는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "userId", description = "현재 댓글을 다는 유저 id입니다. parameter"), | ||
@Parameter(name = "discountInfoId", description = "댓글을 다는 할인 정보 게시글 id입니다. requestBody"), | ||
@Parameter(name = "content", description = "댓글 내용입니다. requestBody"), | ||
}) | ||
ResponseEntity<CommentResponseDto.DiscountInfoCommentDto> saveDiscountInfoComment( | ||
Long userId, | ||
CommentRequestDto.DiscountInfoCommentDto discountInfoCommentDto); | ||
|
||
|
||
@Operation(summary = "[User] 특정 할인 정보 게시글의 댓글 조회하기", description = "특정 할인 정보 게시글의 댓글을 가져오는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "discountInfoId", description = "댓글을 가져올 할인 정보 게시글 id입니다. parameter"), | ||
@Parameter(name = "page", description = "페이징을 위한 페이지 번호입니다. 0부터 시작합니다. parameter"), | ||
@Parameter(name = "size", description = "페이징을 위한 페이지 사이즈입니다. default는 20입니다. parameter") | ||
}) | ||
ResponseEntity<Page<CommentResponseDto.DiscountInfoCommentDto>> findAllByDiscountInfo( | ||
Long discountInfoId, | ||
Pageable pageable); | ||
|
||
@Operation(summary = "[User] 특정 지원 정보 게시글에 댓글달기", description = "특정 지원 정보 게시글에 댓글을 다는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "userId", description = "현재 댓글을 다는 유저 id입니다. parameter"), | ||
@Parameter(name = "supportInfoId", description = "댓글을 다는 지원 정보 게시글 id입니다. requestBody"), | ||
@Parameter(name = "content", description = "댓글 내용입니다. requestBody"), | ||
}) | ||
ResponseEntity<CommentResponseDto.SupportInfoCommentDto> saveSupportInfoComment( | ||
Long userId, | ||
CommentRequestDto.SupportInfoCommentDto supportInfoCommentDto); | ||
|
||
@Operation(summary = "[User] 특정 지원 정보 게시글의 댓글 조회하기", description = "특정 지원 정보 게시글의 댓글을 가져오는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "supportInfoId", description = "댓글을 가져올 지원 정보 게시글 id입니다. parameter"), | ||
@Parameter(name = "page", description = "페이징을 위한 페이지 번호입니다. 0부터 시작합니다. parameter"), | ||
@Parameter(name = "size", description = "페이징을 위한 페이지 사이즈입니다. default는 20입니다. parameter") | ||
|
||
|
||
}) | ||
ResponseEntity<Page<CommentResponseDto.SupportInfoCommentDto>> findAllBySupportInfo( | ||
Long supportInfoId, | ||
Pageable pageable); | ||
|
||
@Operation(summary = "[User] 특정 댓글 삭제하기", description = "특정 댓글을 삭제하는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "commentId", description = "삭제할 댓글 id 입니다. parameter") | ||
}) | ||
ResponseEntity<String> deleteComment(Long commentId); | ||
|
||
@Operation(summary = "[User] SupportInfo의 댓글 요청 API ", description = "특정 댓글을 요청하는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "commentId", description = "조회할 댓글 id 입니다. parameter") | ||
}) | ||
ResponseEntity<CommentResponseDto.SupportInfoCommentDto> findSupportOne(@RequestParam("commentId")Long commentId); | ||
|
||
@Operation(summary = "[User] SupprotInfo의 댓글 변경 API", description = "특정 댓글을 변경하는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "commentId", description = "변경할 댓글 id 입니다. requestbody"), | ||
@Parameter(name = "comment", description = "변경할 댓글 내용입니다.. requestbody") | ||
|
||
}) | ||
ResponseEntity<CommentResponseDto.SupportInfoCommentDto> modifySupportOne( | ||
@RequestBody CommentRequestDto.CommentModifyDto dto); | ||
|
||
|
||
@Operation(summary = "[User] DiscountInfo의 댓글 요청 API ", description = "특정 댓글을 요청하는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "commentId", description = "조회할 댓글 id 입니다. parameter") | ||
}) | ||
ResponseEntity<CommentResponseDto.DiscountInfoCommentDto> findDiscountOne(@RequestParam("commentId")Long commentId); | ||
|
||
@Operation(summary = "[User] DiscountInfo의 댓글 변경 API", description = "특정 댓글을 변경하는 API입니다.") | ||
@ApiResponses({ | ||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "OK, 성공"), | ||
}) | ||
@Parameters({ | ||
@Parameter(name = "commentId", description = "변경할 댓글 id 입니다. requestbody"), | ||
@Parameter(name = "comment", description = "변경할 댓글 내용입니다.. requestbody") | ||
|
||
}) | ||
ResponseEntity<CommentResponseDto.DiscountInfoCommentDto> modifyDiscountOne( | ||
@RequestBody CommentRequestDto.CommentModifyDto dto); | ||
|
||
} |
60 changes: 0 additions & 60 deletions
60
src/main/java/com/bbteam/budgetbuddies/domain/comment/controller/CommentControllerImpl.java
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.