From 552a06580c07eaa7c148672a1f7eb1d625faa24a Mon Sep 17 00:00:00 2001 From: Juhyeon Lee Date: Fri, 5 Jun 2026 14:51:29 +0900 Subject: [PATCH] =?UTF-8?q?[FIX]=20=EB=8C=93=EA=B8=80=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=83=81=EB=8C=80=20=ED=94=84=EB=A1=9C=ED=95=84=20=ED=81=B4?= =?UTF-8?q?=EB=A6=AD=20=EC=8B=9C=20=EB=AC=B4=ED=95=9C=20=EB=A1=9C=EB=94=A9?= =?UTF-8?q?=20&=20=ED=83=88=ED=87=B4=ED=95=98=EA=B8=B0=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=98=A4=EB=A5=98=20=EC=B2=B4=ED=81=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/api/member/service/MemberService.java | 9 ++++++++- .../api/post/repository/LikeRepository.java | 14 ++++++++++++++ .../backend/api/question/dto/AnswerDTO.java | 1 + .../api/question/service/AnswerService.java | 1 + .../api/story/repository/StoryRepository.java | 6 ++++++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/moongeul/backend/api/member/service/MemberService.java b/src/main/java/com/moongeul/backend/api/member/service/MemberService.java index c81139c..0b3ff20 100644 --- a/src/main/java/com/moongeul/backend/api/member/service/MemberService.java +++ b/src/main/java/com/moongeul/backend/api/member/service/MemberService.java @@ -294,8 +294,15 @@ public void withdraw(String email, WithdrawalRequestDTO withdrawalRequestDTO) { doneReadBookshelfRepository.deleteAllByMemberId(member.getId()); wishReadBookshelfRepository.deleteAllByMemberId(member.getId()); + // [스토리] 삭제 + storyRepository.deleteAllByMemberId(member.getId()); + + // [좋아요] 삭제 + likeRepository.deleteAllByMemberId(member.getId()); // 내가 누른 좋아요 + likeRepository.deleteByPostMemberId(member.getId()); // 내가 쓴 글에 눌린 좋아요 + // [게시글 & 인용구] - quoteRepository.deleteAllByMemberId(member.getId()); // Post 이전에 삭제 + quoteRepository.deleteAllByMemberId(member.getId()); // Post 이전에 삭제(quote) postRepository.deleteAllByMemberId(member.getId()); // [카테고리] Post가 모두 삭제된 후 삭제 가능 diff --git a/src/main/java/com/moongeul/backend/api/post/repository/LikeRepository.java b/src/main/java/com/moongeul/backend/api/post/repository/LikeRepository.java index 4262888..ac943cd 100644 --- a/src/main/java/com/moongeul/backend/api/post/repository/LikeRepository.java +++ b/src/main/java/com/moongeul/backend/api/post/repository/LikeRepository.java @@ -3,6 +3,9 @@ import com.moongeul.backend.api.post.entity.LikeType; import com.moongeul.backend.api.post.entity.Likes; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; @@ -17,4 +20,15 @@ public interface LikeRepository extends JpaRepository { // 특정 게시글의 모든 공감 조회 List findByPostId(Long postId); + + // 회원 탈퇴 시 삭제 + // 1. 내가 누른 좋아요 삭제 (member_id 기준) + @Modifying(clearAutomatically = true) + @Query("DELETE FROM Likes l WHERE l.member.id = :memberId") + void deleteAllByMemberId(@Param("memberId") Long memberId); + + // 2. 내가 쓴 게시글에 대한 타인의 좋아요 삭제 (post의 member_id 기준) + @Modifying(clearAutomatically = true) + @Query("DELETE FROM Likes l WHERE l.post.id IN (SELECT p.id FROM Post p WHERE p.member.id = :memberId)") + void deleteByPostMemberId(@Param("memberId") Long memberId); } diff --git a/src/main/java/com/moongeul/backend/api/question/dto/AnswerDTO.java b/src/main/java/com/moongeul/backend/api/question/dto/AnswerDTO.java index 639a99b..6b05a21 100644 --- a/src/main/java/com/moongeul/backend/api/question/dto/AnswerDTO.java +++ b/src/main/java/com/moongeul/backend/api/question/dto/AnswerDTO.java @@ -26,6 +26,7 @@ public class AnswerDTO { @NoArgsConstructor @AllArgsConstructor public static class MemberInfo { + private Long memberId; private String profileImage; // 프로필 이미지 private String nickname; // 닉네임 private ReadingTasteType readingTasteType; // 독서 취향 유형 diff --git a/src/main/java/com/moongeul/backend/api/question/service/AnswerService.java b/src/main/java/com/moongeul/backend/api/question/service/AnswerService.java index 23f43fb..5a7a0c2 100644 --- a/src/main/java/com/moongeul/backend/api/question/service/AnswerService.java +++ b/src/main/java/com/moongeul/backend/api/question/service/AnswerService.java @@ -151,6 +151,7 @@ private AnswerDTO convertToAnswerDTO(Answer answer, String email) { .createdAt(answer.getCreatedAt()) .myAnswer(isMyAnswer) .memberInfo(AnswerDTO.MemberInfo.builder() + .memberId(member.getId()) .profileImage(member.getProfileImage()) .nickname(member.getNickname()) .readingTasteType(member.getReadingTasteType()) diff --git a/src/main/java/com/moongeul/backend/api/story/repository/StoryRepository.java b/src/main/java/com/moongeul/backend/api/story/repository/StoryRepository.java index a745bdf..052a772 100644 --- a/src/main/java/com/moongeul/backend/api/story/repository/StoryRepository.java +++ b/src/main/java/com/moongeul/backend/api/story/repository/StoryRepository.java @@ -4,6 +4,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -51,4 +52,9 @@ Page findAllFollowerStories( // postId로 스토리 조회 Optional findByPostId(Long postId); + + // 회원 탈퇴 시 작성한 모든 스토리 삭제 + @Modifying(clearAutomatically = true) + @Query("DELETE FROM Story s WHERE s.member.id = :memberId") + void deleteAllByMemberId(@Param("memberId") Long memberId); }