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


import cn.axzo.msg.center.api.enums.MsgRecordTerminalTypeEnum;
import cn.axzo.msg.center.api.enums.MsgStateEnum;
import cn.axzo.msg.center.api.enums.MsgTypeEnum;
import cn.axzo.msg.center.api.enums.ReceiveTypeEnum;
import cn.axzo.msg.center.domain.persistence.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

/**
 * 消息记录(MessageRecord)实体类
 *
 * @author makejava
 * @since 2022-03-28 14:59:16
 */
@TableName("message_record")
@Data
public class MessageRecord extends BaseEntity<MessageRecord> {

  /**
   * 发送者ID
   */
  private Long fromId;
  /**
   * 接收者ID
   */
  private Long toId;
  /**
   * 自然人 ID
   */
  private Long personId;
  /**
   * 消息类型：1普通，2待办
   */
  private MsgTypeEnum type;
  /**
   * 模板与模块关系id
   */
  private Long relationId;
  /**
   * 模块 ID
   */
  private Long moduleId;
  /**
   * 消息标题
   */
  private String title;
  /**
   * 消息内容
   */
  private String content;
  /**
   * 接收者类型：1cm_leader，2cm_worker，3cmp_user，4not_identity,5 normal
   */
  private ReceiveTypeEnum receiveType;
  /**
   * 消息所属标识类型 1:项目 2:企业
   */
  private MsgRecordTerminalTypeEnum terminalType;
  /**Inside
   * 消息所属标识Id  用于跳转
   */
  private Long terminalId;
  /**
   * 消息所属标识名称  有则展示
   */
  private String terminalName;
  /**
   * 消息状态：1未发送，2已发送，3已接收，4已读，5已完成
   */
  private MsgStateEnum state;
  /**
   * 关联业务主键
   */
  private Long bizId;
  /**
   * 路由参数（留存）
   */
  private String routerParams;

  public String getRouterParams() {
    return routerParams;
  }

  /**
   * JSON 格式扩展信息
   */
  private String extra;
  /**
   * 重试次数：默认保存时为0
   */
  private Integer retryCount;
  /**
   * 异常回调地址
   */
  private String callbackUrl;
  /**
   * 最终失败原因
   */
  private String failCause;

  /**
   * 原消息type_id
   */
  private Integer oldTypeId;

  /**
   * 用于补偿的数据
   */
  private String eventSource;

  /**
   * 租户id，解决多个企业的问题
   */
  private Long tenantId;
}

