package utils import ( "bytes" "time" "videoweb/pub/common/enum/redisconst" sErr "videoweb/pub/common/errors" "videoweb/pub/redis" ) const ( expireTime = 30 * 24 * time.Hour ) type TokenRedis struct { } func NewTokenRedis() *TokenRedis { return &TokenRedis{} } func (tr *TokenRedis) Save(userId int64, token string) (err error) { if err = tr.Delete(userId); err != nil { return } err = redis.Set(redisconst.AppUserTokenKey(userId), token, expireTime) if err != nil { err = sErr.MakeWithErr(sErr.RedisSet, err) } return } func (tr *TokenRedis) Exists(userId int64, token string) (has bool, err error) { tokenbytes, err := tr.Get(userId) if err != nil { return } has = bytes.Compare(tokenbytes, []byte(token)) == 0 return } func (tr *TokenRedis) Get(userId int64) (token []byte, err error) { token, err = redis.GetBytes(redisconst.AppUserTokenKey(userId)) if err != nil { err = sErr.MakeWithErr(sErr.RedisGet, err) } return } func (tr *TokenRedis) Delete(userId int64) (err error) { err = redis.Del(redisconst.AppUserTokenKey(userId)) if err != nil { err = sErr.MakeWithErr(sErr.RedisDel, err) } return }