package utils

import (
	"fmt"
	openapi "github.com/alibabacloud-go/darabonba-openapi/client"
	dysmsapi "github.com/alibabacloud-go/dysmsapi-20170525/v2/client"
	console "github.com/alibabacloud-go/tea-console/client"
	util "github.com/alibabacloud-go/tea-utils/service"
	"github.com/alibabacloud-go/tea/tea"
	"github.com/gin-gonic/gin"
	"github.com/goccy/go-json"
	"math/rand"
	"time"
	"ulink-admin/config"
	"ulink-admin/frame"
)

func SendSms(phone, signName, templateCode string, templateParam gin.H) {
	cfg := config.GetSmsCfg()
	client, _err := CreateClient(&cfg.AccessKeyID, &cfg.AccessKeySecret)
	if _err != nil {
		frame.Throw(frame.BUSINESS_CODE, _err.Error())
	}
	dataType, _ := json.Marshal(templateParam)
	dataString := string(dataType)
	sendReq := &dysmsapi.SendSmsRequest{
		PhoneNumbers:  &phone,
		SignName:      &signName,
		TemplateCode:  &templateCode,
		TemplateParam: &dataString,
	}
	sendResp, _err := client.SendSms(sendReq)
	if _err != nil {
		frame.Throw(frame.BUSINESS_CODE, _err.Error())
	}
	code := sendResp.Body.Code
	if !tea.BoolValue(util.EqualString(code, tea.String("OK"))) {
		console.Log(tea.String("错误信息: " + tea.StringValue(sendResp.Body.Message)))
		frame.Throw(frame.BUSINESS_CODE, tea.StringValue(sendResp.Body.Message))
	}
}

// 使用AK&SK初始化账号Client
func CreateClient(accessKeyId *string, accessKeySecret *string) (_result *dysmsapi.Client, _err error) {
	config := &openapi.Config{}
	config.AccessKeyId = accessKeyId
	config.AccessKeySecret = accessKeySecret
	_result = &dysmsapi.Client{}
	_result, _err = dysmsapi.NewClient(config)
	return _result, _err
}
func CreateCode() string {
	return fmt.Sprintf("%04v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000)) //这里面前面的04v是和后面的1000相对应的
}