Files
doc_ai_backed/pkg/sms/sms.go
liuyuanchuang 48e63894eb init repo
2025-12-10 18:33:37 +08:00

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
}