From 0540df40ac164b1679766c68f0f11a62e248b358 Mon Sep 17 00:00:00 2001 From: hyowon Date: Thu, 14 Aug 2025 21:19:57 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[fix/#63]=20=EA=B2=B0=EC=9E=AC=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=EB=90=9C=20=EC=98=88=EC=95=BD=EB=A7=8C=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/ReservationRepository.java | 15 ++++++++++-- .../service/ReservationServiceImpl.java | 24 +++++++++---------- 2 files changed, 25 insertions(+), 14 deletions(-) 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); }); From fd496cde641614a2518c8c8ea3a03cf08868dfcc Mon Sep 17 00:00:00 2001 From: hyowon Date: Thu, 14 Aug 2025 21:35:59 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[fix/#63]=20=EA=B2=B0=EC=A0=9C=20=EA=B8=88?= =?UTF-8?q?=EC=95=A1=EC=9D=84=20=EC=88=99=EC=86=8C=20=EA=B8=88=EC=95=A1?= =?UTF-8?q?=EC=9D=B4=20=EC=95=84=EB=8B=8C=20=EC=8B=A4=EC=A0=9C=20=EA=B2=B0?= =?UTF-8?q?=EC=9E=AC=20=EA=B0=92=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sumte/payment/service/PaymentServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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")