diff --git a/src/main/java/cc/backend/image/entity/Image.java b/src/main/java/cc/backend/image/entity/Image.java index 48e2024..4d1ce19 100644 --- a/src/main/java/cc/backend/image/entity/Image.java +++ b/src/main/java/cc/backend/image/entity/Image.java @@ -32,7 +32,7 @@ public class Image { // S3 객체 키 (예: "board/1.png") - 삭제나 조회 시 필요(객체 url에서 버킷 url 뺀 나머지 = filepath + 파일이름) private String keyName; - // 정적인 컨텐츠 전용 URL (poster, notice, actor 이미지 전용) + // 정적인 컨텐츠 전용 URL (poster, notice, casting 이미지 전용) private String imageUrl; // 버킷 내 디렉토리 경로 (board, photoAlbum) diff --git a/src/main/java/cc/backend/photoAlbum/service/PhotoAlbumServiceImpl.java b/src/main/java/cc/backend/photoAlbum/service/PhotoAlbumServiceImpl.java index 21e88b6..64b4be6 100644 --- a/src/main/java/cc/backend/photoAlbum/service/PhotoAlbumServiceImpl.java +++ b/src/main/java/cc/backend/photoAlbum/service/PhotoAlbumServiceImpl.java @@ -132,33 +132,50 @@ public PhotoAlbumResponseDTO.PerformerPhotoAlbumDTO getPhotoAlbumList(Long membe //다음 커서 설정 List albums = albumPage.getContent(); - // 대표 이미지 가져오기 + // 사진첩 id 추출 List albumIds = albums.stream() .map(PhotoAlbum::getId) .toList(); - Map albumImageMap = imageRepository.findFirstByContentIds(albumIds, FilePath.photoAlbum) - .stream() - .collect(Collectors.toMap(Image::getContentId, Function.identity())); - + // 대표 이미지 가져오기 + Map albumImageMap = + imageRepository.findFirstByContentIds(albumIds, FilePath.photoAlbum) + .stream() + .collect(Collectors.toMap( + Image::getContentId, + Function.identity(), + (a, b) -> a + )); + + + Map imageDtoMap = + albumImageMap.isEmpty() + ? Collections.emptyMap() + : imageService.getImages( + albumImageMap.values().stream().toList(), + memberId + ) + .stream() + .collect(Collectors.toMap( + ImageResponseDTO.ImageResultWithPresignedUrlDTO::getContentId, + Function.identity(), + (a, b) -> a + )); // DTO 변환 - List singlePhotoAlbumDTOs = albums.stream() - .map(album -> { - Image coverImage = albumImageMap.get(album.getId()); - return PhotoAlbumResponseDTO.SinglePhotoAlbumDTO.builder() - .photoAlbumId(album.getId()) - .amateurShowName(album.getAmateurShow().getName()) - .performerName(performer.getName()) - .detailAddress(album.getAmateurShow().getDetailAddress()) - .imageResultWithPresignedUrlDTO( - coverImage != null - ? imageService.getImages(List.of(coverImage), memberId).get(0) - : null - ) - .build(); - }) - .toList(); + List singlePhotoAlbumDTOs = + albums.stream() + .map(album -> PhotoAlbumResponseDTO.SinglePhotoAlbumDTO.builder() + .photoAlbumId(album.getId()) + .amateurShowName(album.getAmateurShow().getName()) + .performerName(performer.getName()) + .detailAddress(album.getAmateurShow().getDetailAddress()) + .imageResultWithPresignedUrlDTO( + imageDtoMap.get(album.getId()) + ) + .build() + ) + .toList(); boolean hasNext = albumPage.hasNext(); Integer nextPage = hasNext ? page + 1 : null;