来源:hgdjnet-server 9bfbafe10d417deea959bd53117bc88a10e60a83 项目身份 HKDJ / JHA-216,独立官网仓库,Jenkins 守卫键 hkdjnet 测试目录 /server/hkdj_net,App/Web API 30331/30332 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"bytes"
|
|
"hkdj-web-server/pub/common/enum/redisconst"
|
|
sErr "hkdj-web-server/pub/common/errors"
|
|
"hkdj-web-server/pub/redis"
|
|
"time"
|
|
)
|
|
|
|
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
|
|
}
|