pricelees ed383c3092 [#11] Payment 도메인 코드 코틀린 마이그레이션 (#12)
<!-- 제목 양식 -->
<!-- [이슈번호] 작업 요약 (예시: [#10] Gitea 템플릿 생성) -->

## 📝 관련 이슈 및 PR
**PR과 관련된 이슈 번호**
- #11

##  작업 내용
<!-- 어떤 작업을 했는지 알려주세요! -->
payment 패키지 내 코드, 테스트를 코틀린으로 전환했고 일부 로직은 개선하였음. 전체적으로 구조를 개선하려고 했으나, 얽혀있는 예약 관련 로직이 많아 전체 코드의 코틀린 전환이 끝난 이후 개선할 예정

## 🧪 테스트
<!-- 어떤 테스트를 생각했고 진행했는지 알려주세요! -->
1. \@DataJpaTest를 이용하는 Repository 테스트를 추가
2. Service는 mocking 방식으로 수정하였고, 테스트가 불필요하다고 여겨지는 단순 로직(변환 또는 Repository만 사용하는 경우)은 제외하였음. (8577b68496)
- 전체 로직이 테스트되어있는 기존의 테스트는 유지하였고, 전체 코틀린 전환이 마무리 된 후 제거 예정

## 📚 참고 자료 및 기타
<!-- 참고한 자료, 또는 논의할 사항이 있다면 알려주세요! -->

Reviewed-on: #12
Co-authored-by: pricelees <priceelees@gmail.com>
Co-committed-by: pricelees <priceelees@gmail.com>
2025-07-16 09:19:28 +00:00

37 lines
1.4 KiB
Java

package roomescape.reservation.dto.request;
import java.time.LocalDate;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import roomescape.payment.web.PaymentApprove;
@Schema(name = "회원의 예약 저장 요청", description = "회원의 예약 요청시 사용됩니다.")
public record ReservationRequest(
@NotNull(message = "예약 날짜는 null일 수 없습니다.")
@Schema(description = "예약 날짜. 지난 날짜는 지정할 수 없으며, yyyy-MM-dd 형식으로 입력해야 합니다.", type = "string", example = "2022-12-31")
LocalDate date,
@NotNull(message = "예약 요청의 timeId는 null일 수 없습니다.")
@Schema(description = "예약 시간 ID.", example = "1")
Long timeId,
@NotNull(message = "예약 요청의 themeId는 null일 수 없습니다.")
@Schema(description = "테마 ID", example = "1")
Long themeId,
@Schema(description = "결제 위젯을 통해 받은 결제 키")
String paymentKey,
@Schema(description = "결제 위젯을 통해 받은 주문번호.")
String orderId,
@Schema(description = "결제 위젯을 통해 받은 결제 금액")
Long amount,
@Schema(description = "결제 타입", example = "NORMAL")
String paymentType
) {
@JsonIgnore
public PaymentApprove.Request getPaymentRequest() {
return new PaymentApprove.Request(paymentKey, orderId, amount, paymentType);
}
}