NaverRequest

네이버 API 요청 DTO. 네이버 프로모션 검증용.

클래스 구조

프로모션 검증 요청.

필드타입설명
promotionIdString프로모션 ID
promotionAmountLong프로모션 금액
adultCountInt성인 수
childCountInt아동 수
infantCountInt유아 수
cabinClassString좌석 등급
tripTypeString여정 타입
itinerariesList<Itinerary>여정 목록

cabinClass 값:

  • FIRST_CLASS: 일등석
  • BUSINESS_CLASS: 비즈니스석
  • PREMIUM_ECONOMY_CLASS: 프리미엄 이코노미
  • ECONOMY_CLASS: 이코노미

tripType 값:

  • ONE_WAY: 편도
  • ROUND_TRIP: 왕복

Itinerary

여정 정보.

필드타입설명
departureLocationCodeString출발지 코드
arrivalLocationCodeString도착지 코드
departureDateString출발일 (yyyyMMdd)

팩토리 메서드:

fun of(schedule: ScheduleDetail): Itinerary

팩토리 메서드

fun of(
    naverPromotion: NaverPromotion,
    flightDetails: List<FlightDetail>,
    adult: Int,
    child: Int,
    infant: Int,
): NaverPromotionValidationRequest

도메인 모델에서 요청 DTO 생성.

변환 로직:

  1. TripType 결정: 2개 이상이면 ROUND_TRIP
  2. CabinClass 변환: CabinType → 문자열
  3. TripType 변환: TripType → 문자열
  4. 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을 문자열로 변환
  • 프로모션 금액 계산: 승객 수 기반 총 금액 계산