66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package sms
|
|
|
|
import (
|
|
"errors"
|
|
"sync"
|
|
|
|
"gitea.com/bitwsd/document_ai/config"
|
|
openapi "github.com/alibabacloud-go/darabonba-openapi/client"
|
|
dysmsapi "github.com/alibabacloud-go/dysmsapi-20170525/v2/client"
|
|
aliutil "github.com/alibabacloud-go/tea-utils/service"
|
|
"github.com/alibabacloud-go/tea/tea"
|
|
)
|
|
|
|
const (
|
|
Signature = "北京比特智源科技"
|
|
TemplateCode = "SMS_291510729"
|
|
TemplateParam = `{"code":"%s"}`
|
|
VerifyCodeLength = 6
|
|
VerifyCodeExpire = 3 * 60 // 1 minutes
|
|
)
|
|
|
|
var (
|
|
MsgClient *dysmsapi.Client
|
|
once sync.Once
|
|
)
|
|
|
|
func InitSmsClient() *dysmsapi.Client {
|
|
once.Do(func() {
|
|
key := tea.String(config.GlobalConfig.Aliyun.Sms.AccessKeyID)
|
|
secret := tea.String(config.GlobalConfig.Aliyun.Sms.AccessKeySecret)
|
|
config := &openapi.Config{AccessKeyId: key, AccessKeySecret: secret}
|
|
client, err := dysmsapi.NewClient(config)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
MsgClient = client
|
|
})
|
|
return MsgClient
|
|
}
|
|
|
|
type SendSmsRequest struct {
|
|
PhoneNumbers string
|
|
SignName string
|
|
TemplateCode string
|
|
TemplateParam string
|
|
}
|
|
|
|
func SendMessage(req *SendSmsRequest) (err error) {
|
|
client := MsgClient
|
|
request := &dysmsapi.SendSmsRequest{
|
|
PhoneNumbers: tea.String(req.PhoneNumbers),
|
|
SignName: tea.String(req.SignName),
|
|
TemplateCode: tea.String(req.TemplateCode),
|
|
TemplateParam: tea.String(req.TemplateParam),
|
|
}
|
|
resp, err := client.SendSms(request)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if !tea.BoolValue(aliutil.EqualString(resp.Body.Code, tea.String("OK"))) {
|
|
err = errors.New(*resp.Body.Code)
|
|
return
|
|
}
|
|
return
|
|
}
|