You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

phone.go 1.8 kB

3 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package phone
  2. import (
  3. "math"
  4. "math/rand"
  5. "regexp"
  6. "strconv"
  7. "time"
  8. "code.gitea.io/gitea/modules/setting"
  9. openapi "github.com/alibabacloud-go/darabonba-openapi/client"
  10. dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v2/client"
  11. util "github.com/alibabacloud-go/tea-utils/service"
  12. "github.com/alibabacloud-go/tea/tea"
  13. )
  14. func IsValidPhoneNumber(phoneNumber string) bool {
  15. pattern := "^1[3-9]\\d{9}$"
  16. match, _ := regexp.MatchString(pattern, phoneNumber)
  17. return match
  18. }
  19. func GenerateVerifyCode(n int) string {
  20. min := int(math.Pow10(n - 1))
  21. max := int(math.Pow10(n))
  22. rand.Seed(time.Now().UnixNano())
  23. return strconv.Itoa(rand.Intn(max-min) + min)
  24. }
  25. func createClient(accessKeyId *string, accessKeySecret *string) (_result *dysmsapi20170525.Client, _err error) {
  26. config := &openapi.Config{
  27. // 您的AccessKey ID
  28. AccessKeyId: accessKeyId,
  29. // 您的AccessKey Secret
  30. AccessKeySecret: accessKeySecret,
  31. }
  32. // 访问的域名
  33. config.Endpoint = tea.String("dysmsapi.aliyuncs.com")
  34. _result = &dysmsapi20170525.Client{}
  35. _result, _err = dysmsapi20170525.NewClient(config)
  36. return _result, _err
  37. }
  38. func SendVerifyCode(phoneNumber string, verifyCode string) error {
  39. client, _err := createClient(&setting.PhoneService.AccessKeyId, &setting.PhoneService.AccessKeySecret)
  40. if _err != nil {
  41. return _err
  42. }
  43. sendSmsRequest := &dysmsapi20170525.SendSmsRequest{
  44. SignName: tea.String(setting.PhoneService.SignName),
  45. TemplateCode: tea.String(setting.PhoneService.TemplateCode),
  46. PhoneNumbers: tea.String(phoneNumber),
  47. TemplateParam: tea.String("{\"code\":\"" + verifyCode + "\"}"),
  48. }
  49. runtime := &util.RuntimeOptions{}
  50. // 复制代码运行请自行打印 API 的返回值
  51. _, _err = client.SendSmsWithOptions(sendSmsRequest, runtime)
  52. return _err
  53. }