refactor: changed MovieTitleResponse -> MovieInfoResponse

This commit is contained in:
손창현
2022-07-14 01:46:39 +09:00
parent 1d1485c69a
commit a98e3609f2
6 changed files with 26 additions and 20 deletions

View File

@@ -1,8 +1,10 @@
package com.ticketing.server.movie.application;
import static com.ticketing.server.user.domain.UserGrade.ROLES.STAFF;
import com.ticketing.server.movie.application.request.MovieRegisterRequest;
import com.ticketing.server.movie.application.response.MovieListResponse;
import com.ticketing.server.movie.application.response.MovieTitleResponse;
import com.ticketing.server.movie.application.response.MovieInfoResponse;
import com.ticketing.server.movie.service.interfaces.MovieService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -29,12 +31,12 @@ public class MovieController {
@PostMapping()
@ApiOperation(value = "영화 정보 등록")
@Secured("ROLE_STAFF")
public ResponseEntity<MovieTitleResponse> registerMovie(@RequestBody @Valid MovieRegisterRequest request) {
@Secured(STAFF)
public ResponseEntity<MovieInfoResponse> registerMovie(@RequestBody @Valid MovieRegisterRequest request) {
return ResponseEntity.status(HttpStatus.OK)
.body(
MovieTitleResponse.from(
movieService.registerMovie(request.toMovieRegisterDTO())
MovieInfoResponse.from(
movieService.registerMovie(request.getTitle(), request.getRunningTime())
)
);
}

View File

@@ -8,13 +8,16 @@ import lombok.Getter;
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class MovieTitleResponse {
public class MovieInfoResponse {
@ApiModelProperty(value = "영화 ID")
private Long movieId;
@ApiModelProperty(value = "영화 제목")
private String title;
public static MovieTitleResponse from(MovieDTO movieDto) {
return new MovieTitleResponse(movieDto.getTitle());
public static MovieInfoResponse from(MovieDTO movieDto) {
return new MovieInfoResponse(movieDto.getMovieId(), movieDto.getTitle());
}
}

View File

@@ -21,11 +21,15 @@ public class MovieServiceImpl implements MovieService {
private final MovieRepository movieRepository;
@Override
public MovieDTO registerMovie(MovieRegisterDTO movieRegisterDto) {
Optional<Movie> movie = movieRepository.findByTitle(movieRegisterDto.getTitle());
public MovieDTO registerMovie(String title, Long runningTime) {
Optional<Movie> movie = movieRepository.findValidMovieWithTitle(title);
if(movie.isEmpty()) {
return MovieDTO.from(movieRepository.save(movieRegisterDto.toMovie()));
Movie newMovie = movieRepository.save(
new Movie(title, runningTime)
);
return new MovieDTO(newMovie.getId(), newMovie.getTitle());
}
throw ErrorCode.throwDuplicateMovie();

View File

@@ -1,18 +1,14 @@
package com.ticketing.server.movie.service.dto;
import com.ticketing.server.movie.domain.Movie;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor
public class MovieDTO {
private Long movieId;
private String title;
public static MovieDTO from(Movie movie) {
return new MovieDTO(movie.getTitle());
}
}

View File

@@ -1,13 +1,15 @@
package com.ticketing.server.movie.service.interfaces;
import com.ticketing.server.movie.domain.Movie;
import com.ticketing.server.movie.service.dto.MovieDTO;
import com.ticketing.server.movie.service.dto.MovieRegisterDTO;
import java.util.List;
public interface MovieService {
MovieDTO registerMovie(MovieRegisterDTO movieRegisterDto);
MovieDTO registerMovie(String title, Long runningTime);
List<MovieDTO> getMovies();
Movie findValidMovieWithTitle(String title);
}

View File

@@ -13,7 +13,6 @@ import com.ticketing.server.user.application.response.UserChangePasswordResponse
import com.ticketing.server.user.application.response.UserDeleteResponse;
import com.ticketing.server.user.application.response.UserDetailResponse;
import com.ticketing.server.user.domain.ChangeGradeDTO;
import com.ticketing.server.user.domain.UserGrade;
import com.ticketing.server.user.service.dto.ChangedPasswordUserDTO;
import com.ticketing.server.user.service.dto.DeletedUserDTO;
import com.ticketing.server.user.service.dto.PaymentsDTO;