package cn.axzo.msg.center.service.general.response;

import cn.axzo.msg.center.service.dto.IdentityDTO;
import cn.axzo.msg.center.service.dto.ButtonRouterDTO;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;
import java.util.List;

/**
 * @description
 *   普通消息记录数模型
 * @author cold_blade
 * @date 2023/10/18
 * @version 1.0
 */
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GeneralMessageResponse implements Serializable {

    private static final long serialVersionUID = 5740922087866033787L;

    /**
     * 消息的唯一标识
     */
    private String identityCode;
    /**
     * 模板编码
     */
    private String templateCode;
    /**
     * 模板icon地址
     */
    private String templateIcon;
    /**
     * 消息标题
     */
    private String title;
    /**
     * 消息内容
     */
    private String content;
    /**
     * 卡片信息
     */
    private String cardContent;
    /**
     * 消息发送者自然人id
     */
    private Long senderPersonId;
    /**
     * 消息发送者身份
     */
    private IdentityDTO senderIdentity;
    /**
     * 消息接收者自然人id
     */
    private Long receiverPersonId;
    /**
     * 消息接收者身份
     */
    private IdentityDTO receiverIdentity;
    /**
     * 消息所属组织类型
     */
    private OrganizationTypeEnum orgType;
    /**
     * 消息所属组织Id
     */
    private Long orgId;
    /**
     * 消息所属组织名称
     */
    private String orgName;
    /**
     * 业务编码
     */
    private String bizCode;
    /**
     * 业务状态描述
     */
    private String bizDesc;
    /**
     * 消息发送时间戳
     */
    private Long sendTimestamp;
    /**
     * 路由信息,可为空
     */
    private List<ButtonRouterDTO> routers;
    /**
     * 参数及其对应的值的JSON串
     */
    private JSONObject routerParams;
    /**
     * 发送终端，eg：
     *   B_ENTERPRISE_APP：B-安心筑企业版
     *   C_WORKER_APP：C-安心筑工人版
     */
    private List<PushTerminalEnum> pushTerminals;

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