Compare commits
No commits in common. "db2755437482b7fdd0e5ac51babe92056d4b82dd" and "9656f69feaf1bd5bb9bb80afa3cc22fec4834d84" have entirely different histories.
db27554374
...
9656f69fea
@ -9,5 +9,4 @@ type ICacheAdapter interface {
|
||||
Get(ctx context.Context, key string) (value interface{}, err error)
|
||||
Set(ctx context.Context, key string, value interface{}, expire time.Duration) (err error)
|
||||
Del(ctx context.Context, key string) (err error)
|
||||
SetNX(ctx context.Context, key string, value interface{}, expire time.Duration) (ok bool, err error)
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v5/client"
|
||||
util "github.com/alibabacloud-go/tea-utils/v2/service"
|
||||
"github.com/alibabacloud-go/tea/tea"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -80,8 +81,11 @@ func (c *SmsClient) SaveCode(ctx context.Context, key string, code string, expir
|
||||
}
|
||||
//保存code
|
||||
err = c.Cache.Set(ctx, key, code, expire)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeleteCode 删除验证码
|
||||
func (c *SmsClient) DeleteCode(ctx context.Context, key string) (err error) {
|
||||
@ -98,19 +102,35 @@ func (c *SmsClient) SaveCodeWithFrequency(ctx context.Context, key string, code
|
||||
return errors.New("缓存不能为空")
|
||||
}
|
||||
frequencyKey := fmt.Sprintf(CodeFrequencyKey, key)
|
||||
if frequency <= 0 {
|
||||
return errors.New("频率不能小于0")
|
||||
if frequency != 0 {
|
||||
// 判断验证码是否频繁
|
||||
frequencyValue, err := c.Cache.Get(ctx, frequencyKey)
|
||||
if err != nil {
|
||||
if errors.Is(err, redis.Nil) {
|
||||
// 缓存中没有数据
|
||||
fmt.Printf("缓存中没有数据")
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
ok, err := c.Cache.SetNX(ctx, frequencyKey, CodeFrequencyValue, frequency)
|
||||
}
|
||||
if frequencyValue != nil && frequencyValue.(string) == CodeFrequencyValue {
|
||||
return errors.New("code发送频繁,请稍后再试")
|
||||
}
|
||||
}
|
||||
//保存code
|
||||
err = c.SaveCode(ctx, key, code, expire)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !ok {
|
||||
return errors.New("code发送频繁,请稍后再试")
|
||||
}
|
||||
err = c.SaveCode(ctx, key, code, expire)
|
||||
if frequency != 0 {
|
||||
// 保存验证码发送频率
|
||||
err = c.Cache.Set(ctx, frequencyKey, CodeFrequencyValue, frequency)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// VerifyCode 校验验证码
|
||||
func (c *SmsClient) VerifyCode(ctx context.Context, key string, verifyCode string) (ok bool, err error) {
|
||||
|
@ -51,14 +51,6 @@ func (r *RedisCacheAdapter) Del(ctx context.Context, key string) error {
|
||||
return r.client.Del(ctx, key).Err()
|
||||
}
|
||||
|
||||
func (r *RedisCacheAdapter) SetNX(ctx context.Context, key string, value interface{}, expire time.Duration) (ok bool, err error) {
|
||||
data, err := json.Marshal(value)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return r.client.SetNX(ctx, key, data, expire).Result()
|
||||
}
|
||||
|
||||
var (
|
||||
//SMS
|
||||
accessKeyId = os.Getenv("SMS_ALIBABA_CLOUD_ACCESS_KEY_ID")
|
||||
|
Loading…
x
Reference in New Issue
Block a user