Files
eagle/internal/service/sms_service.go
2021-12-19 22:58:29 +08:00

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
}