Skip to content
Open
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 @@ -171,7 +171,7 @@ public ResponseEntity<BaseResponse<AdminConcertListResponse>> getAdminConcerts(
) {
AdminConcertListInfo concertList = adminFacade.getAdminConcerts(search);
return ApiResponseUtil.success(SuccessMessage.SUCCESS,
AdminConcertListResponse.of(concertList, s3FileHandler));
AdminConcertListResponse.from(concertList));
}

@Override
Expand All @@ -181,7 +181,7 @@ public ResponseEntity<BaseResponse<AdminConcertDetailResponse>> getAdminConcertD
) {
AdminConcertDetailInfo concertDetail = adminFacade.getAdminConcertDetail(concertId);
return ApiResponseUtil.success(SuccessMessage.SUCCESS,
AdminConcertDetailResponse.of(concertDetail, s3FileHandler));
AdminConcertDetailResponse.from(concertDetail));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import java.time.LocalDateTime;
import java.util.List;
import org.sopt.confeti.api.admin.facade.dto.response.AdminConcertDetailInfo;
import org.sopt.confeti.global.common.constant.FolderPath;
import org.sopt.confeti.global.util.S3FileHandler;

public record AdminConcertDetailResponse(
long concertId,
Expand Down Expand Up @@ -70,14 +68,14 @@ public static ArtistResponse from(AdminConcertDetailInfo.ArtistInfo info) {
}
}

