package com.fufan.mtsaas.aliyun.model;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import org.hibernate.validator.constraints.NotBlank;
import java.util.HashMap;
import java.util.Map;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Sms {

    @ApiModelProperty(value = "短信签名名称，不填则使用默认值（好享家）")
    private String signName;

    /**
     * 短信模板ID。请在控制台模板管理页面模板CODE一列查看。
     * <p>
     * 必须是已添加、并通过审核的短信签名；且发送国际/港澳台消息时，请使用国际/港澳台短信模版。
     */
    @NotBlank
    @ApiModelProperty(value = "短信模板ID，必须是已添加、并通过审核的短信签名；且发送国际/港澳台消息时，请使用国际/港澳台短信模版。",
            required = true)
    private String templateCode;

    /**
     * 接收短信的手机号码。
     * <p>
     * 格式：
     * <p>
     * 国内短信：11位手机号码，例如15951955195。
     * 国际/港澳台消息：国际区号+号码，例如85200000000。
     * 支持对多个手机号码发送短信，手机号码之间以英文逗号（,）分隔。上限为1000个手机号码。批量调用相对于单条调用及时性稍有延迟。
     * <p>
     * 验证码类型短信，建议使用单独发送的方式。
     */
    @NotBlank
    @ApiModelProperty(value = "接收短信的手机号码。支持对多个手机号码发送短信，手机号码之间以英文逗号（,）分隔。上限为1000个手机号码。批量调用相对于单条调用及时性稍有延迟。",
            required = true)
    private String phoneNumbers;

    /**
     * 短信模板变量对应的实际值，JSON格式。
     * <p>
     * 如果JSON中需要带换行符，请参照标准的JSON协议处理。
     */
    @ApiModelProperty("短信模板变量对应的实际值")
    private Map<String, String> templateParam = new HashMap<>();

    /**
     * 上行短信扩展码，无特殊需要此字段的用户请忽略此字段。
     */
    @ApiModelProperty("上行短信扩展码，无特殊需要此字段的用户请忽略此字段")
    private String smsUpExtendCode;

    /**
     * 外部流水扩展字段。
     */
    @ApiModelProperty("外部流水扩展字段")
    private String outId;

}
