package com.njcn.msgpush.module.push.controller.admin.message.vo;

import com.njcn.msgpush.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

/**
 * @author caozehui
 * @data 2026-02-27
 */
@Data
@Schema(description = "管理后台 - 消息记录发送 Request VO")
public class MessageRecordReqVO extends PageParam {
    @Schema(description = "主键ID")
    private Long id;

    @Schema(description = "消息唯一ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
    @NotBlank(message = "消息唯一ID不能为空")
    private String messageId;

    @Schema(description = "应用名称/来源系统标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "NPQS-9500")
    @NotBlank(message = "应用名称/来源系统标识不能为空")
    private String appName;

    @Schema(description = "渠道类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "sms/email/app_push")
    @NotBlank(message = "渠道类型不能为空")
    private String channel;

    @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "verify_code/order_notify/marketing/system_notify")
    @NotBlank(message = "消息类型不能为空")
    private String messageType;

    @Schema(description = "接收者", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "接收者不能为空")
    private String receiver;

    @Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED)
    private String title;

    @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
    private String content;

    @Schema(description = "模板编码", requiredMode = Schema.RequiredMode.REQUIRED)
    private String templateCode;

    @Schema(description = "模板参数")
    private String templateParams;

    @Schema(description = "服务商类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "telecom/cmcc/aliyun/twilio")
    @NotBlank(message = "服务商类型不能为空")
    private String providerType;

    @Schema(description = "第三方消息ID")
    private String thirdPartyId;
}
