package com.yc.ship.module.trade.controller.admin.order.vo.order;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.yc.ship.module.trade.dal.dataobject.order.TradeVisitorDO;
import com.yc.ship.module.trade.enums.VoucherStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author qsl
 * @description todo
 * @date 2025/7/22 16:10
 */
@Schema(description = "管理后台 - 交易订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class TradeDetailRespVO {
    /**
     * 主键
     */
    @Schema(description = "主键")
    private Long id;
    /**
     * 订单ID
     */
    @Schema(description = "订单号")
    private Long orderId;
    /**
     * 订单ID
     */
    @Schema(description = "订单号")
    private String orderNo;
    /**
     * 凭证码
     */
    @Schema(description = "凭证码")
    private String voucherCode;
    /**
     * 票券状态
     * 关联 {@link VoucherStatusEnum}
     */
    @Schema(description = "票券状态")
    private Integer voucherStatus;
    /**
     * 使用日期
     */
    @Schema(description = "使用日期")
    private LocalDateTime useDate;
    /**
     * 有效开始时间
     */
    @Schema(description = "有效开始时间")
    private LocalDateTime validityStartDate;
    /**
     * 有效截止时间
     */
    @Schema(description = "有效截止时间")
    private LocalDateTime validityEndDate;
    /**
     * 可使用天数
     */
    @Schema(description = "可使用天数")
    private Integer usageDays;
    /**
     * 核验状态
     */
    @Schema(description = "核验状态")
    private Integer checkStatus;
    /**
     * 取票状态
     */
    @Schema(description = "取票状态")
    private Integer takeStatus;
    /**
     * 退票状态
     */
    @Schema(description = "退票状态")
    private Integer refundStatus;
    /**
     * 核销时间
     */
    @Schema(description = "核销时间")
    private LocalDateTime verifyTime;
    /**
     * 游玩时间
     */
    @Schema(description = "游玩时间")
    private LocalDateTime travelDate;
    /**
     * 激活状态
     */
    @Schema(description = "激活状态")
    private Integer activateStatus;
    /**
     * 激活天数
     */
    @Schema(description = "激活天数")
    private Integer activateDays;
    /**
     * 激活时间
     */
    @Schema(description = "激活时间")
    private LocalDateTime activateTime;
    /**
     * 激活时间
     */
    @Schema(description = "检票开始日期")
    private LocalDateTime checkStartDate;
    /**
     * 激活时间
     */
    @Schema(description = "检票结束日期")
    private LocalDateTime checkEndDate;
    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    /**
     * 产品
     */
    @Schema(description = "产品")
    private Long productId;
    /**
     * 产品
     */
    @Schema(description = "产品类型0自建产品 1平台产品")
    private int productType;
    /**
     * 产品名称
     */
    @Schema(description = "产品名称")
    private String productName;
    /**
     * 产品分类名称
     */
    @Schema(description = "产品分类名称")
    private String productCategoryName;
    /**
     * 规格类型
     */
    @Schema(description = "规格类型")
    private String specType;
    /**
     * 资源规格
     */
    @Schema(description = "资源规格")
    private String detailSpecDes;
    /**
     * 价格
     */
    @Schema(description = "价格")
    private BigDecimal price;
    /**
     * 实际支付金额
     */
    @Schema(description = "实际支付金额")
    private BigDecimal actualPrice;
    /**
     * 一票多人数量
     */
    @Schema(description = "一票多人数量")
    private Integer quantityOfOne;
    /**
     * 是否实名
     */
    @Schema(description = "是否实名")
    private Integer useRealName;

    @Schema(description = "游客id")
    private Long visitorId;

    @Schema(description = "游客信息")
    private List<TradeVisitorDO> visitors;


    @Schema(description = "财务标签")
    private int productTag;

    @Schema(description = "运营标签")
    private int productTag2;

    @Schema(description = "补票新规格")
    private String suppSpecType;


    @Schema(description = "酒店订单ID")
    private Long hotelOrderId;

    @Schema(description = "时间方案ID")
    private Long routePlanId;
    /**
     * 时间方案分组类型
     */
    @Schema(description = "时间方案分组类型")
    private Integer routePlanGroupType;
    /**
     * 打包产品ID
     */
    @Schema(description = "打包产品ID")
    private Long packProductId;
    /**
     * 打包产品名称
     */
    @Schema(description = "打包产品ID")
    private String packProductName;

    @Schema(description = "产品分类")
    private Integer cateType;


}
