package com.yc.ship.module.trade.controller.app.ota.vo;

import com.yc.ship.module.trade.api.dto.TradeOrderCreateReqDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * &#064;Description ：ota内部下单VO
 * &#064;Author ：qsl
 * &#064;Date ：2025/6/17 20:56
 */
@Schema(description = "ota内部下单创建 Request VO")
@Data
public class OtaInnerOrderVO {

    @Schema(description = "分销商订单ID", example = "")
    @NotBlank(message = "分销商订单ID不能为空")
    private String otaOrderId;

    @Schema(description = "分销商原始订单号", example = "")
    @NotBlank(message = "分销商原始订单号不能为空")
    private String otaOriginOrderNo;

    @Schema(description = "产品ID", example = "")
    @NotBlank(message = "产品ID不能为空")
    private String productId;

    @Schema(description = "出行日期", example = "2025-06-01")
    private Date travelDate;

    @Schema(description = "订单联系信息", example = "")
    @NotNull(message = "联系人信息不能为空")
    private TradeOrderCreateReqDTO.OrderUser orderUser;

    @Schema(description = "订单明细列表", example = "")
    @NotEmpty(message = "订单明细列表不能为空")
    private List<TradeOrderCreateReqDTO.OrderDetail> detailList;

    @Schema(description = "游玩时间及时间方案", example = "")
    private Long routePlanId;

    @Schema(description = "订单备注", example = "xx游客岁数较大")
    private String remark;
    @Schema(description = "是否改签 0 否 1是", example = "")
    private Integer isChange;
    @Schema(description = "主订单ID，通过此订单再新增订单（增加产品/数量，改签时传递）", example = "")
    private String mainOrderNo;
    @Schema(description = "门店ID", example = "123")
    private Long storeId;
    @Schema(description = "门店名称", example = "123")
    private String storeName;
    @Schema(description = "组团社ID", example = "123")
    private Long agencyGroupId;
    @Schema(description = "区域经理", example = "")
    private Long areaManagerId;
    @Schema(description = "是否申请营销政策（0否 1是）", example = "")
    private Integer isMarketing;
    @Schema(description = "是否申请使用营销政策（0否 1是）", example = "")
    private Integer isMarketingUse;
    @Schema(description = "是否改签 0 否 1是", example = "")
    private Integer isTimePay;
    @Schema(description = "是否增加订单 0 否 1是", example = "")
    private Integer isAddOrder;
    @Schema(description = "酒店预定信息", example = "")
    private TradeOrderCreateReqDTO.HotelBooking hotelBooking;
    @Schema(description = "商品交付信息", example = "")
    private TradeOrderCreateReqDTO.DeliveryInfo deliveryInfo;
}
