Browse Source

提交代码

tags/v1.22.7.1
ychao_1983 3 years ago
parent
commit
658984b1c4
1 changed files with 0 additions and 98 deletions
  1. +0
    -98
      public/img/phone/phone.go

+ 0
- 98
public/img/phone/phone.go View File

@@ -1,98 +0,0 @@
package phone

import (
"fmt"
"time"

"code.gitea.io/gitea/modules/log"

"code.gitea.io/gitea/modules/phone"
"code.gitea.io/gitea/modules/redis/redis_client"
"code.gitea.io/gitea/modules/setting"

"github.com/gomodule/redigo/redis"
)

//验证码存储前缀 使用时%s用手机号替代
const CODE_PREFIX = "P_C:%s"

//手机号发送验证码次数Hkey,%s对应日期, 存储在hset中,值是hashet,记录手机号和发送次数
const TIMES_PREFIX = "P_T:%s"

func GetPhoneNumberSendTimes(conn redis.Conn, phoneNumber string) (int, error) {
i, err := redis_client.HGET(conn, GetPhoneTimesHKey(), phoneNumber)

return redis.Int(i, err)
}

func GetPhoneCodeTTL(conn redis.Conn, phoneNumber string) (int, error) {
return redis_client.Ttl(conn, GetPhoneCodeKey(phoneNumber))

}
func SendVerifyCode(conn redis.Conn, phoneNumber string) error {
timesKey := GetPhoneTimesHKey()
exists, err := redis_client.EXISTS(conn, timesKey)
if err != nil {
return err
}
code := phone.GenerateVerifyCode(setting.PhoneService.VerifyCodeLength)
err = phone.SendVerifyCode(phoneNumber, code)
if err != nil {
return err
}
redis_client.SETNX(conn, GetPhoneCodeKey(phoneNumber), code, setting.PhoneService.CodeTimeout)
if !exists {
err = redis_client.HSETNX(conn, timesKey, phoneNumber, 1)
if err != nil {
return err
}
err = redis_client.Expire(conn, timesKey, getRemainSecondOfDay(time.Now()))
if err != nil {
return err
}

} else {
timesPhoneExists, err := redis_client.HEXISTS(conn, timesKey, phoneNumber)
if err != nil {
return err
}

if timesPhoneExists {
err = redis_client.HINCRBY(conn, timesKey, phoneNumber, 1)
} else {
err = redis_client.HSETNX(conn, timesKey, phoneNumber, 1)
}
if err != nil {
return err
}

}
return nil

}

func IsVerifyCodeRight(phoneNumer string, verifyCode string) bool {
if phoneNumer == "" {
return false
}
value, err := redis_client.Get(GetPhoneCodeKey(phoneNumer))
if err != nil {
log.Warn("redis err", err)
return false
} else {
return value == verifyCode
}
}

func GetPhoneCodeKey(phoneNumber string) string {
return fmt.Sprintf(CODE_PREFIX, phoneNumber)
}

func GetPhoneTimesHKey() string {
today := time.Now().Format("2006-01-02")
return fmt.Sprintf(TIMES_PREFIX, today)
}

func getRemainSecondOfDay(t time.Time) int {
return 86400 - 60*60*t.Hour() + 60*t.Minute() + t.Second()
}

Loading…
Cancel
Save