From 36ea657eed5cc00592f3d5add1413a89105b9a9f Mon Sep 17 00:00:00 2001 From: jueunk617 Date: Mon, 13 Oct 2025 10:06:45 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20=EC=BB=A4=EB=AE=A4=EB=8B=88=ED=8B=B0=20?= =?UTF-8?q?=EA=B8=80/=EB=8C=93=EA=B8=80=20=EC=A2=8B=EC=95=84=EC=9A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EC=97=90=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=B0=9C=ED=96=89=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comment/service/CommentLikeService.java | 17 +++++++++++++++++ .../board/post/service/PostLikeService.java | 19 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/back/domain/board/comment/service/CommentLikeService.java b/src/main/java/com/back/domain/board/comment/service/CommentLikeService.java index 24b30884..cb2946d3 100644 --- a/src/main/java/com/back/domain/board/comment/service/CommentLikeService.java +++ b/src/main/java/com/back/domain/board/comment/service/CommentLikeService.java @@ -5,11 +5,13 @@ import com.back.domain.board.comment.entity.CommentLike; import com.back.domain.board.comment.repository.CommentLikeRepository; import com.back.domain.board.comment.repository.CommentRepository; +import com.back.domain.notification.event.community.CommentLikedEvent; import com.back.domain.user.entity.User; import com.back.domain.user.repository.UserRepository; import com.back.global.exception.CustomException; import com.back.global.exception.ErrorCode; import lombok.RequiredArgsConstructor; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,6 +22,7 @@ public class CommentLikeService { private final CommentRepository commentRepository; private final CommentLikeRepository commentLikeRepository; private final UserRepository userRepository; + private final ApplicationEventPublisher eventPublisher; /** * 댓글 좋아요 서비스 @@ -27,6 +30,7 @@ public class CommentLikeService { * 2. Comment 조회 * 3. 이미 존재하는 경우 예외 처리 * 4. CommentLike 저장 및 likeCount 증가 + * 5. 알림 이벤트 발행 (자기 글이 아닐 경우) */ public CommentLikeResponse likeComment(Long commentId, Long userId) { // User 조회 @@ -47,6 +51,19 @@ public CommentLikeResponse likeComment(Long commentId, Long userId) { // CommentLike 저장 및 응답 반환 commentLikeRepository.save(new CommentLike(comment, user)); + + if (!comment.getUser().getId().equals(userId)) { + eventPublisher.publishEvent( + new CommentLikedEvent( + userId, // 좋아요 누른 사람 + comment.getUser().getId(), // 댓글 작성자 + comment.getPost().getId(), // 게시글 ID + comment.getId(), + comment.getContent() + ) + ); + } + return CommentLikeResponse.from(comment); } diff --git a/src/main/java/com/back/domain/board/post/service/PostLikeService.java b/src/main/java/com/back/domain/board/post/service/PostLikeService.java index d1230eca..ae3c5028 100644 --- a/src/main/java/com/back/domain/board/post/service/PostLikeService.java +++ b/src/main/java/com/back/domain/board/post/service/PostLikeService.java @@ -5,11 +5,13 @@ import com.back.domain.board.post.entity.PostLike; import com.back.domain.board.post.repository.PostLikeRepository; import com.back.domain.board.post.repository.PostRepository; +import com.back.domain.notification.event.community.PostLikedEvent; import com.back.domain.user.entity.User; import com.back.domain.user.repository.UserRepository; import com.back.global.exception.CustomException; import com.back.global.exception.ErrorCode; import lombok.RequiredArgsConstructor; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,6 +22,7 @@ public class PostLikeService { private final PostRepository postRepository; private final PostLikeRepository postLikeRepository; private final UserRepository userRepository; + private final ApplicationEventPublisher eventPublisher; /** * 게시글 좋아요 서비스 @@ -27,7 +30,8 @@ public class PostLikeService { * 2. Post 조회 * 3. 이미 존재하는 경우 예외 처리 * 4. PostLike 저장 및 likeCount 증가 - * 5. PostLikeResponse 반환 + * 5. 알림 이벤트 발행 (자기 글이 아닐 경우) + * 6. PostLikeResponse 반환 */ public PostLikeResponse likePost(Long postId, Long userId) { // User 조회 @@ -48,6 +52,19 @@ public PostLikeResponse likePost(Long postId, Long userId) { // PostLike 저장 및 응답 반환 postLikeRepository.save(new PostLike(post, user)); + + // 알림 이벤트 발행 (자기 자신의 글이 아닐 때만) + if (!post.getUser().getId().equals(userId)) { + eventPublisher.publishEvent( + new PostLikedEvent( + userId, // 좋아요 누른 사람 + post.getUser().getId(), // 게시글 작성자 + post.getId(), + post.getTitle() + ) + ); + } + return PostLikeResponse.from(post); }