public static AdminConcertDetailResponse of(AdminConcertDetailInfo info, S3FileHandler s3FileHandler) {
public static AdminConcertDetailResponse from(AdminConcertDetailInfo info) {
return new AdminConcertDetailResponse(
info.concertId(),
info.title(),
info.startAt(),
info.endAt(),
info.area(),
s3FileHandler.getFileUrl(FolderPath.combine(FolderPath.CONCERT, FolderPath.POSTER), info.posterPath()).toString(),
info.posterUrl(),
info.ageRating(),
info.time(),
info.price(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,16 @@
import java.util.List;
import org.sopt.confeti.api.admin.facade.dto.response.AdminConcertListInfo;
import org.sopt.confeti.api.admin.facade.dto.response.AdminConcertListInfo.ConcertInfo;
import org.sopt.confeti.global.common.constant.FolderPath;
import org.sopt.confeti.global.util.S3FileHandler;

public record AdminConcertListResponse(
UpcomingConcerts upcomingConcerts,
FinishedConcerts finishedConcerts
) {

public static AdminConcertListResponse of(AdminConcertListInfo info,
S3FileHandler s3FileHandler) {
public static AdminConcertListResponse from(AdminConcertListInfo info) {
return new AdminConcertListResponse(
UpcomingConcerts.of(info.upcomingConcerts(), s3FileHandler),
FinishedConcerts.of(info.finishedConcerts(), s3FileHandler)
UpcomingConcerts.from(info.upcomingConcerts()),
FinishedConcerts.from(info.finishedConcerts())
);
}

Expand All @@ -25,9 +22,9 @@ public record UpcomingConcerts(
int count
) {

public static UpcomingConcerts of(List<ConcertInfo> infos, S3FileHandler s3FileHandler) {
public static UpcomingConcerts from(List<ConcertInfo> infos) {
List<ConcertResponse> concerts = infos.stream()
.map(info -> ConcertResponse.of(info, s3FileHandler))
.map(ConcertResponse::from)
.toList();
return new UpcomingConcerts(concerts, concerts.size());
}
Expand All @@ -38,9 +35,9 @@ public record FinishedConcerts(
int count
) {

public static FinishedConcerts of(List<ConcertInfo> infos, S3FileHandler s3FileHandler) {
public static FinishedConcerts from(List<ConcertInfo> infos) {
List<ConcertResponse> concerts = infos.stream()
.map(info -> ConcertResponse.of(info, s3FileHandler))
.map(ConcertResponse::from)
.toList();
return new FinishedConcerts(concerts, concerts.size());
}
Expand All @@ -55,13 +52,10 @@ public record ConcertResponse(
String area
) {

public static ConcertResponse of(ConcertInfo info, S3FileHandler s3FileHandler) {
public static ConcertResponse from(ConcertInfo info) {
return new ConcertResponse(
info.concertId(),
s3FileHandler.getFileUrl(
FolderPath.combine(FolderPath.CONCERT, FolderPath.POSTER),
info.posterPath()
).toString(),
info.posterUrl(),
info.title(),
info.startAt(),
info.endAt(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,22 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Builder;
import org.sopt.confeti.domain.concert.Concert;
import org.sopt.confeti.domain.concert.application.dto.ConcertFileInfo;
import org.sopt.confeti.domain.concert_artist.ConcertArtist;
import org.sopt.confeti.domain.concert_reservation_schedule.ConcertReservationScheduleInfo;
import org.sopt.confeti.domain.concert_reservation_url.ConcertReservationUrl;

@Builder(toBuilder = true)
public record AdminConcertDetailInfo(
long concertId,
String title,
LocalDate startAt,
LocalDate endAt,
String area,
String posterPath,
String posterUrl,
String ageRating,
String time,
String price,
Expand Down Expand Up @@ -72,28 +76,34 @@ public static ArtistInfo from(ConcertArtist concertArtist) {
}

public static AdminConcertDetailInfo from(Concert concert) {
return new AdminConcertDetailInfo(
concert.getId(),
concert.getTitle(),
concert.getStartAt(),
concert.getEndAt(),
concert.getArea(),
concert.getPosterPath(),
concert.getAgeRating(),
concert.getTime(),
concert.getPrice(),
concert.getAddress(),
concert.getCreatedAt(),
concert.getUpdatedAt(),
concert.getReservationUrls().stream()
return AdminConcertDetailInfo.builder()
.concertId(concert.getId())
.title(concert.getTitle())
.startAt(concert.getStartAt())
.endAt(concert.getEndAt())
.area(concert.getArea())
.posterPath(concert.getPosterPath())
.ageRating(concert.getAgeRating())
.time(concert.getTime())
.price(concert.getPrice())
.address(concert.getAddress())
.createdAt(concert.getCreatedAt())
.updatedAt(concert.getUpdatedAt())
.reservationUrls(concert.getReservationUrls().stream()
.map(ReservationUrlInfo::from)
.toList(),
concert.getReservationSchedules().stream()
.toList())
.reservationSchedules(concert.getReservationSchedules().stream()
.map(schedule -> ReservationScheduleInfo.from(schedule.toDomain()))
.toList(),
concert.getArtists().stream()
.toList())
.artists(concert.getArtists().stream()
.map(ArtistInfo::from)
.toList()
);
.toList())
.build();
}

public AdminConcertDetailInfo withFileUrls(ConcertFileInfo fileUrls) {
return this.toBuilder()
.posterUrl(fileUrls.posterUrl())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public record AdminConcertListInfo(

public record ConcertInfo(
long concertId,
String posterPath,
String posterUrl,
String title,
LocalDate startAt,
LocalDate endAt,
Expand All @@ -21,7 +21,7 @@ public record ConcertInfo(
public static ConcertInfo from(ConcertPreviewInfo info) {
return new ConcertInfo(
info.concertId(),
info.posterPath(),
info.posterUrl(),
info.title(),
info.startAt(),
info.endAt(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.util.List;
import org.sopt.confeti.api.performance.facade.dto.response.ConcertDetailDTO;
import org.sopt.confeti.global.common.constant.FolderPath;
import org.sopt.confeti.global.util.DateConvertor;
import org.sopt.confeti.global.util.S3FileHandler;

Expand Down Expand Up @@ -42,8 +41,7 @@ public static ConcertDetailInfoResponse of(ConcertDetailDTO concertDetailDTO,
S3FileHandler s3FileHandler) {
return new ConcertDetailInfoResponse(
concertDetailDTO.concertId(),
s3FileHandler.getFileUrl(FolderPath.combine(FolderPath.CONCERT, FolderPath.POSTER),
concertDetailDTO.posterPath()).toString(),
concertDetailDTO.posterUrl(),
concertDetailDTO.title(),
DateConvertor.convertToDefaultFormat(concertDetailDTO.startAt()),
DateConvertor.convertToDefaultFormat(concertDetailDTO.endAt()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,22 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Builder;
import org.sopt.confeti.domain.concert.Concert;
import org.sopt.confeti.domain.concert.application.dto.ConcertFileInfo;
import org.sopt.confeti.domain.concert_reservation_schedule.ConcertReservationScheduleInfo;
import org.sopt.confeti.global.annotation.RedisSerializable;

@RedisSerializable
@Builder(toBuilder = true)
public record ConcertDetailDTO(
long concertId,
String title,
LocalDate startAt,
LocalDate endAt,
String area,
String posterPath,
String posterUrl,
String ageRating,
String time,
String price,
Expand All @@ -36,26 +40,32 @@ public static ReservationScheduleDTO from(ConcertReservationScheduleInfo info) {
}

public static ConcertDetailDTO from(Concert concert) {
return new ConcertDetailDTO(
concert.getId(),
concert.getTitle(),
concert.getStartAt(),
concert.getEndAt(),
concert.getArea(),
concert.getPosterPath(),
concert.getAgeRating(),
concert.getTime(),
concert.getPrice(),
concert.getAddress(),
concert.getReservationUrls().stream()
return ConcertDetailDTO.builder()
.concertId(concert.getId())
.title(concert.getTitle())
.startAt(concert.getStartAt())
.endAt(concert.getEndAt())
.area(concert.getArea())
.posterPath(concert.getPosterPath())
.ageRating(concert.getAgeRating())
.time(concert.getTime())
.price(concert.getPrice())
.address(concert.getAddress())
.reservations(concert.getReservationUrls().stream()
.map(ConcertReservationDTO::from)
.toList(),
concert.getReservationSchedules().stream()
.toList())
.reservationSchedules(concert.getReservationSchedules().stream()
.map(schedule -> ReservationScheduleDTO.from(schedule.toDomain()))
.toList(),
concert.getArtists().stream()
.toList())
.artists(concert.getArtists().stream()
.map(ConcertArtistDTO::of)
.toList()
);
.toList())
.build();
}

public ConcertDetailDTO withFileUrls(ConcertFileInfo fileUrls) {
return this.toBuilder()
.posterUrl(fileUrls.posterUrl())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.sopt.confeti.domain.concert.application;

import lombok.RequiredArgsConstructor;
import org.sopt.confeti.domain.concert.Concert;
import org.sopt.confeti.domain.concert.application.dto.ConcertFileInfo;
import org.sopt.confeti.global.common.CdnFileDomainResolveService;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class ConcertFileService {

private final CdnFileDomainResolveService cdnFileDomainResolveService;

public ConcertFileInfo getFileUrls(Concert concert) {
return ConcertFileInfo.builder()
.posterUrl(cdnFileDomainResolveService.resolve(concert.getPosterPath()))
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class ConcertService {

private final RedisHandler redisHandler;
private final ConcertRepository concertRepository;
private final ConcertFileService concertFileService;

// TODO: AOP 방식으로 캐싱 전략 수정
@Transactional(readOnly = true)
Expand All @@ -39,7 +40,8 @@ public ConcertDetailDTO getUpcomingConcertDetailByConcertId(long concertId) {
concertRepository.findUpcomingWithReservationUrlsById(concertId);
concertRepository.findUpcomingWithReservationSchedulesById(concertId);

ConcertDetailDTO concertDetail = ConcertDetailDTO.from(concert);
ConcertDetailDTO concertDetail = ConcertDetailDTO.from(concert)
.withFileUrls(concertFileService.getFileUrls(concert));
redisHandler.set(RedisKey.PERFORMANCE_CONCERTS.createKeyInfo(concertId), concertDetail);
return concertDetail;
}
Expand All @@ -50,13 +52,15 @@ public AdminConcertDetailInfo getAdminConcertDetailInfo(long concertId) {
.orElseThrow(() -> new NotFoundException(ErrorMessage.NOT_FOUND));
concertRepository.findWithReservationUrlsById(concertId);
concertRepository.findWithReservationSchedulesById(concertId);
return AdminConcertDetailInfo.from(concert);
return AdminConcertDetailInfo.from(concert)
.withFileUrls(concertFileService.getFileUrls(concert));
}

@ReadOnlyTransactional
public List<ConcertPreviewInfo> getAdminConcertPreviews(String keyword) {
return findConcertsByKeyword(keyword).stream()
.map(ConcertPreviewInfo::from)
.map(concert -> ConcertPreviewInfo.from(concert)
.withFileUrls(concertFileService.getFileUrls(concert)))
.toList();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.sopt.confeti.domain.concert.application.dto;

import lombok.Builder;

@Builder
public record ConcertFileInfo(
String posterUrl
) {

}
Loading
Loading