Skip to content

Commit 5f9b53d

Browse files
authored
Merge pull request #137 from InningLog/feat/#136/thumbnail-expansion
feat : 직관일지/좌석시야 목록 조회 시 썸네일 URL 반환 #136
2 parents 99efef7 + 282539b commit 5f9b53d

3 files changed

Lines changed: 28 additions & 8 deletions

File tree

src/main/java/com/inninglog/inninglog/domain/journal/usecase/JournalUsecase.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.inninglog.inninglog.domain.team.domain.Team;
2424
import com.inninglog.inninglog.domain.team.service.TeamGetService;
2525
import com.inninglog.inninglog.global.s3.S3Uploader;
26+
import com.inninglog.inninglog.global.s3.ThumbnailUrlGenerator;
2627
import lombok.RequiredArgsConstructor;
2728
import org.springframework.data.domain.Page;
2829
import org.springframework.data.domain.Slice;
@@ -51,6 +52,7 @@ public class JournalUsecase {
5152
private final GameReportService gameReportService;
5253
private final GameGetService gameGetService;
5354
private final S3Uploader s3Uploader;
55+
private final ThumbnailUrlGenerator thumbnailUrlGenerator;
5456
private final LikeValidateService likeValidateService;
5557
private final ScrapValidateService scrapValidateService;
5658
private final CommentGetService commentGetService;
@@ -96,7 +98,7 @@ public Page<JournalSumListResDto> getJournalsByMemberSum(
9698
return journals.map(
9799
journal -> JournalSumListResDto.from(
98100
journal,
99-
s3Uploader.getDirectUrl(journal.getMedia_url()),
101+
thumbnailUrlGenerator.generateThumbnailUrl(journal.getMedia_url()),
100102
member.getTeam().getShortCode(),
101103
likedIds.contains(journal.getId()),
102104
scrapedIds.contains(journal.getId())
@@ -184,7 +186,7 @@ public SliceResponse<JournalFeedResDto> getPublicJournalFeed(Long memberId, Stri
184186

185187
return JournalFeedResDto.from(
186188
journal,
187-
s3Uploader.getDirectUrl(journal.getMedia_url()),
189+
thumbnailUrlGenerator.generateThumbnailUrl(journal.getMedia_url()),
188190
writedByMe,
189191
likedByMe,
190192
scrapedByMe
@@ -219,7 +221,7 @@ public SliceResponse<JournalFeedResDto> searchPublicJournals(Long memberId, Stri
219221

220222
return JournalFeedResDto.from(
221223
journal,
222-
s3Uploader.getDirectUrl(journal.getMedia_url()),
224+
thumbnailUrlGenerator.generateThumbnailUrl(journal.getMedia_url()),
223225
writedByMe,
224226
likedByMe,
225227
scrapedByMe
@@ -244,7 +246,7 @@ public SliceResponse<JournalSumListResDto> getMyJournals(Member member, Pageable
244246
Slice<JournalSumListResDto> dtoSlice = journals.map(
245247
journal -> JournalSumListResDto.from(
246248
journal,
247-
s3Uploader.getDirectUrl(journal.getMedia_url()),
249+
thumbnailUrlGenerator.generateThumbnailUrl(journal.getMedia_url()),
248250
member.getTeam().getShortCode(),
249251
likedIds.contains(journal.getId()),
250252
scrapedIds.contains(journal.getId())
@@ -298,7 +300,7 @@ public SliceResponse<JournalFeedResDto> getPopularJournals(Long memberId, Pageab
298300

299301
return JournalFeedResDto.from(
300302
journal,
301-
s3Uploader.getDirectUrl(journal.getMedia_url()),
303+
thumbnailUrlGenerator.generateThumbnailUrl(journal.getMedia_url()),
302304
writedByMe,
303305
likedByMe,
304306
scrapedByMe
@@ -333,7 +335,7 @@ private SliceResponse<JournalFeedResDto> toFeedPage(Slice<Long> journalIdSlice,
333335

334336
return JournalFeedResDto.from(
335337
journal,
336-
s3Uploader.getDirectUrl(journal.getMedia_url()),
338+
thumbnailUrlGenerator.generateThumbnailUrl(journal.getMedia_url()),
337339
writedByMe,
338340
likedByMe,
339341
scrapedByMe

src/main/java/com/inninglog/inninglog/domain/seatView/service/HashtagSearchService.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import com.inninglog.inninglog.domain.contentType.ContentType;
66
import com.inninglog.inninglog.global.exception.CustomException;
77
import com.inninglog.inninglog.global.exception.ErrorCode;
8+
import com.inninglog.inninglog.global.s3.S3UrlProperties;
9+
import com.inninglog.inninglog.global.s3.ThumbnailUrlGenerator;
810
import com.inninglog.inninglog.domain.member.repository.MemberRepository;
911
import com.inninglog.inninglog.domain.seatView.domain.SeatView;
1012
import com.inninglog.inninglog.domain.seatView.dto.res.SeatViewImageResult;
@@ -29,6 +31,8 @@ public class HashtagSearchService {
2931
private final SeatViewRepository seatViewRepository;
3032
private final ContentImageRepository contentImageRepository;
3133
private final MemberRepository memberRepository;
34+
private final ThumbnailUrlGenerator thumbnailUrlGenerator;
35+
private final S3UrlProperties s3UrlProperties;
3236

3337
// 모아보기 형태 검색 (사진만)
3438
public Page<SeatViewImageResult> searchSeatViewsByHashtagsGallery(Long memberId, String stadiumShortCode, List<String> hashtagCodes, Pageable pageable) {
@@ -70,10 +74,15 @@ private Map<Long, String> getThumbnailMap(List<Long> seatViewIds) {
7074
List<ContentImage> images = contentImageRepository.findAllByContentTypeAndTargetIdIn(
7175
ContentType.SEATVIEW, seatViewIds);
7276

77+
String baseUrlPrefix = s3UrlProperties.getBaseUrl() + "/";
78+
7379
return images.stream()
7480
.collect(Collectors.toMap(
7581
ContentImage::getTargetId,
76-
ContentImage::getOriginalUrl,
82+
img -> {
83+
String key = img.getOriginalUrl().replace(baseUrlPrefix, "");
84+
return thumbnailUrlGenerator.generateThumbnailUrl(key);
85+
},
7786
(existing, replacement) -> existing
7887
));
7988
}

src/main/java/com/inninglog/inninglog/domain/seatView/service/SeatSearchService.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import com.inninglog.inninglog.domain.contentType.ContentType;
66
import com.inninglog.inninglog.global.exception.CustomException;
77
import com.inninglog.inninglog.global.exception.ErrorCode;
8+
import com.inninglog.inninglog.global.s3.S3UrlProperties;
9+
import com.inninglog.inninglog.global.s3.ThumbnailUrlGenerator;
810
import com.inninglog.inninglog.domain.member.repository.MemberRepository;
911
import com.inninglog.inninglog.domain.seatView.domain.SeatView;
1012
import com.inninglog.inninglog.domain.seatView.dto.req.SeatSearchReq;
@@ -30,6 +32,8 @@ public class SeatSearchService {
3032
private final SeatViewRepository seatViewRepository;
3133
private final ContentImageRepository contentImageRepository;
3234
private final MemberRepository memberRepository;
35+
private final ThumbnailUrlGenerator thumbnailUrlGenerator;
36+
private final S3UrlProperties s3UrlProperties;
3337

3438
public Page<SeatViewImageResult> searchSeats(
3539
Long memeberId,
@@ -81,10 +85,15 @@ private Map<Long, String> getThumbnailMap(List<Long> seatViewIds) {
8185
List<ContentImage> images = contentImageRepository.findAllByContentTypeAndTargetIdIn(
8286
ContentType.SEATVIEW, seatViewIds);
8387

88+
String baseUrlPrefix = s3UrlProperties.getBaseUrl() + "/";
89+
8490
return images.stream()
8591
.collect(Collectors.toMap(
8692
ContentImage::getTargetId,
87-
ContentImage::getOriginalUrl,
93+
img -> {
94+
String key = img.getOriginalUrl().replace(baseUrlPrefix, "");
95+
return thumbnailUrlGenerator.generateThumbnailUrl(key);
96+
},
8897
(existing, replacement) -> existing // 첫 번째 이미지(썸네일) 유지
8998
));
9099
}

0 commit comments

Comments
 (0)