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

import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author syl
 * @date 2023/12/28
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GeneralMessagePushReq {

    /**
     * 发起者
     * 若业务事件涉及到待办消息，发起者信息必传
     */
    // @NotNull(message = "发起者不能为空")
    private PersonDTO initiator;

    /**
     * 接收者列表
     */
    @NotNull(message = "接收者列表不能为空")
    private List<PersonDTO> receivers;

    /**
     * 业务事件code
     * oms->消息模板 配置
     */
    @NotBlank(message = "业务事件code不能为空")
    private String bizEventCode;

    /**
     * 关联业务唯一标识
     * 例如: 请假申请的编号
     */
    @NotBlank(message = "关联业务唯一标识不能为空")
    private String bizCode;

    /**
     * 消息所属组织类型
     */
    @NotNull(message = "工作台类型不能为空")
    private OrganizationTypeEnum orgType;

    /**
     * 所属工作台ID
     * orgType = PROJECT 项目时，必传参数
     */
    // @NotNull(message = "消息所属工作台ID不能为空")
    private Long workspaceId;

    /**
     * 所属企业ID
     * 【备注：如果是工人，则所在企业可以传0；其它均必传真实企业】
     */
    @NotNull(message = "消息所属企业ID不能为空")
    private Long ouId;

    /**
     * 业务扩展参数-JSON格式
     */
    private JSONObject bizExtParams;
    /**
     * 路由参数-JSON格式
     */
    private JSONObject routerParams;

    /**
     * 待办消息特有参数
     */
    private PendingParam pendingParam;

}
