NaverRequest
네이버 API 요청 DTO. 네이버 프로모션 검증용.
클래스 구조
NaverPromotionValidationRequest
프로모션 검증 요청.
| 필드 | 타입 | 설명 |
|---|---|---|
promotionId | String | 프로모션 ID |
promotionAmount | Long | 프로모션 금액 |
adultCount | Int | 성인 수 |
childCount | Int | 아동 수 |
infantCount | Int | 유아 수 |
cabinClass | String | 좌석 등급 |
tripType | String | 여정 타입 |
itineraries | List<Itinerary> | 여정 목록 |
cabinClass 값:
FIRST_CLASS: 일등석BUSINESS_CLASS: 비즈니스석PREMIUM_ECONOMY_CLASS: 프리미엄 이코노미ECONOMY_CLASS: 이코노미
tripType 값:
ONE_WAY: 편도ROUND_TRIP: 왕복
Itinerary
여정 정보.
| 필드 | 타입 | 설명 |
|---|---|---|
departureLocationCode | String | 출발지 코드 |
arrivalLocationCode | String | 도착지 코드 |
departureDate | String | 출발일 (yyyyMMdd) |
팩토리 메서드:
fun of(schedule: ScheduleDetail): Itinerary팩토리 메서드
NaverPromotionValidationRequest.of()
fun of(
naverPromotion: NaverPromotion,
flightDetails: List<FlightDetail>,
adult: Int,
child: Int,
infant: Int,
): NaverPromotionValidationRequest도메인 모델에서 요청 DTO 생성.
변환 로직:
- TripType 결정: 2개 이상이면 ROUND_TRIP
- CabinClass 변환: CabinType → 문자열
- TripType 변환: TripType → 문자열
- Itinerary 생성: 각 스케줄에서 추출
사용처
| 사용 위치 | 용도 |
|---|---|
| NaverClient | 프로모션 검증 API 호출 |
| FlightDetailService | 네이버 프로모션 검증 |
예시
{
"promotionId": "NAVER_AIR_2024",
"promotionAmount": 50000,
"adultCount": 2,
"childCount": 1,
"infantCount": 0,
"cabinClass": "ECONOMY_CLASS",
"tripType": "ROUND_TRIP",
"itineraries": [
{
"departureLocationCode": "ICN",
"arrivalLocationCode": "NRT",
"departureDate": "20240315"
},
{
"departureLocationCode": "NRT",
"arrivalLocationCode": "ICN",
"departureDate": "20240320"
}
]
}특징
- 네이버 API 형식: 네이버 항공권 API 규격 준수
- 날짜 형식: yyyyMMdd 형식
- Enum 문자열 변환: CabinType/TripType을 문자열로 변환
- 프로모션 금액 계산: 승객 수 기반 총 금액 계산