package com.cpop.jambox.business.entity;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Date;
import java.time.LocalDate;

/**
 * 果酱-课卡模板 实体类。
 *
 * @author DB
 * @since 2023-09-27
 */
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_j_card_template", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class CardTemplate extends BaseEntity implements Serializable {

    /**
     * 主键
     */
    @Id
    private String id;

    /**
     * 旧模板id
     */
    private String oldTemplateId;

    /**
     * 品牌id
     */
    private String brandId;

    /**
     * 校区id
     */
    private String storeId;

    /**
     * 是否使用(0否1是)
     */
    private Boolean status;

    /**
     * 模板名
     */
    private String name;

    /**
     * 有效日期数
     */
    private Integer validDay;

    /**
     * 结束日期
     */
    private LocalDate endDate;

    /**
     * 价格
     */
    private BigDecimal price;

    /**
     * 课时
     */
    private Integer classNumber;

    /**
     * 周预约数
     */
    private Integer weekAppointment;

    /**
     * 日预约数
     */
    private Integer dayAppointment;

    /**
     * 缓冲天数
     */
    private Integer bufferDay;

    /**
     * 模板类型(0:课时卡,1:时限卡,2:储值卡)
     */
    private Integer templateType;

    /**
     * 使用范围
     */
    private String scopeUse;

    /**
     * 太阳码
     */
    private String qrCode;

    /**
     * 是否是会员(0否1是)
     */
    private Boolean isMember;

    /**
     * 是否是引流卡
     */
    private Boolean isDrainage;

    /**
     * 逻辑删除(0否1是)
     */
    @Column(isLogicDelete = true)
    private Boolean isDelete;

}
