package com.zcloud.util;

import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.http.MediaType;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 重点工程发送短信工具类
 */
public class SendSmsUtil {

    private static String USERNAME = "qhdzyhy";

    private static String PASSWORD = "3ba40593f514f0c1ebdfc278dddfc9ce";

    private static String SIGNATURE = "【秦港双控】";

    private static String URL = "https://api.mix2.zthysms.com/v2/sendSmsTp";


    /**
     * 发送短信
     * @param records
     * @param time 发送时间 为空或小于当前时间则立即发送
     * records格式实例  records是 JSONArray   里边的内容通过调用下方方法getRecords获取 JSONObject   定义一个JSONArray后 put进去即可
     * "records":[
     *         {
     *             "mobile":"138****0000",
     *             "tpContent":{
     *                 "var1":"变量1",
     *                 "var2":"变量2"
     *             }
     *         },
     *         {
     *             "mobile":"138****0001",
     *             "tpContent":{
     *                 "var1":"变量2",
     *                 "var2":"变量2"
     *             }
     *         }
     *     ]
     */
    public static void sendSms(String tpId,JSONArray records ,String time) throws ParseException {
        JSONObject json = new JSONObject();
        Long tKey = System.currentTimeMillis()/1000;
        String passWord = MD5.md5(PASSWORD+tKey);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //扔参数
        json.put("username",USERNAME);
        json.put("password",passWord);
        json.put("tKey",tKey);
        json.put("signature",SIGNATURE);
        json.put("tpId",tpId);
        if(StringUtils.isNotBlank(time)){
            if(sdf.parse(time).after(new Date())){
                json.put("time",time);
            }
        }
        json.put("records",records);
        System.out.println(json.toJSONString());
        String result = HttpRequest.post(URL)
                .timeout(60000)
                .body(json.toJSONString(), MediaType.APPLICATION_JSON_UTF8_VALUE).execute().body();
        System.out.println(result);
    }


    /**
     * 封装要发送的电话以及要替换的内容
     * @param mobile 手机号
     * @param tpContent 替换内容
     * @return
     * 格式实例  var1表示要替换的内容  与要替换的内容保持一致即可    变量1表示替换的内容
     *  {
     *    "mobile":"138****0000",
     *    "tpContent":{
     *        "var1":"变量1",
     *        "var2":"变量2"
     *    }
     *  }
     */
    public static JSONObject getRecords(String mobile, JSONObject tpContent ){
        JSONObject json = new JSONObject();
        json.put("mobile",mobile);
        if(ObjectUtils.hashCode(tpContent)!=0){
            json.put("tpContent",tpContent);
        }
        return json;

    }//d22f8a5d4a35b3761dc9525186e652a0

    //测试接口
    public static void main(String[] args) throws ParseException {
        JSONArray jsonArray = new JSONArray();

        //接受返回结果
        JSONObject records = new JSONObject();
        //定义替换参数
        //JSONObject tpContent = new JSONObject();
        //tpContent.put("userName","卓云企业");
        //tpContent.put("time","2023-09-21 15:56:20");
        //records = getRecords("18617456701",tpContent);
        jsonArray.add(records);

        sendSms("null",jsonArray,null);
    }

}