diff --git a/src/main/java/com/sumte/payment/service/PaymentServiceImpl.java b/src/main/java/com/sumte/payment/service/PaymentServiceImpl.java index 5e31b68..5a038b4 100644 --- a/src/main/java/com/sumte/payment/service/PaymentServiceImpl.java +++ b/src/main/java/com/sumte/payment/service/PaymentServiceImpl.java @@ -43,7 +43,6 @@ public PaymentResponseDTO.PaymentReadyResponse requestPayment(PaymentRequestDTO. String itemName = reservation.getRoom().getName(); - Long totalAmount = reservation.getRoom().getPrice(); KakaoPayReadyRequestDTO request = KakaoPayReadyRequestDTO.builder() .cid("TC0ONETIME") @@ -51,7 +50,7 @@ public PaymentResponseDTO.PaymentReadyResponse requestPayment(PaymentRequestDTO. .partner_user_id("user_" + reservation.getUser().getId()) .item_name(itemName) .quantity("1") - .total_amount(String.valueOf(totalAmount)) + .total_amount(String.valueOf(dto.getAmount())) .tax_free_amount("0") .approval_url(redirectDomain + "/pay/success") .cancel_url(redirectDomain + "/pay/cancel") diff --git a/src/main/java/com/sumte/reservation/repository/ReservationRepository.java b/src/main/java/com/sumte/reservation/repository/ReservationRepository.java index c7b642d..41e3015 100644 --- a/src/main/java/com/sumte/reservation/repository/ReservationRepository.java +++ b/src/main/java/com/sumte/reservation/repository/ReservationRepository.java @@ -25,8 +25,19 @@ boolean existsOverlappingReservation(@Param("room") Room room, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate); - Page findAllByUser(User user, Pageable pageable); - List findByReservationStatusNot(ReservationStatus status); + @Query(""" +select r +from Reservation r +where r.user = :user + and exists ( + select 1 + from Payment p + where p.reservation = r + and p.paymentStatus = com.sumte.payment.entity.PaymentStatus.PAID + ) +""") + Page findAllPaidByUser(@Param("user") User user, Pageable pageable); + } diff --git a/src/main/java/com/sumte/reservation/service/ReservationServiceImpl.java b/src/main/java/com/sumte/reservation/service/ReservationServiceImpl.java index 8531a28..d7681a0 100644 --- a/src/main/java/com/sumte/reservation/service/ReservationServiceImpl.java +++ b/src/main/java/com/sumte/reservation/service/ReservationServiceImpl.java @@ -97,24 +97,24 @@ public Page getMyReservations(Pageable User user = userRepository.findById(userId) .orElseThrow(() -> new SumteException(CommonErrorCode.USER_NOT_FOUND)); - Page reservations = reservationRepository.findAllByUser(user, pageable); + Page reservations = reservationRepository.findAllPaidByUser(user, pageable); + return reservations.map(reservation -> { boolean isComplete = reservation.getReservationStatus().equals(ReservationStatus.COMPLETED); - boolean reviewWritten = reviewRepository.existsByUserIdAndRoomGuesthouseId(user.getId(), - reservation.getRoom().getGuesthouse().getId()); + boolean reviewWritten = reviewRepository.existsByUserIdAndRoomGuesthouseId( + user.getId(), reservation.getRoom().getGuesthouse().getId() + ); boolean canWriteReview = isComplete && !reviewWritten; - // 첫 번째 방 이미지 URL 조회 String firstImageUrl = imageRepository - .findByOwnerTypeAndOwnerIdOrderBySortOrderAsc( - OwnerType.ROOM, - reservation.getRoom().getId() - ) - .stream() - .map(Image::getUrl) - .findFirst() - .orElse(null); + .findByOwnerTypeAndOwnerIdOrderBySortOrderAsc( + OwnerType.ROOM, reservation.getRoom().getId() + ) + .stream() + .map(Image::getUrl) + .findFirst() + .orElse(null); return reservationConverter.toMyReservationDTO(reservation, firstImageUrl, canWriteReview, reviewWritten); });