package com.hzs.common.domain.activity.ticket;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.BigDecimalFormat;
import com.hzs.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

/**
 * 门票
 *
 * @author hzs
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@KeySequence("AC_TICKET_SEQ")
@TableName("AC_TICKET")
public class AcTicket extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId("PK_ID")
    private Long pkId;

    /**
     * 活动名称
     */
    @NotEmpty(message = "活动名称不能为空")
    @TableField("ACT_NAME")
    private String actName;

    /**
     * 活动封面
     */
    @TableField("ACT_COVER")
    private String actCover;

    /**
     * 活动说明
     */
    @NotEmpty(message = "活动说明不能为空")
    @TableField("ACT_EXPLAIN")
    private String actExplain;

    /**
     * 活动开始时间
     */
    @NotNull(message = "活动开始时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("ACT_START_DATE")
    private Date actStartDate;

    /**
     * 活动结束时间
     */
    @NotNull(message = "活动结束时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("ACT_END_DATE")
    private Date actEndDate;

    /**
     * 显示开始时间 作为购买日期
     */
    @NotNull(message = "显示开始时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("DIS_START_DATE")
    private Date disStartDate;

    /**
     * 显示结束时间
     */
    @NotNull(message = "显示结束时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("DIS_END_DATE")
    private Date disEndDate;

    /**
     * 门票金额
     */
    @BigDecimalFormat
    @NotNull(message = "门票金额不能为空")
    @TableField("PAY_MONEY")
    private BigDecimal payMoney;

    /**
     * 数量
     */
    @Min(value = 1, message = "数量需要大于0")
    @Max(value = 999999, message = "数量需要小于999999")
    @NotNull(message = "数量不能为空")
    @TableField("QUANTITY")
    private Integer quantity;

    /**
     * 限购数量
     */
    @Min(value = 1, message = "限购数量需要大于0")
    @Max(value = 999999, message = "限购数量需要小于999999")
    @NotNull(message = "限购数量不能为空")
    @TableField("LIMIT_QUANTITY")
    private Integer limitQuantity;
    /**
     * 系统类型（2=新零售，3=美业）
     */
    @TableField("SYSTEM_TYPE")
    private Integer systemType;

}
