From 63c7a2278e21112f31fa3e529c88e6b42a1411fd Mon Sep 17 00:00:00 2001 From: eeddiinn Date: Sun, 14 Jul 2024 05:40:54 +0900 Subject: [PATCH] =?UTF-8?q?[FIX]=20=EC=A2=8B=EC=95=84=EC=9A=94=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=20=EB=88=8C=EB=A0=80=EB=8A=94=EC=A7=80=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/notice/repository/NoticeLikeRepository.java | 2 ++ .../sopt/univoice/domain/notice/service/NoticeService.java | 6 ++++++ .../infra/common/exception/message/ErrorMessage.java | 1 + 3 files changed, 9 insertions(+) diff --git a/src/main/java/sopt/univoice/domain/notice/repository/NoticeLikeRepository.java b/src/main/java/sopt/univoice/domain/notice/repository/NoticeLikeRepository.java index 56e9160..38d9f56 100644 --- a/src/main/java/sopt/univoice/domain/notice/repository/NoticeLikeRepository.java +++ b/src/main/java/sopt/univoice/domain/notice/repository/NoticeLikeRepository.java @@ -9,4 +9,6 @@ public interface NoticeLikeRepository extends JpaRepository { Optional findByNoticeAndMember(Notice notice, Member member); + + boolean existsByNoticeAndMember(Notice notice, Member member); } diff --git a/src/main/java/sopt/univoice/domain/notice/service/NoticeService.java b/src/main/java/sopt/univoice/domain/notice/service/NoticeService.java index b3ddcc6..f7d34df 100644 --- a/src/main/java/sopt/univoice/domain/notice/service/NoticeService.java +++ b/src/main/java/sopt/univoice/domain/notice/service/NoticeService.java @@ -129,6 +129,12 @@ public void likeNotice(Long noticeId) { Notice notice = noticeRepository.findById(noticeId) .orElseThrow(() -> new RuntimeException("공지사항이 존재하지 않습니다.")); + // 이미 좋아요를 누른 것인지 확인 + boolean alreadyLiked = noticeLikeRepository.existsByNoticeAndMember(notice, member); + if (alreadyLiked) { + throw new BusinessException(ErrorMessage.ALREADY_LIKED); + } + // noticeLike를 1 증가시킵니다. notice.setNoticeLike(notice.getNoticeLike() + 1); noticeRepository.save(notice); diff --git a/src/main/java/sopt/univoice/infra/common/exception/message/ErrorMessage.java b/src/main/java/sopt/univoice/infra/common/exception/message/ErrorMessage.java index f719d16..d9581d2 100644 --- a/src/main/java/sopt/univoice/infra/common/exception/message/ErrorMessage.java +++ b/src/main/java/sopt/univoice/infra/common/exception/message/ErrorMessage.java @@ -13,6 +13,7 @@ public enum ErrorMessage { JWT_UNAUTHORIZED_EXCEPTION(HttpStatus.UNAUTHORIZED.value(), "사용자의 로그인 검증을 실패했습니다."), APPROVEADMIN_UNAUTHORIZED_EXCEPTION(HttpStatus.UNAUTHORIZED.value(), "승인된 관리자의 로그인 검증을 실패했습니다."), ALREADY_SAVED(HttpStatus.CONFLICT.value(), "이미 저장한 공지입니다."), + ALREADY_LIKED(HttpStatus.CONFLICT.value(), "이미 좋아요한 공지입니다."), ; private final int status; private final String message;