39 lines
914 B
Go
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
|
|
}
|