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-20
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("ac_push_event")
public class AcPushEvent implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

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

    private Long shopId;

    /**
     * 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 shopName;

    /**
     * 活动描述(商品名称)
     */
    private String activityDetail;

    /**
     * 活动时间(发货时间)
     */
    private String activityTime;

    /**
     * 商家地址(收货地址)
     */
    private String address;

    /**
     * 赠送券信息[{"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;

    /**
     * 逻辑删除
     */
    @Column(isLogicDelete = true)
    private Integer isDel;

}
