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)); }