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

import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
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 javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.Collection;

/**
 * @description
 *   发送消息
 * @author cold_blade
 * @date 2023/10/18
 * @version 1.0
 */
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GeneralMessageSendRequest implements Serializable {

    private static final long serialVersionUID = -3030926259836918967L;

    /**
     * 模板编码
     */
    @NotBlank(message = "templateCode is required")
    private String templateCode;
    /**
     * 消息发送者信息,可为空,默认模板对应的IM机器人
     */
    private PersonDTO sender;
    /**
     * 消息接收信息
     */
    @NotEmpty(message = "receiver is required")
    private Collection<PersonDTO> receiver;
    /**
     * 消息所属组织类型
     */
    private OrganizationTypeEnum orgType;
    /**
     * 消息所属组织Id
     */
    private Long orgId;
    /**
     * 消息所属组织名称
     */
    private String orgName;
    /**
     * 发送消息的业务编码
     */
    private String bizCode;
    /**
     * 路由参数
     * 注：该字段仅存放路由相关的变量及对应的值
     */
    private JSONObject routerParams;
    /**
     * 业务扩展参数
     * 注：标题/内容/以及卡片等的变量及对应的值放到该字段
     */
    private JSONObject bizExtParams;

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