2222
2323import java .time .LocalDate ;
2424import java .util .List ;
25+ import java .util .ArrayList ;
2526
2627@ Slf4j
2728@ Service
@@ -188,7 +189,7 @@ public List<BucketListResponse> getParticipatedBucketLists() {
188189 Long memberId = member .getId ();
189190
190191 // 삭제되지 않은 해당 회원이 참여중인 버킷리스트 조회 (참여일 기준 내림차순)
191- List <BucketList > bucketLists = bucketListRepository .findParticipatedBucketListsByMember (memberId , false );
192+ List <BucketList > bucketLists = bucketListRepository .findByParticipantMemberId (memberId );
192193
193194 log .info ("참여중인 버킷리스트 목록 조회 완료: 총 {}개" , bucketLists .size ());
194195
@@ -239,12 +240,33 @@ public List<BucketListResponse> getGroupInProgressBucketLists(Long groupMemberId
239240 throw new CustomException (ErrorCode .MEMBER_NOT_FOUND );
240241 }
241242
242- // 그룹원의 진행중인 공개 버킷리스트 조회
243- List <BucketList > bucketLists = bucketListRepository .findByGroupMemberIdAndInProgressAndPublic (groupMemberId );
243+ // 1. 그룹원의 모든 진행중인 버킷리스트 조회 (공개 여부 상관없이)
244+ List <BucketList > allBucketLists = bucketListRepository .findByGroupMemberIdAndInProgress (groupMemberId );
245+
246+ // 2. 본인이 참여자인 비공개 진행중인 버킷리스트 조회
247+ List <BucketList > participatedBucketLists = bucketListRepository .findByParticipantMemberId (currentMember .getId ())
248+ .stream ()
249+ .filter (bl -> bl .getMember ().getId ().equals (groupMemberId ) && bl .getStatus () == BucketListStatus .IN_PROGRESS )
250+ .toList ();
251+
252+ // 3. 접근 가능한 버킷리스트 필터링 (공개된 것 + 참여자인 것)
253+ List <BucketList > accessibleBucketLists = new ArrayList <>();
254+
255+ for (BucketList bucketList : allBucketLists ) {
256+ // 공개된 버킷리스트이거나 본인이 참여자인 경우
257+ if (bucketList .isPublicFlag () ||
258+ participatedBucketLists .stream ().anyMatch (p -> p .getId ().equals (bucketList .getId ()))) {
259+ accessibleBucketLists .add (bucketList );
260+ }
261+ }
244262
245- log .info ("그룹원의 진행중인 버킷리스트 목록 조회 완료: groupMemberId = {}, 총 {}개" , groupMemberId , bucketLists .size ());
263+ // 4. 생성일 기준으로 정렬
264+ accessibleBucketLists .sort ((a , b ) -> b .getCreatedAt ().compareTo (a .getCreatedAt ()));
246265
247- return bucketLists .stream ()
266+ log .info ("그룹원의 진행중인 버킷리스트 목록 조회 완료: groupMemberId = {}, 총 {}개 (전체: {}, 접근가능: {})" ,
267+ groupMemberId , accessibleBucketLists .size (), allBucketLists .size (), accessibleBucketLists .size ());
268+
269+ return accessibleBucketLists .stream ()
248270 .map (BucketListResponse ::of )
249271 .toList ();
250272 }
@@ -270,12 +292,33 @@ public List<BucketListResponse> getGroupCompletedBucketLists(Long groupMemberId)
270292 throw new CustomException (ErrorCode .MEMBER_NOT_FOUND );
271293 }
272294
273- // 그룹원의 완료된 공개 버킷리스트 조회
274- List <BucketList > bucketLists = bucketListRepository .findByGroupMemberIdAndCompletedAndPublic (groupMemberId );
295+ // 1. 그룹원의 모든 완료된 버킷리스트 조회 (공개 여부 상관없이)
296+ List <BucketList > allBucketLists = bucketListRepository .findByGroupMemberIdAndCompleted (groupMemberId );
297+
298+ // 2. 본인이 참여자인 비공개 완료된 버킷리스트 조회
299+ List <BucketList > participatedBucketLists = bucketListRepository .findByParticipantMemberId (currentMember .getId ())
300+ .stream ()
301+ .filter (bl -> bl .getMember ().getId ().equals (groupMemberId ) && bl .getStatus () == BucketListStatus .COMPLETED )
302+ .toList ();
303+
304+ // 3. 접근 가능한 버킷리스트 필터링 (공개된 것 + 참여자인 것)
305+ List <BucketList > accessibleBucketLists = new ArrayList <>();
306+
307+ for (BucketList bucketList : allBucketLists ) {
308+ // 공개된 버킷리스트이거나 본인이 참여자인 경우
309+ if (bucketList .isPublicFlag () ||
310+ participatedBucketLists .stream ().anyMatch (p -> p .getId ().equals (bucketList .getId ()))) {
311+ accessibleBucketLists .add (bucketList );
312+ }
313+ }
275314
276- log .info ("그룹원의 완료된 버킷리스트 목록 조회 완료: groupMemberId = {}, 총 {}개" , groupMemberId , bucketLists .size ());
315+ // 4. 생성일 기준으로 정렬
316+ accessibleBucketLists .sort ((a , b ) -> b .getCreatedAt ().compareTo (a .getCreatedAt ()));
277317
278- return bucketLists .stream ()
318+ log .info ("그룹원의 완료된 버킷리스트 목록 조회 완료: groupMemberId = {}, 총 {}개 (전체: {}, 접근가능: {})" ,
319+ groupMemberId , accessibleBucketLists .size (), allBucketLists .size (), accessibleBucketLists .size ());
320+
321+ return accessibleBucketLists .stream ()
279322 .map (BucketListResponse ::of )
280323 .toList ();
281324 }
0 commit comments