refactor: Ticket removed ListDTO
This commit is contained in:
@@ -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<TicketListResponse> getTickets(
|
||||
@ApiParam(value = "영화 시간표 ID", required = true) @RequestParam @NotNull Long movieTimeId) {
|
||||
TicketListDTO ticketListDto = ticketService.getTickets(movieTimeId);
|
||||
List<TicketDTO> 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<TicketDetailsResponse> findTicketsByPaymentId(
|
||||
@PathVariable("paymentId") @NotNull Long paymentId) {
|
||||
TicketDetailsDTO tickets = ticketService.findTicketsByPaymentId(paymentId);
|
||||
List<TicketDetailDTO> tickets = ticketService.findTicketsByPaymentId(paymentId);
|
||||
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
.body(
|
||||
tickets.toResponse()
|
||||
new TicketDetailsResponse(tickets)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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<TicketDTO> getTickets(@NotNull Long movieTimeId) {
|
||||
MovieTime movieTime = movieTimeRepository.findById(movieTimeId)
|
||||
.orElseThrow(ErrorCode::throwMovieTimeNotFound);
|
||||
|
||||
List<TicketDTO> 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<TicketDetailDTO> findTicketsByPaymentId(@NotNull Long paymentId) {
|
||||
List<TicketDetailDTO> 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<Ticket> tickets = getTicketsByInTicketIds(ticketIds);
|
||||
tickets.forEach(Ticket::cancel);
|
||||
|
||||
return new TicketsCancelDTO(ticketIds);
|
||||
return new TicketsCancelDTO(tickets);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public TicketsRefundDTO ticketsRefund(@NotNull Long paymentId, UnaryOperator<Ticket> refund) {
|
||||
public List<TicketRefundDTO> ticketsRefund(@NotNull Long paymentId, UnaryOperator<Ticket> refund) {
|
||||
List<Ticket> tickets = ticketRepository.findTicketFetchJoinByPaymentId(paymentId);
|
||||
|
||||
List<TicketRefundDTO> refundDtoList = tickets.stream()
|
||||
return tickets.stream()
|
||||
.map(refund)
|
||||
.map(TicketRefundDTO::new)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return new TicketsRefundDTO(refundDtoList);
|
||||
}
|
||||
|
||||
private List<Ticket> getTicketsByInTicketIds(List<Long> ticketIds) {
|
||||
|
||||
@@ -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<TicketDetailDTO> ticketDetails;
|
||||
|
||||
public TicketDetailsResponse toResponse() {
|
||||
return new TicketDetailsResponse(ticketDetails);
|
||||
}
|
||||
}
|
||||
@@ -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<TicketDTO> ticketDtos;
|
||||
|
||||
public TicketListResponse toResponse() {
|
||||
return new TicketListResponse(ticketDtos);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<Long> ticketIds;
|
||||
|
||||
public TicketsCancelDTO(List<Ticket> tickets) {
|
||||
ticketIds = tickets.stream()
|
||||
.map(Ticket::getId)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public TicketCancelResponse toResponse() {
|
||||
return new TicketCancelResponse(ticketIds);
|
||||
}
|
||||
|
||||
@@ -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<TicketRefundDTO> tickets;
|
||||
|
||||
public TicketsRefundResponse toResponse() {
|
||||
return new TicketsRefundResponse(tickets);
|
||||
}
|
||||
}
|
||||
@@ -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<TicketDTO> getTickets(@NotNull Long movieTimeId);
|
||||
|
||||
TicketDetailsDTO findTicketsByPaymentId(@NotNull Long paymentId);
|
||||
List<TicketDetailDTO> findTicketsByPaymentId(@NotNull Long paymentId);
|
||||
|
||||
TicketsReservationDTO ticketReservation(@NotEmptyCollection List<Long> ticketIds);
|
||||
|
||||
@@ -24,6 +24,6 @@ public interface TicketService {
|
||||
|
||||
TicketsCancelDTO ticketCancel(@NotEmptyCollection List<Long> ticketIds);
|
||||
|
||||
TicketsRefundDTO ticketsRefund(@NotNull Long paymentId, UnaryOperator<Ticket> refund);
|
||||
List<TicketRefundDTO> ticketsRefund(@NotNull Long paymentId, UnaryOperator<Ticket> refund);
|
||||
|
||||
}
|
||||
|
||||
@@ -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<TicketDetailDTO> 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<TicketRefundDTO> 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<TicketRefundDTO> ticketRefundDtos = ticketService.ticketsRefund(request.getPaymentId(), Ticket::refund);
|
||||
return new TicketsRefundResponse(ticketRefundDtos);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<TicketDetailDTO> ticketDetails = ticketDetailDto.getTicketDetails();
|
||||
List<TicketDetailDTO> ticketDetails = ticketService.findTicketsByPaymentId(1L);
|
||||
|
||||
// then
|
||||
assertAll(
|
||||
@@ -66,14 +64,14 @@ class TicketServiceImplTest {
|
||||
@Test
|
||||
@DisplayName("티켓목록 예약으로 변경 시 조회된 갯수랑 다른 경우")
|
||||
void ticketReservationFail() {
|
||||
// given
|
||||
// given
|
||||
List<Ticket> tickets = setupTickets();
|
||||
List<Ticket> list = List.of(tickets.get(0), tickets.get(1), tickets.get(2));
|
||||
List<Long> 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<Ticket> tickets = setupTickets();
|
||||
List<Ticket> list = List.of(tickets.get(0), tickets.get(1), tickets.get(2));
|
||||
List<Long> ids = List.of(0L, 1L, 2L);
|
||||
|
||||
when(ticketRepository.findTicketFetchJoinByTicketIds(ids)).thenReturn(list);
|
||||
|
||||
// when
|
||||
// when
|
||||
TicketsReservationDTO ticketReservationsDto = ticketService.ticketReservation(ids);
|
||||
|
||||
// then
|
||||
|
||||
Reference in New Issue
Block a user