diff --git a/src/main/java/ttakkeun/ttakkeun_server/apiPayLoad/ApiResponse.java b/src/main/java/ttakkeun/ttakkeun_server/apiPayLoad/ApiResponse.java index 44601c4..c387c1a 100644 --- a/src/main/java/ttakkeun/ttakkeun_server/apiPayLoad/ApiResponse.java +++ b/src/main/java/ttakkeun/ttakkeun_server/apiPayLoad/ApiResponse.java @@ -29,6 +29,11 @@ public static ApiResponse of(BaseCode code, T result){ return new ApiResponse<>(true, code.getReasonHttpStatus().getCode() , code.getReasonHttpStatus().getMessage(), result); } + // 응답이 필요없을때 + public static ApiResponse onSuccess() { + return new ApiResponse<>(true, SuccessStatus._OK.getCode(), SuccessStatus._OK.getMessage(), null); + } + // 실패한 경우 public static ApiResponse onFailure(String code, String message, T data) { return new ApiResponse<>(false, code, message, data); diff --git a/src/main/java/ttakkeun/ttakkeun_server/apiPayLoad/code/status/ErrorStatus.java b/src/main/java/ttakkeun/ttakkeun_server/apiPayLoad/code/status/ErrorStatus.java index 81b9046..9ca6897 100644 --- a/src/main/java/ttakkeun/ttakkeun_server/apiPayLoad/code/status/ErrorStatus.java +++ b/src/main/java/ttakkeun/ttakkeun_server/apiPayLoad/code/status/ErrorStatus.java @@ -62,7 +62,10 @@ public enum ErrorStatus implements BaseErrorCode { // 투두 에러 TODO_ID_NOT_AVAILABLE(HttpStatus.BAD_REQUEST, "TODO4000", "유효하지 않은 Todo ID입니다."), TODO_STATUS_IS_DONE(HttpStatus.BAD_REQUEST, "TODO4001", "투두 항목이 이미 완료된 상태입니다."), - TODO_STATUS_IS_ONPROGRESS(HttpStatus.BAD_REQUEST, "TODO4002", "투두 항목이 완료되지 않았습니다."); + TODO_STATUS_IS_ONPROGRESS(HttpStatus.BAD_REQUEST, "TODO4002", "투두 항목이 완료되지 않았습니다."), + + // Tip 에러 + TIP_ID_NOT_AVAILABLE(HttpStatus.BAD_REQUEST, "TIP4000", "유효하지 않은 Tip ID입니다."); private final HttpStatus httpStatus; diff --git a/src/main/java/ttakkeun/ttakkeun_server/controller/TipController.java b/src/main/java/ttakkeun/ttakkeun_server/controller/TipController.java index 023244e..7b9539b 100644 --- a/src/main/java/ttakkeun/ttakkeun_server/controller/TipController.java +++ b/src/main/java/ttakkeun/ttakkeun_server/controller/TipController.java @@ -34,7 +34,7 @@ public ApiResponse createTip( @RequestParam("category") Category category) { TipCreateRequestDTO request = new TipCreateRequestDTO(title, content, category); - TipResponseDTO result = tipService.createTip(request, member.getMemberId(), null); + TipResponseDTO result = tipService.createTip(request, member.getMemberId()); return ApiResponse.onSuccess(result); } @@ -87,5 +87,14 @@ public ApiResponse> getBestTips( ) { List result = tipService.getBestTips(member); return ApiResponse.onSuccess(result); -} + } + + @Operation(summary = "팁 삭제 API") + @DeleteMapping("/{tip_id}") + public ApiResponse deleteTips( + @PathVariable("tip_id") Long tipId + ) { + tipService.deleteTip(tipId); + return ApiResponse.onSuccess(); + } } diff --git a/src/main/java/ttakkeun/ttakkeun_server/repository/LikeTipRepository.java b/src/main/java/ttakkeun/ttakkeun_server/repository/LikeTipRepository.java index 54a28d6..4882080 100644 --- a/src/main/java/ttakkeun/ttakkeun_server/repository/LikeTipRepository.java +++ b/src/main/java/ttakkeun/ttakkeun_server/repository/LikeTipRepository.java @@ -20,5 +20,7 @@ public interface LikeTipRepository extends JpaRepository { boolean existsByTipAndMember(Tip tip, Member member); + void deleteAllByTip(Tip tip); + //boolean existsIsLike(Tip tip, Member member); } diff --git a/src/main/java/ttakkeun/ttakkeun_server/service/TipService.java b/src/main/java/ttakkeun/ttakkeun_server/service/TipService.java index fa6b7f6..a062472 100644 --- a/src/main/java/ttakkeun/ttakkeun_server/service/TipService.java +++ b/src/main/java/ttakkeun/ttakkeun_server/service/TipService.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import ttakkeun.ttakkeun_server.apiPayLoad.ExceptionHandler; import ttakkeun.ttakkeun_server.dto.tip.TipCreateRequestDTO; import ttakkeun.ttakkeun_server.dto.tip.TipResponseDTO; @@ -23,6 +24,8 @@ import java.util.List; import java.util.stream.Collectors; +import static ttakkeun.ttakkeun_server.apiPayLoad.code.status.ErrorStatus.TIP_ID_NOT_AVAILABLE; + @Service @RequiredArgsConstructor @@ -36,7 +39,7 @@ public class TipService { // 팁 생성 @Transactional - public TipResponseDTO createTip(TipCreateRequestDTO request, Long memberId, List imageFiles) { + public TipResponseDTO createTip(TipCreateRequestDTO request, Long memberId) { Member member = memberService.findMemberById(memberId) .orElseThrow(() -> new IllegalArgumentException("유효하지 않은 사용자 ID입니다.")); @@ -178,6 +181,19 @@ public List getBestTips(Member member) { )) .collect(Collectors.toList()); } + + @Transactional + public void deleteTip(Long tipId) { + // 먼저 해당 팁이 존재하는지 확인 + Tip tip = tipRepository.findById(tipId) + .orElseThrow(() -> new ExceptionHandler(TIP_ID_NOT_AVAILABLE)); + + // LikeTip 관련 데이터 삭제 + likeTipRepository.deleteAllByTip(tip); + + // 팁 삭제 + tipRepository.delete(tip); + } }