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

import com.baomidou.mybatisplus.annotation.*;
import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.math.BigDecimal;

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

    /**
     * 主键
     */
    @TableId(type= IdType.INPUT)
    private Long id;
    /**
     * 名称
     */
    private String name;
    /**
     * 简称
     */
    private String shortName;
    /**
     * 项目ID
     */
    private Long projectId;

    /**
     * 所属资源ID
     */
    private Long resourceCategoryId;
    /**
     * 优先资源ID
     */
    private Long firstResourceId;
    /**
     * 固定使用资源ID
     */
    private Long fixedResourceId;
    /**
     * 库存;不填表示不限制
     */
    private Integer stock;
    /**
     * 检票计算方式;(1.按基础票检票次数计算 2.按通道检票次数计算
     */
    private Integer checkType;
    /**
     * 有效期次数
     */
    private Integer checkTimes;
    /**
     * 能否重复购买:0不可以，1可以
     */
    private Integer canRepeatBuy;
    /**
     * 是否可以退票;0不可退，1可退
     */
    private Integer isRefund;
    /**
     * 是否自动检票;开启时只要组合票中有一张子票核销，该产品自动核销
     */
    private Integer isAutoCheck;
    /**
     * 是否购买即核销
     */
    private Integer isBuyCheck;
    /**
     * 开始点位
     */
    private Long startPoint;
    /**
     * 结束点位
     */
    private Long endPoint;
    /**
     * 线路ID
     */
    private Long routeId;
    /**
     * 是否启用0否 1是
     */
    private Integer useStatus;

    @TableField(exist = false)
    private String projectName;

    @TableField(exist = false)
    private String resourceName;

    private Integer isOnly;

    private BigDecimal priceOnly;

}