package com.ruoyi.common.event;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.context.ApplicationEvent;

import java.util.Map;

/**
 * 短信发送事件
 */
@Getter
@Setter
public class SmsSendEvent extends ApplicationEvent {

  private String phones;
  private String templateId;
  private Map<String, String> param;

  public SmsSendEvent() {
    super(Boolean.TRUE);
  }

  /**
   * @param phones     电话号(多个逗号分割)
   * @param templateId 模板id
   * @param param      模板对应参数
   *                   阿里 需使用 模板变量名称对应内容 例如: code=1234
   *                   腾讯 需使用 模板变量顺序对应内容 例如: 1=1234, 1为模板内第一个参数
   */
  public SmsSendEvent(String phones, String templateId, Map<String, String> param) {
    super(Boolean.TRUE);
    this.phones = phones;
    this.templateId = templateId;
    this.param = param;
  }

  /**
   * 发送请求成功
   * 但不代表发送短信成功
   * @param isSuccess
   * @param message
   * @param response
   * @return
   */
  public SmsResultEvent result(Boolean isSuccess, String message, String response) {
    return new SmsResultEvent(phones, templateId, param, isSuccess, message, response, null);
  }

  public SmsResultEvent result(Exception exception) {
    return new SmsResultEvent(phones, templateId, param, false, null, null, exception);
  }
}
