|
5 | 5 | import com.mmc.bookduck.domain.archive.repository.ExcerptRepository; |
6 | 6 | import com.mmc.bookduck.domain.archive.repository.ReviewRepository; |
7 | 7 | import com.mmc.bookduck.domain.book.entity.BookInfo; |
| 8 | +import com.mmc.bookduck.domain.book.entity.ReadStatus; |
8 | 9 | import com.mmc.bookduck.domain.book.entity.UserBook; |
9 | 10 | import com.mmc.bookduck.domain.book.repository.UserBookRepository; |
10 | 11 | import com.mmc.bookduck.domain.book.service.BookInfoService; |
11 | 12 | import com.mmc.bookduck.domain.club.dto.common.ClubBookInfoDto; |
12 | | -import com.mmc.bookduck.domain.club.dto.common.ClubMemberSummaryDto; |
13 | 13 | import com.mmc.bookduck.domain.club.dto.common.ClubMemberRoleInfo; |
14 | 14 | import com.mmc.bookduck.domain.club.dto.request.ClubCreateRequestDto; |
15 | 15 | import com.mmc.bookduck.domain.club.dto.request.ClubJoinRequestDto; |
@@ -74,29 +74,20 @@ public Long createClub(ClubCreateRequestDto requestDto) { |
74 | 74 | } |
75 | 75 |
|
76 | 76 | @Transactional(readOnly = true) |
77 | | - public ClubArchiveListResponseDto getClubArchives(Long clubId, Long memberId, Pageable pageable) { |
| 77 | + public ClubArchiveListResponseDto getClubArchives(Long clubId, Pageable pageable) { |
78 | 78 | User currentUser = userService.getCurrentUser(); |
79 | 79 | Club club = getClubById(clubId); |
80 | 80 | // 클럽 멤버 및 상태 조회 |
81 | 81 | ClubMember currentMember = clubMemberService.getClubMemberByClubAndUser(club, currentUser); |
82 | 82 | LocalDateTime lastReadAt = markAsReadAndGetLastReadAt(currentMember); |
83 | 83 | BookInfo targetBook = club.getBookInfo(); |
84 | 84 |
|
85 | | - List<Long> memberUserIds; |
86 | | - if (memberId != null) { |
87 | | - // 특정 멤버만 필터링 |
88 | | - ClubMember targetMember = clubMemberService.getClubMemberById(memberId); |
89 | | - if (!targetMember.getClub().getClubId().equals(clubId)) { |
90 | | - throw new CustomException(ErrorCode.CLUB_MEMBER_NOT_FOUND); |
91 | | - } |
92 | | - memberUserIds = List.of(targetMember.getUser().getUserId()); |
93 | | - } else { |
94 | | - // 전체 멤버 |
95 | | - memberUserIds = clubMemberService.getClubMembersByClub(club).stream() |
96 | | - .map(cm -> cm.getUser().getUserId()) |
97 | | - .toList(); |
98 | | - } |
| 85 | + // 클럽 멤버 전체 userId 추출 |
| 86 | + List<Long> memberUserIds = clubMemberService.getClubMembersByClub(club).stream() |
| 87 | + .map(cm -> cm.getUser().getUserId()) |
| 88 | + .toList(); |
99 | 89 |
|
| 90 | + // 전체 Excerpt / Review 조회 (읽음 여부 필터 제거) |
100 | 91 | List<Excerpt> excerpts = excerptRepository.findClubExcerpts( |
101 | 92 | targetBook.getBookInfoId(), |
102 | 93 | memberUserIds, |
@@ -252,16 +243,11 @@ public ClubDetailResponseDto getClubDetail(Long clubId) { |
252 | 243 | ClubMemberRoleInfo roleInfo = clubMemberService.getMemberRoleInfo(club, currentUser); |
253 | 244 |
|
254 | 245 | // 현재 사용자의 UserBook 조회 |
255 | | - Long userBookId = userBookRepository.findByUserAndBookInfo(currentUser, club.getBookInfo()) |
256 | | - .map(UserBook::getUserBookId) |
257 | | - .orElse(null); |
258 | | - |
259 | | - // 클럽 멤버 목록 조회 |
260 | | - List<ClubMemberSummaryDto> members = clubMemberService.getClubMembersByClub(club).stream() |
261 | | - .map(ClubMemberSummaryDto::from) |
262 | | - .toList(); |
| 246 | + var userBookOpt = userBookRepository.findByUserAndBookInfo(currentUser, club.getBookInfo()); |
| 247 | + Long userBookId = userBookOpt.map(UserBook::getUserBookId).orElse(null); |
| 248 | + var readStatus = userBookOpt.map(UserBook::getReadStatus).orElse(null); |
263 | 249 |
|
264 | | - return ClubDetailResponseDto.from(club, club.getBookInfo(), memberCount, roleInfo.isMember(), roleInfo.memberRole(), userBookId, members); |
| 250 | + return ClubDetailResponseDto.from(club, club.getBookInfo(), memberCount, roleInfo.isMember(), roleInfo.memberRole(), userBookId, readStatus); |
265 | 251 | } |
266 | 252 |
|
267 | 253 | // LEADER만 수정/삭제 가능 |
|
0 commit comments