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 }