package com.bonus.common.core.utils.sms;

import com.alibaba.fastjson2.JSON;
import com.bonus.common.core.utils.http.HttpRequestHelper;

import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class SmsUtils {
    /**
     * 发送短信验证码
     *
     * @param mobile   发信发送的目的号码.多个号码之间用半角逗号隔开
     * @param content  短信的内容，内容需要UTF-8编码
     * @param sendTime 为空表示立即发送，定时发送格式：20101024090810
     * @return 是否发送成功
     */
    public static String smsToken(String mobile, String content, String sendTime) {
        Map<String, String> headers = new HashMap<>();
        Map<String, Object> mapJson = new HashMap<>(6);
        mapJson.put("ddtkey", SmsConfig.DDT_KEY);
        mapJson.put("secretkey", SmsConfig.SECRET_KEY);
        mapJson.put("mobile", mobile);
        mapJson.put("content", SmsConfig.SMS_SIGNATURE + content);
        mapJson.put("sendTime", sendTime);
        mapJson.put("extno", "");

        // 将mapJson转换为URL查询参数格式
        StringBuilder urlBuilder = new StringBuilder(SmsConfig.SMS_TOKEN + "?");
        for (Map.Entry<String, Object> entry : mapJson.entrySet()) {
            try {
                String encodedKey = URLEncoder.encode(entry.getKey(), "UTF-8");
                String encodedValue = URLEncoder.encode(entry.getValue().toString(), "UTF-8");
                urlBuilder.append(encodedKey).append("=").append(encodedValue).append("&");
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        // 移除最后一个&符号
        urlBuilder.setLength(urlBuilder.length() - 1);
        String urlWithParams = urlBuilder.toString();

        String json = JSON.toJSONString(mapJson);
        return HttpRequestHelper.postJson(SmsConfig.DOMAIN, urlWithParams, json, headers);
    }
}
