From 1b538073728f536af5b1cbd22258e4159ed48171 Mon Sep 17 00:00:00 2001 From: juuuunny <102502542+juuuunny@users.noreply.github.com> Date: Mon, 17 Mar 2025 21:30:39 +0900 Subject: [PATCH] =?UTF-8?q?#117=20[fix]=20=ED=8C=94=EB=A1=9C=EC=9B=8C=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=20=EB=82=B4?= =?UTF-8?q?=EA=B0=80=20=ED=8C=94=EB=A1=9C=EC=9E=89=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EC=A7=80=20=EC=97=AC=EB=B6=80=EB=8F=84=20=ED=95=A8=EA=BB=98=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=ED=95=9C=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/Follow/dto/FollowResponse.java | 6 +++--- .../Follow/repository/FollowRepository.java | 8 +++++++- .../domain/Follow/service/FollowService.java | 16 +++++++++++++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/dto/FollowResponse.java b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/dto/FollowResponse.java index c8ea2545..8c25be9a 100644 --- a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/dto/FollowResponse.java +++ b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/dto/FollowResponse.java @@ -1,7 +1,5 @@ package com.web.baebaeBE.domain.Follow.dto; -import com.web.baebaeBE.domain.Follow.entity.Follow; -import com.web.baebaeBE.domain.member.dto.MemberResponse; import com.web.baebaeBE.domain.member.entity.Member; import lombok.*; @@ -16,12 +14,14 @@ public static class FollowMemberResponse { private Long memberId; private String nickname; private String profileImage; + private boolean following; - public static FollowMemberResponse of(Member member) { + public static FollowMemberResponse of(Member member, boolean isFollowing) { return FollowMemberResponse.builder() .memberId(member.getId()) .nickname(member.getNickname()) .profileImage(member.getProfileImage()) + .following(isFollowing) .build(); } } diff --git a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/repository/FollowRepository.java b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/repository/FollowRepository.java index 801ebbbb..157783d5 100644 --- a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/repository/FollowRepository.java +++ b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/repository/FollowRepository.java @@ -11,6 +11,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.util.List; import java.util.Optional; public interface FollowRepository extends JpaRepository { @@ -22,7 +23,12 @@ public interface FollowRepository extends JpaRepository { "FROM Follow f " + "JOIN f.follower fol " + "WHERE f.following.id = :memberId") - Page findAllFollowersByMemberId(@Param("memberId") Long memberId, Pageable pageable); + Page findAllFollowersByMemberId( + @Param("memberId") Long memberId, + Pageable pageable); + + @Query("SELECT f.following.id FROM Follow f WHERE f.follower.id = :memberId") + List findAllFollowingIdsByMemberId(@Param("memberId") Long memberId); @Query("SELECT fol " + "FROM Follow f " + diff --git a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/service/FollowService.java b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/service/FollowService.java index 5e2337ee..43dbac2d 100644 --- a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/service/FollowService.java +++ b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/service/FollowService.java @@ -18,7 +18,9 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.HashSet; import java.util.Optional; +import java.util.Set; @Service @Transactional @@ -60,15 +62,23 @@ public void deleteFollower(Long followerId, Long followingId) { // 나를 팔로우하는 사람들 리스트 public Page getFollowerList(Long memberId, Pageable page) { - return followRepository.findAllFollowersByMemberId(memberId, page) - .map(member -> FollowResponse.FollowMemberResponse.of(member)); + + Page members = followRepository.findAllFollowersByMemberId(memberId, page); + + // 내가 팔로우하는 사람들의 ID 목록을 Set으로 조회 + Set followingSet = new HashSet<>(followRepository.findAllFollowingIdsByMemberId(memberId)); + + // 팔로워 목록을 응답 객체로 변환 (각 팔로워에 대해 내가 팔로우하는지 확인) + return members.map(member -> + FollowResponse.FollowMemberResponse.of(member, followingSet.contains(member.getId())) + ); } // 내가 팔로우하는 사람들 리스트 public Page getFollowingList(Long memberId, Pageable page) { return followRepository.findAllFollowingsByMemberId(memberId, page) - .map(member -> FollowResponse.FollowMemberResponse.of(member)); + .map(member -> FollowResponse.FollowMemberResponse.of(member, true)); }