package com.yc.ship.module.trade.service.order.bo;

import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRoomModelVO;
import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderTotalVO;
import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderBindDO;
import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDeliveryDO;
import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderUserDO;
import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * &#064;Description ：订单BO
 * &#064;Date ：2025/6/6 21:45
 *
 * @author qsl
 */
@Data
public class TradeOrderBO {

    private TradeOrderDO tradeOrderDO;
    private TradeOrderDO oldTradeOrderDO;
    private TradeOrderUserDO tradeOrderUserDO;
    private List<TradeOrderDetailBO> tradeOrderDetailBOList;
    private TradeOrderDeliveryDO tradeOrderDeliveryDO;
    @Schema(description = "房型信息")
    private List<TradeOrderRoomModelVO> roomModelList;
    private ExtraInfo extraInfo;
    private OrderJzDO orderJzDO;
    private TradeOrderBindDO tradeOrderBindDO;
    private TradeOrderTotalVO summary;
    @Schema(description = "修改时间")
    private Date updateTime;

    @Data
    public static class ExtraInfo {
        @Schema(description = "个人分销ID", example = "123")
        private Long personalDistributorId;
        @Schema(description = "优惠券码ID", example = "123")
        private Long couponCodeId;
        @Schema(description = "链接ID", example = "123")
        private Long linkId;
        @Schema(description = "是否改签 0 否 1是", example = "")
        private Integer isChange;
        @Schema(description = "是否补票 0 否 1是", example = "")
        private Integer isTimePay;
        @Schema(description = "主订单ID，通过此订单再新增订单（增加产品/数量，改签时传递）", example = "")
        private Long mainOrderId;
        @Schema(description = "营销政策优惠券码ID，验证时返回", example = "123")
        private Long marketingCouponCodeId;
        @Schema(description = "营销政策名称，验证时返回", example = "123")
        private String marketingName;
        @Schema(description = "优惠金额", example = "123")
        private BigDecimal discountAmount;
        @Schema(description = "原始优惠金额", example = "123")
        private BigDecimal originPayAmount;
    }
}
