package com.yc.ship.module.trade.dal.dataobject.order;

import com.baomidou.mybatisplus.annotation.*;

import com.yc.ship.framework.mybatis.core.dataobject.TenantSyncDO;
import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
import com.yc.ship.module.trade.enums.VoucherStatusEnum;
import lombok.*;

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

/**
 * 订单明细 DO
 *
 * @author 管理员
 */
@TableName("trade_detail")
@KeySequence("trade_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TradeDetailDO extends TenantSyncDO {

    /**
     * 主键
     */
    @TableId(type= IdType.INPUT)
    private Long id;
    /**
     * 订单ID
     */
    private Long orderId;
    /**
     * 游客ID
     */
    private Long visitorId;
    /**
     * 酒店订单ID
     */
    private Long hotelOrderId;
    /**
     * 类型  1：游船 2：附加产品 3：赠票
     */
    private Long routePlanId;
    /**
     * 时间方案分组类型
     */
    private Integer routePlanGroupType;
    /**
     * 凭证码
     */
    private String voucherCode;
    /**
     * 票券状态
     * 关联 {@link VoucherStatusEnum}
     */
    private Integer voucherStatus;
    /**
     * 使用日期
     */
    private LocalDateTime useDate;
    /**
     * 有效开始时间
     */
    private LocalDateTime validityStartDate;
    /**
     * 有效截止时间
     */
    private LocalDateTime validityEndDate;
    /**
     * 可使用天数
     */
    private Integer usageDays;
    /**
     * 核验状态
     */
    private Integer checkStatus;
    /**
     * 取票状态
     */
    private Integer takeStatus;
    /**
     * 退票状态0未退款 1全部退 2部分退
     */
    private Integer refundStatus;
    /**
     * 核销时间
     */
    private LocalDateTime verifyTime;
    /**
     * 激活状态
     */
    private Integer activateStatus;
    /**
     * 激活天数
     */
    private Integer activateDays;
    /**
     * 激活时间
     */
    private LocalDateTime activateTime;
    /**
     * 产品
     */
    private Long productId;
    /**
     * 产品名称
     */
    private String productName;

    /**
     * 产品类型 0 游船产品 1 附加产品 2：赠票
     */
    private Integer productType;
    /**
     * 产品分类类型 同组合产品分类 景区 、 餐饮、 商品
     */
    private Integer cateType;
    /**
     * 规格类型
     */
    private String specType;
    /**
     * 价格
     */
    private BigDecimal price;
    /**
     * 实际支付金额
     */
    private BigDecimal actualPrice;
    /**
     * 一票多人数量
     */
    private Integer quantityOfOne;
    /**
     * 是否实名
     */
    private Integer useRealName;

    /**
     * 过闸头像
     */
    private String faceimg;

    /**
     * 核销子票信息
     */
    @TableField(exist = false)
    private String CheckedDetailBaseNames;

}