From 43674f8f66dc2b54948cbc1bf54fa0b05c0a37f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EC=B0=BD=ED=98=84?= Date: Fri, 15 Jul 2022 00:40:58 +0900 Subject: [PATCH] refactor: get movie times API --- .../application/MovieTimeController.java | 24 ++++++++++++------- .../response/MovieTimeListResponse.java | 8 ++----- .../server/movie/domain/MovieTime.java | 7 ++++++ .../movie/service/MovieTimeServiceImpl.java | 10 ++++---- .../movie/service/dto/MovieListDTO.java | 2 +- .../movie/service/dto/MovieRegisterDTO.java | 1 + .../movie/service/dto/MovieTimeDTO.java | 9 +------ .../movie/service/dto/MovieTimeListDTO.java | 18 ++++++++++++++ .../service/interfaces/MovieTimeService.java | 5 ++-- 9 files changed, 53 insertions(+), 31 deletions(-) create mode 100644 server/src/main/java/com/ticketing/server/movie/service/dto/MovieTimeListDTO.java diff --git a/server/src/main/java/com/ticketing/server/movie/application/MovieTimeController.java b/server/src/main/java/com/ticketing/server/movie/application/MovieTimeController.java index 3c2def2..80666f3 100644 --- a/server/src/main/java/com/ticketing/server/movie/application/MovieTimeController.java +++ b/server/src/main/java/com/ticketing/server/movie/application/MovieTimeController.java @@ -1,11 +1,13 @@ package com.ticketing.server.movie.application; import com.ticketing.server.movie.application.response.MovieTimeListResponse; +import com.ticketing.server.movie.service.dto.MovieTimeListDTO; import com.ticketing.server.movie.service.interfaces.MovieTimeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.time.LocalDate; +import javax.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.format.annotation.DateTimeFormat; @@ -24,16 +26,20 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j public class MovieTimeController { - private final MovieTimeService movieTimeService; + private final MovieTimeService movieTimeService; - @GetMapping - @ApiOperation(value = "영화 시간표 조회") - @Validated - public ResponseEntity getMovieTimes( - @ApiParam(value = "영화 제목", required = true) @RequestParam String title, - @ApiParam(value = "상영 날짜", required = true) @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate runningDate) { - return ResponseEntity.status(HttpStatus.OK).body(MovieTimeListResponse.from(movieTimeService.getMovieTimes(title, runningDate))); - } + @GetMapping + @ApiOperation(value = "영화 시간표 조회") + @Validated + public ResponseEntity getMovieTimes( + @ApiParam(value = "영화 ID", required = true) @RequestParam @NotNull Long movieId, + @ApiParam(value = "상영 날짜", required = true) @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate runningDate) { + MovieTimeListDTO movieTimeListDto = movieTimeService.getMovieTimes(movieId, runningDate); + return ResponseEntity.status(HttpStatus.OK) + .body( + movieTimeListDto.toResponse() + ); + } } diff --git a/server/src/main/java/com/ticketing/server/movie/application/response/MovieTimeListResponse.java b/server/src/main/java/com/ticketing/server/movie/application/response/MovieTimeListResponse.java index f7b5137..023cff2 100644 --- a/server/src/main/java/com/ticketing/server/movie/application/response/MovieTimeListResponse.java +++ b/server/src/main/java/com/ticketing/server/movie/application/response/MovieTimeListResponse.java @@ -8,14 +8,10 @@ import lombok.AllArgsConstructor; import lombok.Getter; @Getter -@AllArgsConstructor(access = AccessLevel.PRIVATE) +@AllArgsConstructor public class MovieTimeListResponse { @ApiModelProperty(value = "영화 시간표 정보") - private List movieTimeDTOS; - - public static MovieTimeListResponse from(List movieTimeDtos) { - return new MovieTimeListResponse(movieTimeDtos); - } + private List movieTimeDtos; } diff --git a/server/src/main/java/com/ticketing/server/movie/domain/MovieTime.java b/server/src/main/java/com/ticketing/server/movie/domain/MovieTime.java index 2d21acc..9fa82a5 100644 --- a/server/src/main/java/com/ticketing/server/movie/domain/MovieTime.java +++ b/server/src/main/java/com/ticketing/server/movie/domain/MovieTime.java @@ -1,6 +1,8 @@ package com.ticketing.server.movie.domain; + import com.ticketing.server.global.dto.repository.AbstractEntity; +import com.ticketing.server.movie.service.dto.MovieTimeDTO; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -72,4 +74,9 @@ public class MovieTime extends AbstractEntity { return this.theater.getSeats(); } + public MovieTimeDTO toMovieTimeDTO() { + return new MovieTimeDTO( + this.id, this.theater.getTheaterNumber(), this.round, this.startAt, this.endAt); + } + } diff --git a/server/src/main/java/com/ticketing/server/movie/service/MovieTimeServiceImpl.java b/server/src/main/java/com/ticketing/server/movie/service/MovieTimeServiceImpl.java index 79ea4b0..bef2c0a 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/MovieTimeServiceImpl.java +++ b/server/src/main/java/com/ticketing/server/movie/service/MovieTimeServiceImpl.java @@ -6,6 +6,7 @@ import com.ticketing.server.movie.domain.MovieTime; import com.ticketing.server.movie.domain.repository.MovieRepository; import com.ticketing.server.movie.domain.repository.MovieTimeRepository; import com.ticketing.server.movie.service.dto.MovieTimeDTO; +import com.ticketing.server.movie.service.dto.MovieTimeListDTO; import com.ticketing.server.movie.service.interfaces.MovieTimeService; import java.time.LocalDate; import java.time.LocalDateTime; @@ -25,8 +26,8 @@ public class MovieTimeServiceImpl implements MovieTimeService { private final MovieTimeRepository movieTimeRepository; @Override - public List getMovieTimes(String title, LocalDate runningDate) { - Movie movie = movieRepository.findByTitle(title) + public MovieTimeListDTO getMovieTimes(Long movieId, LocalDate runningDate) { + Movie movie = movieRepository.findByIdAndDeletedAtNull(movieId) .orElseThrow(ErrorCode::throwMovieNotFound); LocalDateTime startOfDay = runningDate.atStartOfDay().plusHours(6); @@ -34,10 +35,11 @@ public class MovieTimeServiceImpl implements MovieTimeService { List movieTimes = movieTimeRepository.findValidMovieTimes(movie, startOfDay, endOfDay); - return movieTimes.stream() - .map(MovieTimeDTO::from) + List movieTimeDtos = movieTimes.stream() + .map(movieTime -> movieTime.toMovieTimeDTO()) .collect(Collectors.toList()); + return new MovieTimeListDTO(movieTimeDtos); } } diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/MovieListDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieListDTO.java index 047fb3a..fdd03fd 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/dto/MovieListDTO.java +++ b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieListDTO.java @@ -6,7 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; @Getter -@AllArgsConstructor() +@AllArgsConstructor public class MovieListDTO { private final List movieDtos; diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/MovieRegisterDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieRegisterDTO.java index 08c8ad2..5734094 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/dto/MovieRegisterDTO.java +++ b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieRegisterDTO.java @@ -21,4 +21,5 @@ public class MovieRegisterDTO { public Movie toMovie() { return new Movie(this.title, this.runningTime); } + } diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/MovieTimeDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieTimeDTO.java index e83b1c2..74356a4 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/dto/MovieTimeDTO.java +++ b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieTimeDTO.java @@ -1,13 +1,11 @@ package com.ticketing.server.movie.service.dto; -import com.ticketing.server.movie.domain.MovieTime; import java.time.LocalDateTime; -import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; @Getter -@AllArgsConstructor(access = AccessLevel.PRIVATE) +@AllArgsConstructor public class MovieTimeDTO { private Long movieTimeId; @@ -20,9 +18,4 @@ public class MovieTimeDTO { private LocalDateTime endAt; - public static MovieTimeDTO from(MovieTime movieTime) { - return new MovieTimeDTO(movieTime.getId(), movieTime.getTheater().getTheaterNumber(), - movieTime.getRound(), movieTime.getStartAt(), movieTime.getEndAt()); - } - } diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/MovieTimeListDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieTimeListDTO.java new file mode 100644 index 0000000..73c0554 --- /dev/null +++ b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieTimeListDTO.java @@ -0,0 +1,18 @@ +package com.ticketing.server.movie.service.dto; + +import com.ticketing.server.movie.application.response.MovieTimeListResponse; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class MovieTimeListDTO { + + private final List movieTimeDtos; + + public MovieTimeListResponse toResponse() { + return new MovieTimeListResponse(movieTimeDtos); + } + +} diff --git a/server/src/main/java/com/ticketing/server/movie/service/interfaces/MovieTimeService.java b/server/src/main/java/com/ticketing/server/movie/service/interfaces/MovieTimeService.java index 0e5edb7..3d7d554 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/interfaces/MovieTimeService.java +++ b/server/src/main/java/com/ticketing/server/movie/service/interfaces/MovieTimeService.java @@ -1,11 +1,10 @@ package com.ticketing.server.movie.service.interfaces; -import com.ticketing.server.movie.service.dto.MovieTimeDTO; +import com.ticketing.server.movie.service.dto.MovieTimeListDTO; import java.time.LocalDate; -import java.util.List; public interface MovieTimeService { - List getMovieTimes(String title, LocalDate runningDate); + MovieTimeListDTO getMovieTimes(Long movieId, LocalDate runningDate); }