mirror of
https://github.com/go-eagle/eagle.git
synced 2025-10-06 09:06:55 +08:00
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
"github.com/pkg/errors"
|
|
"github.com/qiniu/api.v7/auth"
|
|
"github.com/qiniu/api.v7/sms"
|
|
|
|
"github.com/go-eagle/eagle/internal/repository"
|
|
)
|
|
|
|
// SMSService define interface func
|
|
type SMSService interface {
|
|
SendSMS(phoneNumber string, verifyCode int) error
|
|
}
|
|
|
|
type smsService struct {
|
|
repo repository.Repository
|
|
}
|
|
|
|
var _ SMSService = (*smsService)(nil)
|
|
|
|
func newSMS(svc *service) *smsService {
|
|
return &smsService{repo: svc.repo}
|
|
}
|
|
|
|
// Send 发送短信
|
|
func (s *smsService) SendSMS(phoneNumber string, verifyCode int) error {
|
|
// 校验参数的正确性
|
|
if phoneNumber == "" || verifyCode == 0 {
|
|
return errors.New("param phone or verify_code error")
|
|
}
|
|
|
|
// 调用第三方发送服务
|
|
return sendViaQiNiu(phoneNumber, verifyCode)
|
|
}
|
|
|
|
// sendViaQiNiu 调用七牛短信服务
|
|
func sendViaQiNiu(phoneNumber string, verifyCode int) error {
|
|
accessKey := ""
|
|
secretKey := ""
|
|
|
|
mac := auth.New(accessKey, secretKey)
|
|
manager := sms.NewManager(mac)
|
|
|
|
args := sms.MessagesRequest{
|
|
SignatureID: "",
|
|
TemplateID: "",
|
|
Mobiles: []string{phoneNumber},
|
|
Parameters: map[string]interface{}{
|
|
"code": verifyCode,
|
|
},
|
|
}
|
|
|
|
ret, err := manager.SendMessage(args)
|
|
if err != nil {
|
|
return errors.Wrap(err, "send sms message error")
|
|
}
|
|
|
|
if len(ret.JobID) == 0 {
|
|
return errors.New("send sms message job id error")
|
|
}
|
|
|
|
return nil
|
|
}
|