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/domain/enums/Color.java b/src/main/java/org/terning/terningserver/domain/enums/Color.java index 2545ac4..5925c80 100644 --- a/src/main/java/org/terning/terningserver/domain/enums/Color.java +++ b/src/main/java/org/terning/terningserver/domain/enums/Color.java @@ -8,18 +8,18 @@ @Getter public enum Color { - RED(0, "ED4E54"), - ORANGE1(1, "EE7647"), - ORANGE2(2, "F3A649"), - YELLOW(3, "F5E660"), - GREEN1(4, "C4E953"), - GREEN2(5, "84D558"), - BLUE1(6, "45D0CC"), - BLUE2(7, "4AA9F2"), - PURPLE(8, "9B64E2"), - PINK(9, "F260AC"); + RED("red", "ED4E54"), + ORANGE("orange", "F3A649"), + LIGHT_GREEN("lightgreen", "C4E953"), + MINT("mint", "45D0CC"), + PURPLE("purple", "9B64E2"), + CORAL("coral", "EE7647"), + YELLOW("yellow", "F5E660"), + GREEN("green", "84D558"), + BLUE("blue", "4AA9F2"), + PINK("pink", "F260AC"); - private final int key; + private final String name; private final String value; public String getColorValue() { 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 a62914f..24134d0 100644 --- a/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java +++ b/src/main/java/org/terning/terningserver/exception/enums/ErrorMessage.java @@ -40,7 +40,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)); } }