package cn.axzo.msg.center.api.request;

import cn.axzo.msg.center.api.enums.MsgRecordTerminalTypeEnum;
import cn.axzo.msg.center.api.enums.ReceiveTypeEnum;
import com.alibaba.fastjson.JSON;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Map;

/**
 * 通用消息
 *
 * @author wangli
 * @date 2022/3/21 16:42
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ToString
public class GeneralMessageReq extends AbstractMessage implements Serializable {

  /**
   * 接收者角色类型
   */
  @NotNull(message = "接收者类型不能为空")
  private ReceiveTypeEnum receiveType;

  /**
   * 业务主键ID
   */
  private Long bizId;

  /**
   * 消息所属标识类型 0:未知 1:项目 2:企业
   */
  private MsgRecordTerminalTypeEnum terminalType = MsgRecordTerminalTypeEnum.UNKNOWN;
  /**
   * 消息所属标识Id  用于跳转指定项目或企业
   */
  private Long terminalId = 0L;

  /**
   * 消息所属标识名称  有则展示
   */
  private String terminalName;
  /**
   * 租户id，解决多个企业的问题
   */
  private Long tenantId;
  /**
   * 业务方模板code
   */
  private String templateCode;
  /**
   * 模块id
   */
  private Long moduleId;
  /**
   * 接收人及发送人的对应关系，因为需要去查身份，由业务方进行组装后再发送
   */
  private Map<Long,Long> toldIdPersonIdMap;

  public void setTerminalId(Long terminalId) {
    this.terminalId = terminalId < 1 ? 0 : terminalId;
  }

  /**
   * personAppVersionCode {1: 330}
   */
  private Map<Long,Integer> personAppVersionCode;

  /**
   * appClient: e.g. cmp cm
   */
  public String appClient;

  @Override
  public String toString() {
    return JSON.toJSONString(this);
  }
}

