From c68d9e2d77d038274f253514c850362c303e2a0f Mon Sep 17 00:00:00 2001 From: Yujin1219 Date: Sat, 20 Sep 2025 20:28:06 +0900 Subject: [PATCH] =?UTF-8?q?Refactor:=20=EC=A2=8B=EC=95=84=EC=9A=94?= =?UTF-8?q?=EC=8B=9C=20user=5Fbehavior=EC=97=90=20=EC=B6=94=EA=B0=80/?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DecodEat/domain/products/service/ProductService.java | 3 +++ .../domain/users/repository/UserBehaviorRepository.java | 6 ++++++ .../domain/users/service/UserBehaviorService.java | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/src/main/java/com/DecodEat/domain/products/service/ProductService.java b/src/main/java/com/DecodEat/domain/products/service/ProductService.java index 1e92ce5..ee47daa 100644 --- a/src/main/java/com/DecodEat/domain/products/service/ProductService.java +++ b/src/main/java/com/DecodEat/domain/products/service/ProductService.java @@ -365,6 +365,8 @@ public ProductLikeResponseDTO addOrUpdateLike(Long userId, Long productId) { // 이미 눌렀으면 → 좋아요 취소 productLikeRepository.delete(existingLike.get()); isLiked = false; + userBehaviorService.deleteUserBehavior(user,product, Behavior.LIKE); + } else { // 처음 누르면 → 좋아요 추가 ProductLike productLike = ProductLike.builder() @@ -373,6 +375,7 @@ public ProductLikeResponseDTO addOrUpdateLike(Long userId, Long productId) { .build(); productLikeRepository.save(productLike); isLiked = true; + userBehaviorService.saveUserBehavior(user,product, Behavior.LIKE); } return ProductConverter.toProductLikeDTO(productId, isLiked); } diff --git a/src/main/java/com/DecodEat/domain/users/repository/UserBehaviorRepository.java b/src/main/java/com/DecodEat/domain/users/repository/UserBehaviorRepository.java index 8de1d52..4f9b9db 100644 --- a/src/main/java/com/DecodEat/domain/users/repository/UserBehaviorRepository.java +++ b/src/main/java/com/DecodEat/domain/users/repository/UserBehaviorRepository.java @@ -1,7 +1,13 @@ package com.DecodEat.domain.users.repository; +import com.DecodEat.domain.products.entity.Product; +import com.DecodEat.domain.users.entity.Behavior; +import com.DecodEat.domain.users.entity.User; import com.DecodEat.domain.users.entity.UserBehavior; import org.springframework.data.jpa.repository.JpaRepository; public interface UserBehaviorRepository extends JpaRepository { + + void deleteByUserAndProductAndBehavior(User user, Product product, Behavior behavior); + } diff --git a/src/main/java/com/DecodEat/domain/users/service/UserBehaviorService.java b/src/main/java/com/DecodEat/domain/users/service/UserBehaviorService.java index 1ccd996..8db2371 100644 --- a/src/main/java/com/DecodEat/domain/users/service/UserBehaviorService.java +++ b/src/main/java/com/DecodEat/domain/users/service/UserBehaviorService.java @@ -12,7 +12,9 @@ @Service @RequiredArgsConstructor public class UserBehaviorService { + private final UserBehaviorRepository userBehaviorRepository; + @Transactional public void saveUserBehavior(User user, Product product, Behavior behavior) { UserBehavior userBehavior = UserBehavior.builder() @@ -22,4 +24,10 @@ public void saveUserBehavior(User user, Product product, Behavior behavior) { .build(); userBehaviorRepository.save(userBehavior); } + + @Transactional + public void deleteUserBehavior(User user, Product product, Behavior behavior) { + userBehaviorRepository.deleteByUserAndProductAndBehavior(user, product, behavior); + } + }