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 }