feat: 관리자 환불 구현
This commit is contained in:
@@ -109,7 +109,7 @@ public class TicketServiceImpl implements TicketService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public TicketsRefundDTO myTicketsRefund(@NotNull Long paymentId) {
|
||||
public TicketsRefundDTO ticketRefundByDateTime(@NotNull Long paymentId) {
|
||||
List<Ticket> tickets = ticketRepository.findTicketFetchJoinByPaymentId(paymentId);
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
@@ -121,6 +121,19 @@ public class TicketServiceImpl implements TicketService {
|
||||
return new TicketsRefundDTO(refundDtoList);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public TicketsRefundDTO ticketsRefund(@NotNull Long paymentId) {
|
||||
List<Ticket> tickets = ticketRepository.findTicketFetchJoinByPaymentId(paymentId);
|
||||
|
||||
List<TicketRefundDTO> refundDtoList = tickets.stream()
|
||||
.map(Ticket::refund)
|
||||
.map(TicketRefundDTO::new)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return new TicketsRefundDTO(refundDtoList);
|
||||
}
|
||||
|
||||
private List<Ticket> getTicketsByInTicketIds(List<Long> ticketIds) {
|
||||
List<Ticket> tickets = ticketRepository.findTicketFetchJoinByTicketIds(ticketIds);
|
||||
|
||||
|
||||
@@ -22,5 +22,7 @@ public interface TicketService {
|
||||
|
||||
TicketsCancelDTO ticketCancel(@NotEmptyCollection List<Long> ticketIds);
|
||||
|
||||
TicketsRefundDTO myTicketsRefund(@NotNull Long paymentId);
|
||||
TicketsRefundDTO ticketRefundByDateTime(@NotNull Long paymentId);
|
||||
|
||||
TicketsRefundDTO ticketsRefund(@NotNull Long paymentId);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ MovieSetupService {
|
||||
initTheater();
|
||||
initMovieTime();
|
||||
initTicket();
|
||||
initPayment();
|
||||
// initPayment();
|
||||
}
|
||||
|
||||
private void initMovie() {
|
||||
|
||||
@@ -21,5 +21,7 @@ public interface MovieClient {
|
||||
|
||||
TicketCancelResponse ticketCancel(@NotNull TicketCancelRequest request);
|
||||
|
||||
TicketsRefundResponse myTicketRefund(TicketsRefundRequest request);
|
||||
TicketsRefundResponse ticketRefundByDateTime(TicketsRefundRequest request);
|
||||
|
||||
TicketsRefundResponse ticketRefund(TicketsRefundRequest request);
|
||||
}
|
||||
|
||||
@@ -52,8 +52,14 @@ public class MovieClientImpl implements MovieClient {
|
||||
}
|
||||
|
||||
@Override
|
||||
public TicketsRefundResponse myTicketRefund(TicketsRefundRequest request) {
|
||||
TicketsRefundDTO ticketsRefundDto = ticketService.myTicketsRefund(request.getPaymentId());
|
||||
public TicketsRefundResponse ticketRefundByDateTime(TicketsRefundRequest request) {
|
||||
TicketsRefundDTO ticketsRefundDto = ticketService.ticketRefundByDateTime(request.getPaymentId());
|
||||
return ticketsRefundDto.toResponse();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TicketsRefundResponse ticketRefund(TicketsRefundRequest request) {
|
||||
TicketsRefundDTO ticketsRefundDto = ticketService.ticketRefundByDateTime(request.getPaymentId());
|
||||
return ticketsRefundDto.toResponse();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ticketing.server.payment.application;
|
||||
|
||||
import static com.ticketing.server.user.domain.UserGrade.ROLES.STAFF;
|
||||
import static com.ticketing.server.user.domain.UserGrade.ROLES.USER;
|
||||
|
||||
import com.ticketing.server.payment.application.request.PaymentReadyRequest;
|
||||
@@ -98,4 +99,13 @@ public class PaymentController {
|
||||
.body(paymentRefundDto.toResponse());
|
||||
}
|
||||
|
||||
@PostMapping("/staff/refund")
|
||||
@Secured(STAFF)
|
||||
public ResponseEntity<PaymentRefundResponse> adminRefund(@RequestBody @Valid PaymentRefundRequest request) {
|
||||
PaymentRefundDTO paymentRefundDto = paymentApisService.paymentRefund(request.getPaymentId());
|
||||
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
.body(paymentRefundDto.toResponse());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -176,7 +176,25 @@ public class PaymentApisServiceImpl implements PaymentApisService {
|
||||
);
|
||||
|
||||
// 내부 환불진행
|
||||
TicketsRefundResponse refundResponse = movieClient.myTicketRefund(new TicketsRefundRequest(payment.getId()));
|
||||
TicketsRefundResponse refundResponse = movieClient.ticketRefundByDateTime(new TicketsRefundRequest(payment.getId()));
|
||||
payment.refund();
|
||||
|
||||
return new PaymentRefundDTO(payment, kakaoPayCancelResponse, refundResponse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PaymentRefundDTO paymentRefund(@NotNull Long paymentId) {
|
||||
Payment payment = paymentRepository.findById(paymentId)
|
||||
.orElseThrow(ErrorCode::throwPaymentIdNotFound);
|
||||
|
||||
// 카카오페이 환불
|
||||
KakaoPayCancelResponse kakaoPayCancelResponse = kakaoPayClient.cancel(
|
||||
kakaoPayProperties.getAuthorization(),
|
||||
new KakaoPayCancelRequest(payment.getTid(), payment.getTotalPrice())
|
||||
);
|
||||
|
||||
// 내부 환불진행
|
||||
TicketsRefundResponse refundResponse = movieClient.ticketRefund(new TicketsRefundRequest(payment.getId()));
|
||||
payment.refund();
|
||||
|
||||
return new PaymentRefundDTO(payment, kakaoPayCancelResponse, refundResponse);
|
||||
|
||||
@@ -21,4 +21,6 @@ public interface PaymentApisService {
|
||||
PaymentCancelDTO cancel(@NotEmpty String email);
|
||||
|
||||
PaymentRefundDTO myPaymentRefund(@NotNull Long paymentId);
|
||||
|
||||
PaymentRefundDTO paymentRefund(@NotNull Long paymentId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user