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

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
}