package cn.axzo.msg.center.domain.entity;

import cn.axzo.msg.center.domain.persistence.BaseOwnEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 消息重试表
 * </p>
 *
 * @author szg
 * @since 2021-05-27
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("mns_message_redo")
public class MNSMessageRedo extends BaseOwnEntity<MNSMessageRedo> {

    private static final long serialVersionUID=1L;

    /**
     * 应用no
     */
    @TableField("app_no")
    private String appNo;

    /**
     * APP请求号
     */
    @TableField("request_no")
    private String requestNo;

    /**
     * 请求渠道号
     */
    @TableField("message_order_no")
    private String messageOrderNo;

    /**
     * 重试请求渠道号
     */
    @TableField("redo_order_no")
    private String redoOrderNo;

    /**
     * 渠道回执id
     */
    @TableField("channel_biz_id")
    private String channelBizId;

    /**
     * 消息类型(M:邮件;S:短信)
     */
    @TableField("message_type")
    private String messageType;

    /**
     * 通知类型(REAL:实时发送;BATCH:批量发送;DELAY:延迟发送)
     */
    @TableField("notify_type")
    private String notifyType;

    /**
     * 状态(INIT:初始化;PROCESSING:处理中;EXCEPTION:处理异常;FAIL:处理失败;SUCCESS:成功)
     */
    @TableField("status")
    private String status;

    /**
     * 渠道码
     */
    @TableField("channel_code")
    private String channelCode;

    /**
     * 渠道名称
     */
    @TableField("channel_name")
    private String channelName;

    /**
     * 模板号
     */
    @TableField("template_no")
    private String templateNo;

    /**
     * 内容
     */
    @TableField("subject")
    private String subject;

    /**
     * 通知地址
     */
    @TableField("target_address")
    private String targetAddress;

    /**
     * 重试标记(N:未重度;Y:重试中)
     */
    @TableField("retrying_flag")
    private String retryingFlag;

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

    /**
     * 通知策略(30, 60, 120)
     */
    @TableField("notify_rule")
    private String notifyRule;

    /**
     * 重试时间
     */
    @TableField("retry_at")
    private Date retryAt;


    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
