mh_server/model/user_refresh_token_CRUD.go
2021-06-30 10:12:05 +08:00

50 lines
1.1 KiB
Go

package model
import (
"github.com/codinl/go-logger"
"mh-server/config"
"time"
)
func UserRefreshTokenGetOrUpdate(uid uint32, token string) (*UserRefreshToken, error) {
var userRefreshToken UserRefreshToken
if err := NewUserRefreshTokenQuerySet(DB).UidEq(uid).One(&userRefreshToken); err != nil {
if err == RecordNotFound {
userRefreshToken = UserRefreshToken{
Uid: uid,
Token: token,
}
if err := userRefreshToken.Create(DB); err != nil {
logger.Error(err)
return nil, err
}
return &userRefreshToken, nil
} else {
logger.Error(err)
return nil, err
}
}
now := time.Now().Local()
// 过期更新
if userRefreshToken.CreatedAt.Add(time.Second * time.Duration(config.AppConfig.JwtUserRefreshExpire)).Before(now) {
userRefreshToken.CreatedAt = now
userRefreshToken.UpdatedAt = now
userRefreshToken.Token = token
// 更新
if err := NewUserRefreshTokenQuerySet(DB).
UidEq(uid).
GetUpdater().
SetCreatedAt(userRefreshToken.CreatedAt).
SetUpdatedAt(userRefreshToken.UpdatedAt).
SetToken(token).
Update(); err != nil {
logger.Error(err)
return nil, err
}
}
return &userRefreshToken, nil
}