package com.yc.ship.module.product.dal.dataobject.productBasicRule;

import com.baomidou.mybatisplus.annotation.*;
import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
import lombok.*;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 产品基础规则 DO
 *
 * @author 管理员
 */
@TableName("product_basic_rule")
@KeySequence("product_basic_rule_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductBasicRuleDO extends TenantBaseDO {

    /**
     * 主键
     */
    @TableId
    private Long id;
    /**
     * 是否需要出行日期 0不需要 1需要
     */
    private Integer needPlayDate;
    /**
     * 有效期类型：1出行日期当天 2下单后X天内 3出行日期前后X天内 4出行日期至指定日期
     */
    private Integer validityType;
    /**
     * 有效期天数（类型中的X）
     */
    private Integer validityNum;
    /**
     * 有效期类型中的指定日期
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDateTime validityDate;
    /**
     * 销售开始日期
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDate saleStartDate;
    /**
     * 销售结束日期
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDate saleEndDate;
    /**
     * 检票开始日期
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDate checkStartDate;
    /**
     * 检票结束日期
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDate checkEndDate;
    /**
     * 销售开始时间
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String saleStartTime;
    /**
     * 销售结束时间
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String saleEndTime;
    /**
     * 检票开始时间
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String checkStartTime;
    /**
     * 检票结束时间
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String checkEndTime;
    /**
     * 库存数 不填不限制
     */
    private Integer stock;
    /**
     * 产品名称
     */
    @TableField(exist = false)
    private String productName;

}