Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public ContestRecordDeleteDTO.Response toDeleteResponseDTO(Contest contest) {
}

// 대회 기록 상세 조회
public ContestRecordDetailDTO.Response toDetailResponseDTO(Contest contest, List<String> imgUrls, List<String> videoUrls, String content) {
public ContestRecordDetailDTO.Response toDetailResponseDTO(Contest contest, List<Long> imgIds, List<String> imgUrls, List<Long> videoIds, List<String> videoUrls, String content) {
return ContestRecordDetailDTO.Response.builder()
.contestId(contest.getId())
.contestName(contest.getContestName())
Expand All @@ -87,8 +87,10 @@ public ContestRecordDetailDTO.Response toDetailResponseDTO(Contest contest, List
.level(contest.getLevel())
.contentIsOpen(contest.getContentIsOpen())
.content(content)
.contestImgIds(imgIds)
.contestImgUrls(imgUrls)
.videoIsOpen(contest.getVideoIsOpen())
.contestVideoIds(videoIds)
.contestVideoUrls(videoUrls)
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ public record Response(
String content,
Boolean contentIsOpen,
Boolean videoIsOpen,
List<Long> contestImgIds,
List<String> contestImgUrls,
List<Long> contestVideoIds,
List<String> contestVideoUrls
) {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,15 @@ public ContestRecordDetailDTO.Response getContestRecordDetail(Long loginMemberId

boolean isOwner = loginMemberId.equals(memberId);

List<Long> imgIds = getImageIds(contest);
List<String> imgUrls = getImageUrls(contest);
List<Long> videoIds = getVideoIds(contest, isOwner);
List<String> videoUrls = getVideoUrls(contest, isOwner);
String content = getContent(contest, isOwner);

log.info("대회 기록 상세조회 완료 - contestId: {}", contestId);

return contestConverter.toDetailResponseDTO(contest, imgUrls, videoUrls, content);
return contestConverter.toDetailResponseDTO(contest, imgIds, imgUrls, videoIds, videoUrls, content);
}

// 대회 기록 리스트 조회 (전체, 미입상)
Expand Down Expand Up @@ -92,6 +94,14 @@ public ContestMedalSummaryDTO.Response getMyMedalSummary(Long memberId) {
return contestConverter.toMedalSummaryResponseDTO(gold, silver, bronze);
}

// 이미지 ID 리스트 반환
private List<Long> getImageIds(Contest contest) {
return contest.getContestImgs().stream()
.sorted(Comparator.comparing(ContestImg::getImgOrder))
.map(ContestImg::getId)
.collect(Collectors.toList());
}

// 이미지 URL 리스트 반환
private List<String> getImageUrls(Contest contest) {
return contest.getContestImgs().stream()
Expand All @@ -100,6 +110,17 @@ private List<String> getImageUrls(Contest contest) {
.collect(Collectors.toList());
}

// 영상 ID 리스트 (공개 여부에 따라)
private List<Long> getVideoIds(Contest contest, boolean isOwner) {
if (contest.getVideoIsOpen() || isOwner) {
return contest.getContestVideos().stream()
.sorted(Comparator.comparingInt(ContestVideo::getVideoOrder))
.map(ContestVideo::getId)
.collect(Collectors.toList());
}
return List.of();
}

// 영상 URL 리스트 (공개 여부에 따라)
private List<String> getVideoUrls(Contest contest, boolean isOwner) {
if (contest.getVideoIsOpen() || isOwner) {
Expand Down