package cn.axzo.msg.center.notices.manager.api.dto.request;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * 发送消息请求
 * @Author: LiuYang
 * @Date: 2021/5/20 18:12
 */
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class MnsRequestDto {

  /**
   * 请求号
   */
  private String requestNo;

  /**
   * 接入码
   */
  private String appCode;

  /**
   * 短信模板号
   */
  private String templateNo;

  /**
   * 电话号码
   */
  private String phoneNo;

  /**
   * 参数
   */
  private Map<String, Object> params;

  /**
   * 扩展参数
   */
  private String expansion;

  private Object internalObj;

  public JSONObject parseExpansion() {
    if (StringUtils.isBlank(expansion))
      return new JSONObject();
    return JSON.parseObject(expansion);
  }

  public <T> T getInternalObj(Class<T> clazz) {
      return clazz.isInstance(internalObj) ? clazz.cast(internalObj) : null;
  }

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