diff --git a/kit/sms/aliyun.go b/kit/sms/aliyun.go new file mode 100644 index 0000000..ce1d84f --- /dev/null +++ b/kit/sms/aliyun.go @@ -0,0 +1,44 @@ +package sms + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi" + "github.com/pkg/errors" +) + +type AliConfig struct { + accessKeyId string + accessSecret string + RegionId string +} + +type AliSms struct { + config AliConfig +} + +func NewAliSms(AliConfig AliConfig) *AliSms { + return &AliSms{ + config: AliConfig, + } +} + +func (a *AliSms) Send(PhoneNumbers, SignName, TemplateCode, TemplateParam string) error { + //客户端 + client, err := dysmsapi.NewClientWithAccessKey(a.config.RegionId, a.config.accessKeyId, a.config.accessSecret) + if err != nil { + return errors.Wrapf(err, "ali sms client init fail") + } + //参数处理 + request := dysmsapi.CreateSendSmsRequest() + request.Scheme = "https" + request.PhoneNumbers = PhoneNumbers + request.SignName = SignName + request.TemplateCode = TemplateCode + //json格式 + request.TemplateParam = TemplateParam + //发送 + _, err = client.SendSms(request) + if err != nil { + return errors.Wrapf(err, "ali sms send fail") + } + return nil +} diff --git a/kit/sms/sms.go b/kit/sms/sms.go new file mode 100644 index 0000000..06d9ef8 --- /dev/null +++ b/kit/sms/sms.go @@ -0,0 +1,14 @@ +package sms + +type Sms interface { + Send(PhoneNumbers, SignName, TemplateCode, TemplateParam string) error +} + +func NewDefaultSms(use string) Sms { + switch use { + case "AliYun": + return NewAliSms(AliConfig{}) + default: + panic(any("sms driver err")) + } +}