package com.sckw.message.model;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 短信发送记录
* @date 2026-05-07 08:54:58
* @author xucaiqin
*/

@Schema(description="短信发送记录")
@Data
@TableName(value = "kwm_sms_record")
public class KwmSmsRecord  {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @Schema(description="主键")
    private Long id;

    /**
     * 业务编号
     */
    @TableField(value = "biz_no")
    @Schema(description="业务编号")
    private String bizNo;

    /**
     * 手机号
     */
    @TableField(value = "mobile")
    @Schema(description="手机号")
    private String mobile;

    /**
     * 模板编码
     */
    @TableField(value = "template_code")
    @Schema(description="模板编码")
    private String templateCode;

    /**
     * 实际短信内容
     */
    @TableField(value = "template_content")
    @Schema(description="实际短信内容")
    private String templateContent;

    /**
     * 模板参数
     */
    @TableField(value = "template_param")
    @Schema(description="模板参数")
    private String templateParam;

    /**
     * 短信类型
     */
    @TableField(value = "sms_type")
    @Schema(description="短信类型")
    private Integer smsType;

    /**
     * 发送渠道
     */
    @TableField(value = "channel_code")
    @Schema(description="发送渠道")
    private String channelCode;

    /**
     * 供应商消息ID
     */
    @TableField(value = "provider_msg_id")
    @Schema(description="供应商消息ID")
    private String providerMsgId;

    /**
     * 发送状态 0待发送 1成功 2失败 3发送中
     */
    @TableField(value = "send_status")
    @Schema(description="发送状态 0待发送 1成功 2失败 3发送中")
    private Integer sendStatus;

    /**
     * 失败原因
     */
    @TableField(value = "fail_reason")
    @Schema(description="失败原因")
    private String failReason;

    /**
     * 重试次数
     */
    @TableField(value = "retry_count")
    @Schema(description="重试次数")
    private Integer retryCount;

    /**
     * 最大重试次数
     */
    @TableField(value = "max_retry_count")
    @Schema(description="最大重试次数")
    private Integer maxRetryCount;

    /**
     * 下次重试时间
     */
    @TableField(value = "next_retry_time")
    @Schema(description="下次重试时间")
    private LocalDateTime nextRetryTime;

    /**
     * 幂等请求号
     */
    @TableField(value = "request_id")
    @Schema(description="幂等请求号")
    private String requestId;

    /**
     * 发送时间
     */
    @TableField(value = "send_time")
    @Schema(description="发送时间")
    private LocalDateTime sendTime;

    /**
     * 回执时间
     */
    @TableField(value = "callback_time")
    @Schema(description="回执时间")
    private LocalDateTime callbackTime;

    /**
     * 业务类型
     */
    @TableField(value = "biz_type")
    @Schema(description="业务类型")
    private String bizType;

    /**
     * 用户ID
     */
    @TableField(value = "user_id")
    @Schema(description="用户ID")
    private Long userId;

    /**
     * 请求IP
     */
    @TableField(value = "ip")
    @Schema(description="请求IP")
    private String ip;

    /**
     * 创建人
     */
    private Long createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    private Long updateBy;


    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;

    /**
     * 删除标识(0正常/-1删除)
     */
    @TableLogic
    private Integer delFlag;
}
