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.7 kB

3 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. _, _err = client.SendSmsWithOptions(sendSmsRequest, runtime)
  51. return _err
  52. }