package com.czg.market.entity;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;

import java.io.Serial;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 营销推送发送记录 实体类。
 *
 * @author ww
 * @since 2025-10-14
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("sms_push_event")
public class SmsPushEvent implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @Id(keyType = KeyType.Auto)
    private Long id;

    private Long shopId;

    /**
     * 推送类型 1 模版推送 2短信推送 无用 暂留
     */
    private Integer pushType;

    /**
     * 模板ID
     */
    private Long pushEventId;

    /**
     * 1 全部用户 2范围用户 3 指定用户 指定暂定一个用户
     */
    private Long userType;
    /**
     * 预计人数
     */
    private Long estimateNum;
     /**
      * 实际人数
      */
    private Long actualNum;
     /**
      * 成功人数
      */
    private Long successNum;

    /**
     * 指定用户时 使用
     */
    private String userId;

    /**
     * 0待发送 1 发送中  2发送完成 -1失败
     */
    private Integer status;

    /**
     * 发送内容
     */
    private String content;
     /**
      * 发送参数json
      * {"店铺名称":"火锅店","时间":"2025-02-17"}
      */
    private String json;

    /**
     * 赠送券信息[{"id":"268700","num":12,"title":"邀新10元优惠券"}]
     */
    private String coupon;

    /**
     * 发送类型 1 立即发送 2定时发送
     */
    private Integer sendType;

    /**
     * 发送时间
     */
    private LocalDateTime sendTime;

    /**
     * 创建时间
     */
    @Column(onInsertValue = "now()")
    private LocalDateTime createTime;

    @Column(onInsertValue = "now()", onUpdateValue = "now()")
    private LocalDateTime updateTime;

    /**
     * 失败原因
     */
    private String error;
     /**
     * 是否删除 0 未删除 1 删除
     */
    private Integer isDel;

}
