50 lines
1.1 KiB
Go
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
|
|
}
|