From 001e1bdddb980cc4832bd0df66c6766f5b9bf2ea Mon Sep 17 00:00:00 2001 From: Gouyeon Chung <gouyeonch@naver.com> Date: Mon, 9 Sep 2024 16:55:43 +0900 Subject: [PATCH] =?UTF-8?q?FEAT=20:=20=EB=89=B4=EC=8A=A4=20=EA=B0=90?= =?UTF-8?q?=EC=A0=95=ED=91=9C=ED=98=84=20=EC=88=98=EC=A0=95=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/NewsReactionController.java | 8 ++++++++ .../short_news/news/domain/NewsReaction.java | 4 ++++ .../repository/NewsReactionRepository.java | 4 ++++ .../news/service/NewsReactionService.java | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/src/main/java/com/kkokkomu/short_news/news/controller/NewsReactionController.java b/src/main/java/com/kkokkomu/short_news/news/controller/NewsReactionController.java index 706490b..770743d 100644 --- a/src/main/java/com/kkokkomu/short_news/news/controller/NewsReactionController.java +++ b/src/main/java/com/kkokkomu/short_news/news/controller/NewsReactionController.java @@ -28,6 +28,14 @@ public ResponseDto<NewsReactionDto> addNewsReaction(@Parameter(hidden = true) @U return ResponseDto.ok(newsReactionService.createNewsReaction(userId, createNewsReactionDto)); } + @Operation(summary = "뉴스 감정표현 수정") + @PutMapping("") + public ResponseDto<NewsReactionDto> updateNewsReaction(@Parameter(hidden = true) @UserId Long userId, + @RequestBody CreateNewsReactionDto createNewsReactionDto) { + log.info("updateNewsReaction controller"); + return ResponseDto.ok(newsReactionService.updateNewsReaction(userId, createNewsReactionDto)); + } + @Operation(summary = "뉴스 감정표현 삭제") @DeleteMapping("") public ResponseDto<String> removeNewsReaction(@Parameter(hidden = true) @UserId Long userId, diff --git a/src/main/java/com/kkokkomu/short_news/news/domain/NewsReaction.java b/src/main/java/com/kkokkomu/short_news/news/domain/NewsReaction.java index 2832ac9..fb29b78 100644 --- a/src/main/java/com/kkokkomu/short_news/news/domain/NewsReaction.java +++ b/src/main/java/com/kkokkomu/short_news/news/domain/NewsReaction.java @@ -37,4 +37,8 @@ public NewsReaction(User user, News news, ENewsReaction reaction) { this.news = news; this.reaction = reaction; } + + public void updateReaction(ENewsReaction reaction) { + this.reaction = reaction; + } } diff --git a/src/main/java/com/kkokkomu/short_news/news/repository/NewsReactionRepository.java b/src/main/java/com/kkokkomu/short_news/news/repository/NewsReactionRepository.java index 6349245..67c20eb 100644 --- a/src/main/java/com/kkokkomu/short_news/news/repository/NewsReactionRepository.java +++ b/src/main/java/com/kkokkomu/short_news/news/repository/NewsReactionRepository.java @@ -13,5 +13,9 @@ public interface NewsReactionRepository extends JpaRepository<NewsReaction, Long Boolean existsByNewsIdAndUserId(Long newsId, Long userId); + Boolean existsByNewsIdAndUserIdAndReaction(Long newsId, Long userId, ENewsReaction reaction); + + NewsReaction findByNewsAndUser(News news, User user); + void deleteByNewsAndUserAndReaction(News news, User user, ENewsReaction reaction); } diff --git a/src/main/java/com/kkokkomu/short_news/news/service/NewsReactionService.java b/src/main/java/com/kkokkomu/short_news/news/service/NewsReactionService.java index 2b37f43..1092366 100644 --- a/src/main/java/com/kkokkomu/short_news/news/service/NewsReactionService.java +++ b/src/main/java/com/kkokkomu/short_news/news/service/NewsReactionService.java @@ -49,6 +49,24 @@ public NewsReactionDto createNewsReaction(Long userId, CreateNewsReactionDto cre return NewsReactionDto.of(newsReaction); } // 뉴스 감정표현 생성 + public NewsReactionDto updateNewsReaction(Long userId, CreateNewsReactionDto createNewsReactionDto) { + log.info("updateNewsReaction service"); + + // 유저랑 뉴스 유효성 체크 + User user = userLookupService.findUserById(userId); + + News news = newsLookupService.findNewsById(createNewsReactionDto.newsId()); + + // 감정표현 객체 조회 및 업데이트 + NewsReaction newsReaction = newsReactionRepository.findByNewsAndUser(news, user); + + newsReaction.updateReaction(createNewsReactionDto.reaction()); + + NewsReaction save = newsReactionRepository.save(newsReaction); + + return NewsReactionDto.of(save); + } // 뉴스 감정표현 수정 + @Transactional public String deleteNewsReaction(Long userId, Long newsId, String reaction) { User user = userLookupService.findUserById(userId);