Skip to content

Commit

Permalink
Merge pull request #68 from BudgetBuddiesTeam/feat/#59
Browse files Browse the repository at this point in the history
[Feat] 댓글 수정 API 추가 & CommentService 분리
  • Loading branch information
wnd01jun authored Aug 1, 2024
2 parents 635ebb5 + ab07c62 commit fd7341a
Show file tree
Hide file tree
Showing 13 changed files with 540 additions and 374 deletions.
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);
}



}
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);

}

This file was deleted.

Loading

0 comments on commit fd7341a

Please sign in to comment.