diff --git a/src/main/java/com/back/domain/post/post/controller/PostController.java b/src/main/java/com/back/domain/post/post/controller/PostController.java index ae76384..2198d14 100644 --- a/src/main/java/com/back/domain/post/post/controller/PostController.java +++ b/src/main/java/com/back/domain/post/post/controller/PostController.java @@ -3,6 +3,7 @@ import com.back.domain.post.post.dto.request.PostCreateRequestDto; import com.back.domain.post.post.dto.request.PostSortScrollRequestDto; import com.back.domain.post.post.dto.request.PostUpdateRequestDto; +import com.back.domain.post.post.dto.response.PostLikeResponseDto; import com.back.domain.post.post.dto.response.PostResponseDto; import com.back.domain.post.post.service.PostService; import com.back.global.rsData.RsData; @@ -114,10 +115,9 @@ public RsData deletePost( */ @PostMapping("/{postId}/like") @Operation(summary = "게시글 추천") - public RsData toggleLike( + public RsData toggleLike( @PathVariable Long postId ) { - postService.toggleLike(postId); - return RsData.successOf(null); // code=200, message="success" + return RsData.successOf(postService.toggleLike(postId)); // code=200, message="success" } } diff --git a/src/main/java/com/back/domain/post/post/dto/response/PostLikeResponseDto.java b/src/main/java/com/back/domain/post/post/dto/response/PostLikeResponseDto.java new file mode 100644 index 0000000..a6e52a7 --- /dev/null +++ b/src/main/java/com/back/domain/post/post/dto/response/PostLikeResponseDto.java @@ -0,0 +1,15 @@ +package com.back.domain.post.post.dto.response; + +import com.back.domain.post.post.entity.PostLike; +import com.back.domain.post.post.enums.PostLikeStatus; + +public record PostLikeResponseDto( + PostLikeStatus status +) { + + public PostLikeResponseDto(PostLike postLike) { + this( + postLike.getStatus() + ); + } +} \ No newline at end of file diff --git a/src/main/java/com/back/domain/post/post/service/PostService.java b/src/main/java/com/back/domain/post/post/service/PostService.java index b5a2161..59e8d36 100644 --- a/src/main/java/com/back/domain/post/post/service/PostService.java +++ b/src/main/java/com/back/domain/post/post/service/PostService.java @@ -7,6 +7,7 @@ import com.back.domain.post.post.dto.request.PostCreateRequestDto; import com.back.domain.post.post.dto.request.PostSortScrollRequestDto; import com.back.domain.post.post.dto.request.PostUpdateRequestDto; +import com.back.domain.post.post.dto.response.PostLikeResponseDto; import com.back.domain.post.post.dto.response.PostResponseDto; import com.back.domain.post.post.entity.Post; import com.back.domain.post.post.entity.PostImage; @@ -233,7 +234,7 @@ public void deletePost(Long postId) { // 게시글 추천(좋아요) 토글 로직 @Transactional - public void toggleLike(Long postId) { + public PostLikeResponseDto toggleLike(Long postId) { User user = rq.getActor(); // 현재 로그인한 사용자 Post post = postRepository.findById(postId) @@ -248,6 +249,8 @@ public void toggleLike(Long postId) { post.decreaseLikeCount(); // 활동 점수: 추천 취소 시 -0.1 abvScoreService.revokeForLike(user.getId()); + + return new PostLikeResponseDto(existingLike.get().getStatus()); } else { // 추천 추가 PostLike postLike = PostLike.builder() @@ -259,15 +262,17 @@ public void toggleLike(Long postId) { post.increaseLikeCount(); // 활동 점수: 추천 추가 시 +0.1 abvScoreService.awardForLike(user.getId()); - } - // 게시글 작성자에게 알림 전송 - notificationService.sendNotification( - post.getUser(), - post, - NotificationType.LIKE, - user.getNickname() + " 님이 추천을 남겼습니다." - ); + // 게시글 작성자에게 알림 전송 + notificationService.sendNotification( + post.getUser(), + post, + NotificationType.LIKE, + user.getNickname() + " 님이 추천을 남겼습니다." + ); + + return new PostLikeResponseDto(postLike.getStatus()); + } } // 태그 추가 메서드