diff --git a/server/src/main/java/com/ticketing/server/movie/application/TicketController.java b/server/src/main/java/com/ticketing/server/movie/application/TicketController.java index 0032855..c9427e6 100644 --- a/server/src/main/java/com/ticketing/server/movie/application/TicketController.java +++ b/server/src/main/java/com/ticketing/server/movie/application/TicketController.java @@ -4,10 +4,11 @@ import static com.ticketing.server.user.domain.UserGrade.ROLES.USER; import com.ticketing.server.movie.application.response.TicketDetailsResponse; import com.ticketing.server.movie.application.response.TicketListResponse; -import com.ticketing.server.movie.service.dto.TicketDetailsDTO; -import com.ticketing.server.movie.service.dto.TicketListDTO; +import com.ticketing.server.movie.service.dto.TicketDTO; import com.ticketing.server.movie.service.interfaces.TicketService; +import com.ticketing.server.payment.service.dto.TicketDetailDTO; import io.swagger.annotations.ApiParam; +import java.util.List; import javax.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; @@ -32,11 +33,11 @@ public class TicketController { @Secured(USER) public ResponseEntity getTickets( @ApiParam(value = "영화 시간표 ID", required = true) @RequestParam @NotNull Long movieTimeId) { - TicketListDTO ticketListDto = ticketService.getTickets(movieTimeId); + List tickets = ticketService.getTickets(movieTimeId); return ResponseEntity.status(HttpStatus.OK) .body( - ticketListDto.toResponse() + new TicketListResponse(tickets) ); } @@ -44,11 +45,11 @@ public class TicketController { @Secured(USER) public ResponseEntity findTicketsByPaymentId( @PathVariable("paymentId") @NotNull Long paymentId) { - TicketDetailsDTO tickets = ticketService.findTicketsByPaymentId(paymentId); + List tickets = ticketService.findTicketsByPaymentId(paymentId); return ResponseEntity.status(HttpStatus.OK) .body( - tickets.toResponse() + new TicketDetailsResponse(tickets) ); } diff --git a/server/src/main/java/com/ticketing/server/movie/service/TicketServiceImpl.java b/server/src/main/java/com/ticketing/server/movie/service/TicketServiceImpl.java index 4b59574..15a5ef7 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/TicketServiceImpl.java +++ b/server/src/main/java/com/ticketing/server/movie/service/TicketServiceImpl.java @@ -1,26 +1,21 @@ package com.ticketing.server.movie.service; import com.ticketing.server.global.exception.ErrorCode; -import com.ticketing.server.movie.domain.MovieTime; -import com.ticketing.server.movie.domain.repository.MovieTimeRepository; import com.ticketing.server.global.validator.constraints.NotEmptyCollection; +import com.ticketing.server.movie.domain.MovieTime; import com.ticketing.server.movie.domain.Ticket; +import com.ticketing.server.movie.domain.repository.MovieTimeRepository; import com.ticketing.server.movie.domain.repository.TicketRepository; import com.ticketing.server.movie.service.dto.TicketDTO; -import com.ticketing.server.movie.service.dto.TicketDetailsDTO; -import com.ticketing.server.movie.service.dto.TicketListDTO; import com.ticketing.server.movie.service.dto.TicketRefundDTO; import com.ticketing.server.movie.service.dto.TicketReservationDTO; import com.ticketing.server.movie.service.dto.TicketSoldDTO; import com.ticketing.server.movie.service.dto.TicketsCancelDTO; -import com.ticketing.server.movie.service.dto.TicketsRefundDTO; import com.ticketing.server.movie.service.dto.TicketsReservationDTO; import com.ticketing.server.movie.service.dto.TicketsSoldDTO; import com.ticketing.server.movie.service.interfaces.TicketService; import com.ticketing.server.payment.service.dto.TicketDetailDTO; -import java.time.LocalDateTime; import java.util.List; -import java.util.function.Function; import java.util.function.UnaryOperator; import java.util.stream.Collectors; import javax.validation.constraints.NotNull; @@ -42,20 +37,18 @@ public class TicketServiceImpl implements TicketService { private final MovieTimeRepository movieTimeRepository; @Override - public TicketListDTO getTickets(@NotNull Long movieTimeId) { + public List getTickets(@NotNull Long movieTimeId) { MovieTime movieTime = movieTimeRepository.findById(movieTimeId) .orElseThrow(ErrorCode::throwMovieTimeNotFound); - List tickets = ticketRepository.findValidTickets(movieTime) + return ticketRepository.findValidTickets(movieTime) .stream() .map(TicketDTO::new) .collect(Collectors.toList()); - - return new TicketListDTO(tickets); } @Override - public TicketDetailsDTO findTicketsByPaymentId(@NotNull Long paymentId) { + public List findTicketsByPaymentId(@NotNull Long paymentId) { List ticketDetails = ticketRepository.findTicketFetchJoinByPaymentId(paymentId) .stream() .map(TicketDetailDTO::new) @@ -65,7 +58,7 @@ public class TicketServiceImpl implements TicketService { throw ErrorCode.throwPaymentIdNotFound(); } - return new TicketDetailsDTO(ticketDetails); + return ticketDetails; } @Override @@ -106,20 +99,18 @@ public class TicketServiceImpl implements TicketService { List tickets = getTicketsByInTicketIds(ticketIds); tickets.forEach(Ticket::cancel); - return new TicketsCancelDTO(ticketIds); + return new TicketsCancelDTO(tickets); } @Override @Transactional - public TicketsRefundDTO ticketsRefund(@NotNull Long paymentId, UnaryOperator refund) { + public List ticketsRefund(@NotNull Long paymentId, UnaryOperator refund) { List tickets = ticketRepository.findTicketFetchJoinByPaymentId(paymentId); - List refundDtoList = tickets.stream() + return tickets.stream() .map(refund) .map(TicketRefundDTO::new) .collect(Collectors.toList()); - - return new TicketsRefundDTO(refundDtoList); } private List getTicketsByInTicketIds(List ticketIds) { diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/TicketDetailsDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/TicketDetailsDTO.java deleted file mode 100644 index 1a95734..0000000 --- a/server/src/main/java/com/ticketing/server/movie/service/dto/TicketDetailsDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.ticketing.server.movie.service.dto; - -import com.ticketing.server.movie.application.response.TicketDetailsResponse; -import com.ticketing.server.payment.service.dto.TicketDetailDTO; -import java.util.List; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public class TicketDetailsDTO { - - private final List ticketDetails; - - public TicketDetailsResponse toResponse() { - return new TicketDetailsResponse(ticketDetails); - } -} diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/TicketListDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/TicketListDTO.java deleted file mode 100644 index ab8bdaa..0000000 --- a/server/src/main/java/com/ticketing/server/movie/service/dto/TicketListDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.ticketing.server.movie.service.dto; - -import com.ticketing.server.movie.application.response.TicketListResponse; -import java.util.List; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public class TicketListDTO { - - private final List ticketDtos; - - public TicketListResponse toResponse() { - return new TicketListResponse(ticketDtos); - } - -} diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/TicketsCancelDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/TicketsCancelDTO.java index aea8df8..a501a8d 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/dto/TicketsCancelDTO.java +++ b/server/src/main/java/com/ticketing/server/movie/service/dto/TicketsCancelDTO.java @@ -1,16 +1,22 @@ package com.ticketing.server.movie.service.dto; import com.ticketing.server.movie.application.response.TicketCancelResponse; +import com.ticketing.server.movie.domain.Ticket; import java.util.List; -import lombok.AllArgsConstructor; +import java.util.stream.Collectors; import lombok.Getter; @Getter -@AllArgsConstructor public class TicketsCancelDTO { private final List ticketIds; + public TicketsCancelDTO(List tickets) { + ticketIds = tickets.stream() + .map(Ticket::getId) + .collect(Collectors.toList()); + } + public TicketCancelResponse toResponse() { return new TicketCancelResponse(ticketIds); } diff --git a/server/src/main/java/com/ticketing/server/movie/service/dto/TicketsRefundDTO.java b/server/src/main/java/com/ticketing/server/movie/service/dto/TicketsRefundDTO.java deleted file mode 100644 index 8faeb72..0000000 --- a/server/src/main/java/com/ticketing/server/movie/service/dto/TicketsRefundDTO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ticketing.server.movie.service.dto; - -import java.util.List; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public class TicketsRefundDTO { - - private List tickets; - - public TicketsRefundResponse toResponse() { - return new TicketsRefundResponse(tickets); - } -} diff --git a/server/src/main/java/com/ticketing/server/movie/service/interfaces/TicketService.java b/server/src/main/java/com/ticketing/server/movie/service/interfaces/TicketService.java index 017369d..b3dbb5c 100644 --- a/server/src/main/java/com/ticketing/server/movie/service/interfaces/TicketService.java +++ b/server/src/main/java/com/ticketing/server/movie/service/interfaces/TicketService.java @@ -2,21 +2,21 @@ package com.ticketing.server.movie.service.interfaces; import com.ticketing.server.global.validator.constraints.NotEmptyCollection; import com.ticketing.server.movie.domain.Ticket; -import com.ticketing.server.movie.service.dto.TicketDetailsDTO; -import com.ticketing.server.movie.service.dto.TicketListDTO; +import com.ticketing.server.movie.service.dto.TicketDTO; +import com.ticketing.server.movie.service.dto.TicketRefundDTO; import com.ticketing.server.movie.service.dto.TicketsCancelDTO; -import com.ticketing.server.movie.service.dto.TicketsRefundDTO; import com.ticketing.server.movie.service.dto.TicketsReservationDTO; import com.ticketing.server.movie.service.dto.TicketsSoldDTO; +import com.ticketing.server.payment.service.dto.TicketDetailDTO; import java.util.List; import java.util.function.UnaryOperator; import javax.validation.constraints.NotNull; public interface TicketService { - TicketListDTO getTickets(@NotNull Long movieTimeId); + List getTickets(@NotNull Long movieTimeId); - TicketDetailsDTO findTicketsByPaymentId(@NotNull Long paymentId); + List findTicketsByPaymentId(@NotNull Long paymentId); TicketsReservationDTO ticketReservation(@NotEmptyCollection List ticketIds); @@ -24,6 +24,6 @@ public interface TicketService { TicketsCancelDTO ticketCancel(@NotEmptyCollection List ticketIds); - TicketsRefundDTO ticketsRefund(@NotNull Long paymentId, UnaryOperator refund); + List ticketsRefund(@NotNull Long paymentId, UnaryOperator refund); } diff --git a/server/src/main/java/com/ticketing/server/payment/api/impl/MovieClientImpl.java b/server/src/main/java/com/ticketing/server/payment/api/impl/MovieClientImpl.java index ef93e81..2614f45 100644 --- a/server/src/main/java/com/ticketing/server/payment/api/impl/MovieClientImpl.java +++ b/server/src/main/java/com/ticketing/server/payment/api/impl/MovieClientImpl.java @@ -8,15 +8,16 @@ import com.ticketing.server.movie.application.response.TicketDetailsResponse; import com.ticketing.server.movie.application.response.TicketReservationResponse; import com.ticketing.server.movie.application.response.TicketSoldResponse; import com.ticketing.server.movie.domain.Ticket; -import com.ticketing.server.movie.service.dto.TicketDetailsDTO; +import com.ticketing.server.movie.service.dto.TicketRefundDTO; import com.ticketing.server.movie.service.dto.TicketsCancelDTO; -import com.ticketing.server.movie.service.dto.TicketsRefundDTO; import com.ticketing.server.movie.service.dto.TicketsRefundResponse; import com.ticketing.server.movie.service.dto.TicketsReservationDTO; import com.ticketing.server.movie.service.dto.TicketsSoldDTO; import com.ticketing.server.movie.service.interfaces.TicketService; import com.ticketing.server.payment.api.MovieClient; +import com.ticketing.server.payment.service.dto.TicketDetailDTO; import java.time.LocalDateTime; +import java.util.List; import javax.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -31,8 +32,8 @@ public class MovieClientImpl implements MovieClient { @Override public TicketDetailsResponse getTicketsByPaymentId(@NotNull Long paymentId) { - TicketDetailsDTO ticketDetails = ticketService.findTicketsByPaymentId(paymentId); - return ticketDetails.toResponse(); + List ticketDetails = ticketService.findTicketsByPaymentId(paymentId); + return new TicketDetailsResponse(ticketDetails); } @Override @@ -55,14 +56,14 @@ public class MovieClientImpl implements MovieClient { @Override public TicketsRefundResponse ticketRefundByDateTime(TicketsRefundRequest request, LocalDateTime dateTime) { - TicketsRefundDTO ticketsRefundDto = ticketService.ticketsRefund(request.getPaymentId(), ticket -> ticket.refund(dateTime)); - return ticketsRefundDto.toResponse(); + List ticketRefundDTOS = ticketService.ticketsRefund(request.getPaymentId(), ticket -> ticket.refund(dateTime)); + return new TicketsRefundResponse(ticketRefundDTOS); } @Override public TicketsRefundResponse ticketRefund(TicketsRefundRequest request) { - TicketsRefundDTO ticketsRefundDto = ticketService.ticketsRefund(request.getPaymentId(), Ticket::refund); - return ticketsRefundDto.toResponse(); + List ticketRefundDtos = ticketService.ticketsRefund(request.getPaymentId(), Ticket::refund); + return new TicketsRefundResponse(ticketRefundDtos); } } diff --git a/server/src/test/java/com/ticketing/server/movie/service/TicketServiceImplTest.java b/server/src/test/java/com/ticketing/server/movie/service/TicketServiceImplTest.java index c11f49f..4c2bb86 100644 --- a/server/src/test/java/com/ticketing/server/movie/service/TicketServiceImplTest.java +++ b/server/src/test/java/com/ticketing/server/movie/service/TicketServiceImplTest.java @@ -10,7 +10,6 @@ import com.ticketing.server.global.exception.ErrorCode; import com.ticketing.server.global.exception.TicketingException; import com.ticketing.server.movie.domain.Ticket; import com.ticketing.server.movie.domain.repository.TicketRepository; -import com.ticketing.server.movie.service.dto.TicketDetailsDTO; import com.ticketing.server.movie.service.dto.TicketsReservationDTO; import com.ticketing.server.payment.service.dto.TicketDetailDTO; import java.util.Collections; @@ -53,8 +52,7 @@ class TicketServiceImplTest { when(ticketRepository.findTicketFetchJoinByPaymentId(1L)).thenReturn(List.of(tickets.get(0))); // when - TicketDetailsDTO ticketDetailDto = ticketService.findTicketsByPaymentId(1L); - List ticketDetails = ticketDetailDto.getTicketDetails(); + List ticketDetails = ticketService.findTicketsByPaymentId(1L); // then assertAll( @@ -66,14 +64,14 @@ class TicketServiceImplTest { @Test @DisplayName("티켓목록 예약으로 변경 시 조회된 갯수랑 다른 경우") void ticketReservationFail() { - // given + // given List tickets = setupTickets(); List list = List.of(tickets.get(0), tickets.get(1), tickets.get(2)); List ids = List.of(0L, 1L, 2L, 10000L); when(ticketRepository.findTicketFetchJoinByTicketIds(ids)).thenReturn(list); - // when + // when // then assertThatThrownBy(() -> ticketService.ticketReservation(ids)) .isInstanceOf(TicketingException.class) @@ -84,14 +82,14 @@ class TicketServiceImplTest { @Test @DisplayName("티켓목록 예약으로 변경 완료") void ticketReservationSuccess() { - // given + // given List tickets = setupTickets(); List list = List.of(tickets.get(0), tickets.get(1), tickets.get(2)); List ids = List.of(0L, 1L, 2L); when(ticketRepository.findTicketFetchJoinByTicketIds(ids)).thenReturn(list); - // when + // when TicketsReservationDTO ticketReservationsDto = ticketService.ticketReservation(ids); // then