From 586b676933e35b8c0ce26f6a067265dbf7f575db Mon Sep 17 00:00:00 2001 From: chan0831 <116000778+chan0831@users.noreply.github.com> Date: Sat, 1 Feb 2025 21:47:52 +0900 Subject: [PATCH] =?UTF-8?q?[Fix]=EC=A2=8B=EC=95=84=EC=9A=94=EC=B6=94?= =?UTF-8?q?=EA=B0=80=EC=88=98=EC=A0=95=20(#98)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 이찬우 --- .../umc/codeplay/apiPayLoad/code/status/ErrorStatus.java | 1 + src/main/java/umc/codeplay/converter/MusicLikeConverter.java | 2 +- src/main/java/umc/codeplay/domain/Member.java | 2 ++ src/main/java/umc/codeplay/domain/Music.java | 2 ++ src/main/java/umc/codeplay/dto/LikeResponseDTO.java | 4 +--- .../java/umc/codeplay/repository/MusicLikeRepository.java | 2 ++ src/main/java/umc/codeplay/service/LikeService.java | 5 +++++ 7 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/umc/codeplay/apiPayLoad/code/status/ErrorStatus.java b/src/main/java/umc/codeplay/apiPayLoad/code/status/ErrorStatus.java index 9a4d0d7..85ba965 100644 --- a/src/main/java/umc/codeplay/apiPayLoad/code/status/ErrorStatus.java +++ b/src/main/java/umc/codeplay/apiPayLoad/code/status/ErrorStatus.java @@ -34,6 +34,7 @@ public enum ErrorStatus implements BaseErrorCode { MUSIC_NOT_FOUND(HttpStatus.BAD_REQUEST, "MUSIC400", "음원을 찾을 수 없습니다."), LIKE_NOT_FOUND(HttpStatus.BAD_REQUEST, "LIKE400", "해당 좋아요를 찾을 수 없습니다."), + LIKE_ALREADY_EXIST(HttpStatus.BAD_REQUEST, "LIKE401", "이미 좋아요 목록에 추가된 음원입니다."), EMAIL_SEND_ERROR(HttpStatus.BAD_REQUEST, "EMAIL400", "메일 발송에 실패하였습니다."), EMAIL_CODE_ERROR(HttpStatus.BAD_REQUEST, "EMAIL401", "유효한 코드가 아닙니다."); diff --git a/src/main/java/umc/codeplay/converter/MusicLikeConverter.java b/src/main/java/umc/codeplay/converter/MusicLikeConverter.java index b0f5e31..3c6d560 100644 --- a/src/main/java/umc/codeplay/converter/MusicLikeConverter.java +++ b/src/main/java/umc/codeplay/converter/MusicLikeConverter.java @@ -17,7 +17,7 @@ public static LikeResponseDTO.addLikeResponseDTO toLikeResponseDTO(MusicLike lik return LikeResponseDTO.addLikeResponseDTO .builder() .musicId(like.getMusic().getId()) - .like(like) + .musicLikeId(like.getId()) .build(); } diff --git a/src/main/java/umc/codeplay/domain/Member.java b/src/main/java/umc/codeplay/domain/Member.java index 532e639..af6b44b 100644 --- a/src/main/java/umc/codeplay/domain/Member.java +++ b/src/main/java/umc/codeplay/domain/Member.java @@ -6,6 +6,7 @@ import lombok.*; +import com.fasterxml.jackson.annotation.JsonIgnore; import umc.codeplay.domain.common.BaseEntity; import umc.codeplay.domain.enums.Role; import umc.codeplay.domain.enums.SocialStatus; @@ -43,5 +44,6 @@ public void encodePassword(String password) { private String profileUrl; @OneToMany(mappedBy = "member", cascade = CascadeType.ALL) + @JsonIgnore private List likeList = new ArrayList<>(); } diff --git a/src/main/java/umc/codeplay/domain/Music.java b/src/main/java/umc/codeplay/domain/Music.java index 8bd87a8..078e509 100644 --- a/src/main/java/umc/codeplay/domain/Music.java +++ b/src/main/java/umc/codeplay/domain/Music.java @@ -6,6 +6,7 @@ import lombok.*; +import com.fasterxml.jackson.annotation.JsonIgnore; import umc.codeplay.domain.common.BaseEntity; import umc.codeplay.domain.mapping.MusicLike; @@ -30,5 +31,6 @@ public class Music extends BaseEntity { private String musicUrl; @OneToMany(mappedBy = "music", cascade = CascadeType.ALL) + @JsonIgnore private List likeList = new ArrayList<>(); } diff --git a/src/main/java/umc/codeplay/dto/LikeResponseDTO.java b/src/main/java/umc/codeplay/dto/LikeResponseDTO.java index 84ade09..f2ed7a8 100644 --- a/src/main/java/umc/codeplay/dto/LikeResponseDTO.java +++ b/src/main/java/umc/codeplay/dto/LikeResponseDTO.java @@ -5,8 +5,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; -import umc.codeplay.domain.mapping.MusicLike; - public class LikeResponseDTO { @Getter @@ -15,7 +13,7 @@ public class LikeResponseDTO { @NoArgsConstructor public static class addLikeResponseDTO { Long musicId; - MusicLike like; + Long musicLikeId; } @Getter diff --git a/src/main/java/umc/codeplay/repository/MusicLikeRepository.java b/src/main/java/umc/codeplay/repository/MusicLikeRepository.java index 569d5ab..9763908 100644 --- a/src/main/java/umc/codeplay/repository/MusicLikeRepository.java +++ b/src/main/java/umc/codeplay/repository/MusicLikeRepository.java @@ -10,4 +10,6 @@ public interface MusicLikeRepository extends JpaRepository { Optional findByMemberAndMusic(Member member, Music music); + + boolean existsByMemberAndMusic(Member member, Music music); } diff --git a/src/main/java/umc/codeplay/service/LikeService.java b/src/main/java/umc/codeplay/service/LikeService.java index 7c13c76..2fbb080 100644 --- a/src/main/java/umc/codeplay/service/LikeService.java +++ b/src/main/java/umc/codeplay/service/LikeService.java @@ -37,6 +37,11 @@ public MusicLike addLike(String username, LikeRequestDTO.addLikeRequestDTO reque .findByEmail(username) .orElseThrow(() -> new GeneralException(ErrorStatus.MEMBER_NOT_FOUND)); + // 중복 좋아요 방지 + if (musicLikeRepository.existsByMemberAndMusic(member, music)) { + throw new GeneralException(ErrorStatus.LIKE_ALREADY_EXIST); + } + MusicLike newLike = MusicLikeConverter.toMusicLike(member, music); return musicLikeRepository.save(newLike); }