728x90
320x100
🎯 오늘 개발 할 기능
- 특정 회원의 피드 목록 조회 구현
- 특정 회원이 좋아요 누른 피드 목록 조회 구현
🛠️ 개발내용
📌 특정 회원의 피드 목록 조회 구현
- 마이페이지 → “나의 피드”
- 타인 프로필 → “이 사용자의 피드”
📦 FeedRepositoryCustom.java
List<Feed> findFeedsByUserId(Long userId, Pageable pageable);
📦 FeedRepositoryImpl.java
@Override
public List<Feed> findFeedsByUserId(Long userId, Pageable pageable) {
return queryFactory.selectFrom(feed)
.where(feed.user.id.eq(userId).and(feed.isBlinded.isFalse()))
.orderBy(feed.createdAt.desc())
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();
}
📦 FeedService.java
public List<FeedResponse> getFeedsByUser(Long userId, Pageable pageable, Long viewerId) {
List<Feed> feeds = feedRepository.findFeedsByUserId(userId, pageable);
return feeds.stream()
.map(feed -> {
long likeCount = likeService.getLikeCount(feed.getId());
boolean liked = likeService.hasUserLiked(viewerId, feed.getId());
return new FeedResponse(feed, likeCount, liked);
}).toList();
}
📦 FeedController.java
@GetMapping("/user/{userId}")
public ResponseEntity<ApiResponse<List<FeedResponse>>> getFeedsByUser(
@PathVariable Long userId,
Pageable pageable,
@AuthenticationPrincipal CustomUserDetails userDetails) {
List<FeedResponse> feeds = feedService.getFeedsByUser(userId, pageable, userDetails.getUser().getId());
return ResponseEntity.ok(ApiResponse.success(feeds));
}
[포스트맨으로 테스트하기]
GET /api/feeds/user/3?page=0&size=10
[테스트 결과 : 성공]

📌 특정 회원이 좋아요 누른 피드 목록 조회
- 마이페이지 → “내가 좋아요한 피드”
- 타인 프로필 → “이 사용자가 좋아요한 피드”
📦 LikeRepositoryCustom.java
import java.util.List;
public interface LikeRepositoryCustom {
List<Long> findFeedIdsByUserId(Long userId);
}
📦 LikeRepositoryImpl.java
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
import static ddururi.bookbookclub.domain.like.entity.QLike.like;
@Repository
@RequiredArgsConstructor
public class LikeRepositoryImpl implements LikeRepositoryCustom {
private final JPAQueryFactory queryFactory;
@Override
public List<Long> findFeedIdsByUserId(Long userId) {
return queryFactory.select(like.feed.id)
.from(like)
.where(like.user.id.eq(userId))
.fetch();
}
}
📦 FeedController.java
@GetMapping("/user/{userId}/likes")
public ResponseEntity<ApiResponse<List<FeedResponse>>> getFeedsLikedByUser(
@PathVariable Long userId,
Pageable pageable,
@AuthenticationPrincipal CustomUserDetails userDetails) {
List<FeedResponse> feeds = feedService.getFeedsLikedByUser(userId, pageable, userDetails.getUser().getId());
return ResponseEntity.ok(ApiResponse.success(feeds));
}
[포스트맨으로 테스트하기]
GET /api/feeds/user/3/likes?page=0&size=10
[테스트 결과 : 성공]

728x90
320x100
'💻 뚝딱뚝딱 > 북북클럽' 카테고리의 다른 글
[개발일지 #034] 팔로우(Follow) 도메인 구현 및 테스트 (0) | 2025.05.02 |
---|---|
[개발일지 #033] 책(Book) 중복 등록 시 예외 처리 하기 (0) | 2025.05.02 |
[개발일지 #031] 피드 검색 조회 (0) | 2025.05.02 |
[JPA/QueryDSL] 적용하기 (0) | 2025.05.02 |
[개발일지 #030] 좋아요(Like) 랭킹에서 피드 상세정보 함께 내려주기 (0) | 2025.05.02 |