diff --git a/server/src/main/java/com/ticketing/server/movie/application/MovieController.java b/server/src/main/java/com/ticketing/server/movie/application/MovieController.java index 4a32a65..9048d6f 100644 --- a/server/src/main/java/com/ticketing/server/movie/application/MovieController.java +++ b/server/src/main/java/com/ticketing/server/movie/application/MovieController.java @@ -2,9 +2,13 @@ package com.ticketing.server.movie.application; import static com.ticketing.server.user.domain.UserGrade.ROLES.STAFF; +import com.ticketing.server.movie.application.request.MovieDeleteRequest; import com.ticketing.server.movie.application.request.MovieRegisterRequest; +import com.ticketing.server.movie.application.response.MovieDeleteResponse; import com.ticketing.server.movie.application.response.MovieListResponse; import com.ticketing.server.movie.application.response.MovieInfoResponse; +import com.ticketing.server.movie.service.dto.DeletedMovieDTO; +import com.ticketing.server.movie.service.dto.MovieListDTO; import com.ticketing.server.movie.service.dto.RegisteredMovieDTO; import com.ticketing.server.movie.service.interfaces.MovieService; import io.swagger.annotations.Api; @@ -15,6 +19,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.annotation.Secured; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -34,7 +39,8 @@ public class MovieController { @ApiOperation(value = "영화 정보 등록") @Secured(STAFF) public ResponseEntity registerMovie(@RequestBody @Valid MovieRegisterRequest request) { - RegisteredMovieDTO registeredMovieDto = movieService.registerMovie(request.getTitle(), request.getRunningTime()); + RegisteredMovieDTO registeredMovieDto = + movieService.registerMovie(request.getTitle(), request.getRunningTime()); return ResponseEntity.status(HttpStatus.OK) .body( @@ -45,12 +51,22 @@ public class MovieController { @GetMapping() @ApiOperation(value = "영화 목록 조회") public ResponseEntity getMovies() { + MovieListDTO movieListDto = movieService.getMovies(); + return ResponseEntity.status(HttpStatus.OK) .body( - new MovieListResponse( - movieService.getMovies() - ) + movieListDto.toResponse() ); } + @DeleteMapping() + @ApiOperation(value = "영화 정보 삭제") + public ResponseEntity deleteMovie(@RequestBody @Valid MovieDeleteRequest request) { + DeletedMovieDTO deletedMovieDto = movieService.deleteMovie(request.getId()); + + return ResponseEntity.status(HttpStatus.OK) + .body( + deletedMovieDto.toResponse() + ); + } } diff --git a/server/src/main/java/com/ticketing/server/movie/application/request/MovieDeleteRequest.java b/server/src/main/java/com/ticketing/server/movie/application/request/MovieDeleteRequest.java new file mode 100644 index 0000000..8dfb859 --- /dev/null +++ b/server/src/main/java/com/ticketing/server/movie/application/request/MovieDeleteRequest.java @@ -0,0 +1,16 @@ +package com.ticketing.server.movie.application.request; + +import javax.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class MovieDeleteRequest { + + @NotNull(message = "{validation.not.null.id}") + private Long id; + +} diff --git a/server/src/main/java/com/ticketing/server/movie/application/response/MovieDeleteResponse.java b/server/src/main/java/com/ticketing/server/movie/application/response/MovieDeleteResponse.java new file mode 100644 index 0000000..779a63c --- /dev/null +++ b/server/src/main/java/com/ticketing/server/movie/application/response/MovieDeleteResponse.java @@ -0,0 +1,14 @@ +package com.ticketing.server.movie.application.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class MovieDeleteResponse { + + private final Long id; + + private final String title; + +} diff --git a/server/src/main/java/com/ticketing/server/movie/service/MovieServiceImpl.java b/server/src/main/java/com/ticketing/server/movie/service/MovieServiceImpl.java index 0778c5f..7cda1a0 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/MovieServiceImpl.java +++ b/server/src/main/java/com/ticketing/server/movie/service/MovieServiceImpl.java @@ -5,6 +5,7 @@ import com.ticketing.server.movie.domain.Movie; import com.ticketing.server.movie.domain.repository.MovieRepository; import com.ticketing.server.movie.service.dto.DeletedMovieDTO; import com.ticketing.server.movie.service.dto.MovieDTO; +import com.ticketing.server.movie.service.dto.MovieListDTO; import com.ticketing.server.movie.service.dto.RegisteredMovieDTO; import com.ticketing.server.movie.service.interfaces.MovieService; import java.util.List; @@ -37,12 +38,14 @@ public class MovieServiceImpl implements MovieService { } @Override - public List getMovies() { + public MovieListDTO getMovies() { List movies = movieRepository.findValidMovies(); - return movies.stream() + List movieDtos = movies.stream() .map(movie -> movie.toMovieDTO()) .collect(Collectors.toList()); + + return new MovieListDTO(movieDtos); } @Override diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/DeletedMovieDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/DeletedMovieDTO.java index 34743b8..ab04671 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/dto/DeletedMovieDTO.java +++ b/server/src/main/java/com/ticketing/server/movie/service/dto/DeletedMovieDTO.java @@ -1,6 +1,6 @@ package com.ticketing.server.movie.service.dto; -import com.ticketing.server.movie.application.response.MovieInfoResponse; +import com.ticketing.server.movie.application.response.MovieDeleteResponse; import com.ticketing.server.movie.domain.Movie; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -21,8 +21,8 @@ public class DeletedMovieDTO { ); } - public MovieInfoResponse toResponse() { - return new MovieInfoResponse(id, title); + public MovieDeleteResponse toResponse() { + return new MovieDeleteResponse(id, title); } } 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 new file mode 100644 index 0000000..047fb3a --- /dev/null +++ b/server/src/main/java/com/ticketing/server/movie/service/dto/MovieListDTO.java @@ -0,0 +1,18 @@ +package com.ticketing.server.movie.service.dto; + +import com.ticketing.server.movie.application.response.MovieListResponse; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor() +public class MovieListDTO { + + private final List movieDtos; + + public MovieListResponse toResponse() { + return new MovieListResponse(movieDtos); + } + +} diff --git a/server/src/main/java/com/ticketing/server/movie/service/interfaces/MovieService.java b/server/src/main/java/com/ticketing/server/movie/service/interfaces/MovieService.java index 6248248..ca461c7 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/interfaces/MovieService.java +++ b/server/src/main/java/com/ticketing/server/movie/service/interfaces/MovieService.java @@ -1,15 +1,14 @@ package com.ticketing.server.movie.service.interfaces; import com.ticketing.server.movie.service.dto.DeletedMovieDTO; -import com.ticketing.server.movie.service.dto.MovieDTO; +import com.ticketing.server.movie.service.dto.MovieListDTO; import com.ticketing.server.movie.service.dto.RegisteredMovieDTO; -import java.util.List; public interface MovieService { RegisteredMovieDTO registerMovie(String title, Long runningTime); - List getMovies(); + MovieListDTO getMovies(); DeletedMovieDTO deleteMovie(Long id); }