package com.njcn.msgpush.module.push.dal.dataobject.message;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.msgpush.framework.mybatis.core.dataobject.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * @author caozehui
 * @data 2026-02-06
 * @description 消息记录表对应的数据对象
 */
@Data
@TableName("push_message_record")
@EqualsAndHashCode(callSuper = true)
public class MessageRecordDO extends BaseDO {
    /**
     * 主键ID
     */
    private Long id;

    /**
     * 应用名称/来源系统标识
     */
    private String appName;

    /**
     * 渠道类型：sms/email/app
     */
    private String channel;

    /**
     * 消息类型：verify_code/order_notify/marketing/system_notify
     */
    private String messageType;

    /**
     * 接收者
     */
    private String receiver;

    /**
     * 标题
     */
    private String title;

    /**
     * 消息内容
     */
    private String content;

    /**
     * 模板编码
     */
    private String templateCode;

    /**
     * 模板参数
     */
    private String templateParams;


    /**
     * 状态：pending/sending/success/failed/final_failed/blacklisted/quota_exceeded/rate_limited/abandoned
     */
    private String status;

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

    /**
     * 发送耗时(毫秒)
     */
    private Integer costTime;

    /**
     * 已重试次数
     */
    private Integer retryCount;

    /**
     * 最后重试时间
     */
    private LocalDateTime lastRetryTime;

    /**
     * 下次重试时间
     */
    private LocalDateTime nextRetryTime;

    /**
     * 服务商类型：telecom/cmcc/aliyun/twilio
     */
    private String providerType;

    /**
     * 第三方消息ID
     */
    private String thirdPartyId;

    /**
     * 统一错误码
     */
    private String errorCode;

    /**
     * 错误信息
     */
    private String errorMsg;

    /**
     * 过期时间
     */
    private LocalDateTime expireTime;
}
