package phone import ( "math" "math/rand" "regexp" "strconv" "time" "code.gitea.io/gitea/modules/setting" openapi "github.com/alibabacloud-go/darabonba-openapi/client" dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v2/client" util "github.com/alibabacloud-go/tea-utils/service" "github.com/alibabacloud-go/tea/tea" ) func IsValidPhoneNumber(phoneNumber string) bool { pattern := "^1[3-9]\\d{9}$" match, _ := regexp.MatchString(pattern, phoneNumber) return match } func GenerateVerifyCode(n int) string { min := int(math.Pow10(n - 1)) max := int(math.Pow10(n)) rand.Seed(time.Now().UnixNano()) return strconv.Itoa(rand.Intn(max-min) + min) } func createClient(accessKeyId *string, accessKeySecret *string) (_result *dysmsapi20170525.Client, _err error) { config := &openapi.Config{ // 您的AccessKey ID AccessKeyId: accessKeyId, // 您的AccessKey Secret AccessKeySecret: accessKeySecret, } // 访问的域名 config.Endpoint = tea.String("dysmsapi.aliyuncs.com") _result = &dysmsapi20170525.Client{} _result, _err = dysmsapi20170525.NewClient(config) return _result, _err } func SendVerifyCode(phoneNumber string, verifyCode string) error { client, _err := createClient(&setting.PhoneService.AccessKeyId, &setting.PhoneService.AccessKeySecret) if _err != nil { return _err } sendSmsRequest := &dysmsapi20170525.SendSmsRequest{ SignName: tea.String(setting.PhoneService.SignName), TemplateCode: tea.String(setting.PhoneService.TemplateCode), PhoneNumbers: tea.String(phoneNumber), TemplateParam: tea.String("{\"code\":\"" + verifyCode + "\"}"), } runtime := &util.RuntimeOptions{} _, _err = client.SendSmsWithOptions(sendSmsRequest, runtime) return _err }