From 0ae2c9f7d9c4717b0003f2c112235ffd93cf8d43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=9C=A4?= <63058347+JungYoonShin@users.noreply.github.com> Date: Thu, 5 Sep 2024 01:43:38 +0900 Subject: [PATCH] =?UTF-8?q?[=E2=99=BB=EF=B8=8Frefactor/#96]:=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=9E=A9=20=EC=83=89=EC=83=81=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?api=20=EB=A6=AC=ED=8C=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ScrapController.java | 12 ++++++------ .../scrap/request/CreateScrapRequestDto.java | 2 +- .../scrap/request/UpdateScrapRequestDto.java | 2 +- .../exception/enums/ErrorMessage.java | 2 +- .../repository/scrap/ScrapRepository.java | 2 ++ .../service/ScrapServiceImpl.java | 19 ++++++++++--------- 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/terning/terningserver/controller/ScrapController.java b/src/main/java/org/terning/terningserver/controller/ScrapController.java index 8660801..17d1c93 100644 --- a/src/main/java/org/terning/terningserver/controller/ScrapController.java +++ b/src/main/java/org/terning/terningserver/controller/ScrapController.java @@ -29,20 +29,20 @@ public ResponseEntity createScrap( return ResponseEntity.ok(SuccessResponse.of(SUCCESS_CREATE_SCRAP)); } - @DeleteMapping("/scraps/{scrapId}") + @DeleteMapping("/scraps/{internshipAnnouncementId}") public ResponseEntity deleteScrap( @AuthenticationPrincipal Long userId, - @PathVariable Long scrapId) { - scrapService.deleteScrap(scrapId, userId); + @PathVariable Long internshipAnnouncementId) { + scrapService.deleteScrap(internshipAnnouncementId, userId); return ResponseEntity.ok(SuccessResponse.of(SUCCESS_DELETE_SCRAP)); } - @PatchMapping("/scraps/{scrapId}") + @PatchMapping("/scraps/{internshipAnnouncementId}") public ResponseEntity updateScrapColor( @AuthenticationPrincipal Long userId, - @PathVariable Long scrapId, + @PathVariable Long internshipAnnouncementId, @RequestBody UpdateScrapRequestDto request) { - scrapService.updateScrapColor(scrapId, request, userId); + scrapService.updateScrapColor(internshipAnnouncementId, request, userId); return ResponseEntity.ok(SuccessResponse.of(SUCCESS_UPDATE_SCRAP)); } } diff --git a/src/main/java/org/terning/terningserver/dto/scrap/request/CreateScrapRequestDto.java b/src/main/java/org/terning/terningserver/dto/scrap/request/CreateScrapRequestDto.java index 37fb183..374089d 100644 --- a/src/main/java/org/terning/terningserver/dto/scrap/request/CreateScrapRequestDto.java +++ b/src/main/java/org/terning/terningserver/dto/scrap/request/CreateScrapRequestDto.java @@ -1,7 +1,7 @@ package org.terning.terningserver.dto.scrap.request; public record CreateScrapRequestDto( - int color + String color ) { } diff --git a/src/main/java/org/terning/terningserver/dto/scrap/request/UpdateScrapRequestDto.java b/src/main/java/org/terning/terningserver/dto/scrap/request/UpdateScrapRequestDto.java index 9843b8e..51851df 100644 --- a/src/main/java/org/terning/terningserver/dto/scrap/request/UpdateScrapRequestDto.java +++ b/src/main/java/org/terning/terningserver/dto/scrap/request/UpdateScrapRequestDto.java @@ -1,6 +1,6 @@ package org.terning.terningserver.dto.scrap.request; public record UpdateScrapRequestDto( - int color + String color ) { } diff --git a/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java b/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java index 8d43209..6234ade 100644 --- a/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java +++ b/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java @@ -37,7 +37,7 @@ public enum ErrorMessage { NOT_FOUND_INTERN_CATEGORY(404, "해당 인턴 공고는 존재하지 않습니다"), NOT_FOUND_INTERN_EXCEPTION(404, "해당 인턴 공고는 존재하지 않습니다"), NOT_FOUND_USER_EXCEPTION(404, "해당 유저가 존재하지 않습니다"), - NOT_FOUND_SCRAP(404, "해당 스크랩 id에 대한 스크랩 정보가 존재하지 않습니다"), + NOT_FOUND_SCRAP(404, "스크랩 정보가 존재하지 않습니다"), FORBIDDEN_DELETE_SCRAP(403, "해당 유저가 스크랩하지 않았으므로 스크랩 취소가 불가합니다"); private final int status; diff --git a/src/main/java/org/terning/terningserver/repository/scrap/ScrapRepository.java b/src/main/java/org/terning/terningserver/repository/scrap/ScrapRepository.java index 16dac45..542f0fd 100644 --- a/src/main/java/org/terning/terningserver/repository/scrap/ScrapRepository.java +++ b/src/main/java/org/terning/terningserver/repository/scrap/ScrapRepository.java @@ -14,6 +14,8 @@ public interface ScrapRepository extends JpaRepository, ScrapReposi // List findByUserIdAndInternshipAnnouncement_Deadline(Long userId, LocalDate deadline); + void deleteByInternshipAnnouncementIdAndUserId(Long internshipId, Long userId); + List findByUserIdAndInternshipAnnouncement_DeadlineBetween(Long userId, LocalDate start, LocalDate end); } diff --git a/src/main/java/org/terning/terningserver/service/ScrapServiceImpl.java b/src/main/java/org/terning/terningserver/service/ScrapServiceImpl.java index 9a08170..54516a5 100644 --- a/src/main/java/org/terning/terningserver/service/ScrapServiceImpl.java +++ b/src/main/java/org/terning/terningserver/service/ScrapServiceImpl.java @@ -14,6 +14,7 @@ import org.terning.terningserver.dto.calendar.response.MonthlyListResponseDto; import org.terning.terningserver.dto.user.response.UpcomingScrapResponseDto; import org.terning.terningserver.exception.CustomException; +import org.terning.terningserver.exception.enums.ErrorMessage; import org.terning.terningserver.repository.internship_announcement.InternshipRepository; import org.terning.terningserver.repository.scrap.ScrapRepository; import org.terning.terningserver.repository.user.UserRepository; @@ -135,17 +136,17 @@ public void createScrap(Long internshipAnnouncementId, CreateScrapRequestDto req @Override @Transactional - public void deleteScrap(Long scrapId, Long userId) { - Scrap scrap = findScrap(scrapId); + public void deleteScrap(Long internshipAnnouncementId, Long userId) { + Scrap scrap = findScrap(internshipAnnouncementId, userId); scrap.getInternshipAnnouncement().updateScrapCount(-1); verifyScrapOwner(scrap, userId); - scrapRepository.deleteById(scrapId); + scrapRepository.deleteByInternshipAnnouncementIdAndUserId(internshipAnnouncementId, userId); } @Override @Transactional - public void updateScrapColor(Long scrapId, UpdateScrapRequestDto request, Long userId) { - Scrap scrap = findScrap(scrapId); + public void updateScrapColor(Long internshipAnnouncementId, UpdateScrapRequestDto request, Long userId) { + Scrap scrap = findScrap(internshipAnnouncementId, userId); verifyScrapOwner(scrap, userId); scrap.updateColor(findColor(request.color())); } @@ -157,9 +158,9 @@ private void verifyScrapOwner(Scrap scrap, Long userId) { } } - private Color findColor(int color) { + private Color findColor(String color) { return Arrays.stream(Color.values()) - .filter(c-> c.getKey() == color) + .filter(c-> c.getName().equals(color)) .findAny().get(); } @@ -173,8 +174,8 @@ private User findUser(Long userId) { .orElseThrow(() -> new CustomException(NOT_FOUND_USER_EXCEPTION)); } - private Scrap findScrap(Long scrapId) { - return scrapRepository.findById(scrapId) + private Scrap findScrap(Long internshipAnnouncementId, Long userId) { + return scrapRepository.findByInternshipAnnouncementIdAndUserId(internshipAnnouncementId, userId) .orElseThrow(() -> new CustomException(NOT_FOUND_SCRAP)); } }