You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.5 KiB
64 lines
1.5 KiB
package service
|
|
|
|
import (
|
|
pb "bkb-notify/api"
|
|
"bkb-notify/internal/biz"
|
|
"bkb-notify/internal/utils"
|
|
"context"
|
|
"regexp"
|
|
)
|
|
|
|
type SmsService struct {
|
|
pb.UnimplementedSmsServer
|
|
uc *biz.SmsUsecase
|
|
}
|
|
|
|
func NewSmsService(uc *biz.SmsUsecase) *SmsService {
|
|
return &SmsService{
|
|
uc: uc,
|
|
}
|
|
}
|
|
|
|
func (s *SmsService) SendMessage(ctx context.Context, req *pb.SendSmsRequest) (*pb.SendSmsReply, error) {
|
|
var (
|
|
err error
|
|
isGlobal bool
|
|
)
|
|
//fmt.Println(time.Now())
|
|
//fmt.Println(ctx.Deadline())
|
|
//验证手机号
|
|
if req.AreaCode == "86" || req.AreaCode == "" {
|
|
if ok, err := regexp.MatchString(utils.RegPhoneNumber, req.Phone); !ok {
|
|
return &pb.SendSmsReply{Code: 1, Message: "手机号码格式不合法"}, err
|
|
}
|
|
isGlobal = false
|
|
} else {
|
|
req.Phone = req.AreaCode + req.Phone
|
|
isGlobal = true
|
|
}
|
|
//发送验证码
|
|
err = s.uc.SendSms(req.Phone, int(req.SmsType), isGlobal)
|
|
if err != nil {
|
|
return &pb.SendSmsReply{Code: 1, Message: err.Error()}, err
|
|
}
|
|
|
|
return &pb.SendSmsReply{Code: 0, Message: "发送成功"}, nil
|
|
}
|
|
|
|
func (s *SmsService) VerifyCode(ctx context.Context, req *pb.SmsCodeVerifyRequest) (*pb.SendSmsReply, error) {
|
|
var (
|
|
err error
|
|
)
|
|
|
|
//验证手机号
|
|
if ok, err := regexp.MatchString(utils.RegPhoneNumber, req.Phone); !ok {
|
|
return &pb.SendSmsReply{Code: 1, Message: "手机号码格式不合法"}, err
|
|
}
|
|
//发送验证码
|
|
err = s.uc.CheckCode(req.Phone, req.Code)
|
|
if err != nil {
|
|
return &pb.SendSmsReply{Code: 1, Message: err.Error()}, err
|
|
}
|
|
|
|
return &pb.SendSmsReply{Code: 0, Message: "校验成功"}, nil
|
|
}
|
|
|