Files
2026-09-16 10:36:59 +08:00

35 lines
727 B
Go

package logic
import (
"context"
"strconv"
"lone-services/pkg/redis"
"lone-services/pkg/utils"
)
func smsCodeRedisKey(scene int32, mobile string) string {
return utils.CodeKey + strconv.Itoa(int(scene)) + ":" + mobile
}
func verifyAndConsumeSmsCode(ctx context.Context, scene int32, mobile, code string) (bool, error) {
if code == utils.StringEmpty {
return false, nil
}
codeKey := smsCodeRedisKey(scene, mobile)
cached, err := redis.Client.Get(ctx, codeKey).Result()
if err == redis.Nil {
return false, nil
}
if err != nil {
return false, err
}
if cached != code {
return false, nil
}
if delErr := redis.Client.Del(ctx, codeKey).Err(); delErr != nil {
return false, delErr
}
return true, nil
}