Files
kra-new/internal/integration/gameplatform/password_sms.go
T

39 lines
914 B
Go

package gameplatform
import (
"context"
"kra/internal/biz/business"
"kra/internal/biz/integration"
"os"
"regexp"
)
type passwordSMS struct {
uc *integration.SMSUsecase
provider string
}
func NewPasswordSMS(sender integration.SMSSender) business.PasswordResetSMS {
provider := os.Getenv("SW_PASSWORD_RESET_SMS_PROVIDER")
if provider == "" {
provider = "tencent"
}
return &passwordSMS{uc: integration.NewSMSUsecase(sender), provider: provider}
}
var localMobile = regexp.MustCompile(`^\d{11}$`)
func (s *passwordSMS) SendCode(ctx context.Context, phone, code string) error {
if localMobile.MatchString(phone) {
phone = "+86" + phone
}
message := &integration.SMSMessage{Provider: s.provider, Phone: phone}
if s.provider == "aliyun" {
message.NamedParams = map[string]string{"code": code}
} else {
message.Params = []string{code}
}
_, err := s.uc.Send(ctx, message)
return err
}