本文整理匯總了Golang中github.com/ginuerzh/sports/models.RedisLogger.LBDisRank方法的典型用法代碼示例。如果您正苦於以下問題:Golang RedisLogger.LBDisRank方法的具體用法?Golang RedisLogger.LBDisRank怎麽用?Golang RedisLogger.LBDisRank使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/ginuerzh/sports/models.RedisLogger
的用法示例。
在下文中一共展示了RedisLogger.LBDisRank方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: userRecStatHandler
func userRecStatHandler(request *http.Request, resp http.ResponseWriter, redis *models.RedisLogger, form userRecStatForm) {
user := &models.Account{}
stats := &statResp{}
if find, err := user.FindByUserid(form.Userid); !find {
e := errors.NewError(errors.NotExistsError, "user not found")
if err != nil {
e = errors.NewError(errors.DbError, err.Error())
}
writeResponse(request.RequestURI, resp, nil, e)
return
}
stats.RecCount, _ = models.TotalRecords(form.Userid)
stats.TotalDistance, stats.TotalDuration = redis.RecStats(form.Userid)
maxDisRec, _ := models.MaxDistanceRecord(form.Userid)
maxSpeedRec, _ := models.MaxSpeedRecord(form.Userid)
stats.MaxDistance = &record{}
if maxDisRec.Sport != nil {
stats.MaxDistance.Type = maxDisRec.Type
stats.MaxDistance.Source = maxDisRec.Sport.Source
stats.MaxDistance.BeginTime = maxDisRec.StartTime.Unix()
stats.MaxDistance.EndTime = maxDisRec.EndTime.Unix()
stats.MaxDistance.Duration = maxDisRec.Sport.Duration
stats.MaxDistance.Distance = maxDisRec.Sport.Distance
}
stats.MaxSpeed = &record{}
if maxSpeedRec.Sport != nil {
stats.MaxDistance.Type = maxDisRec.Type
stats.MaxDistance.Source = maxDisRec.Sport.Source
stats.MaxDistance.BeginTime = maxDisRec.StartTime.Unix()
stats.MaxDistance.EndTime = maxDisRec.EndTime.Unix()
stats.MaxSpeed.Duration = maxSpeedRec.Sport.Duration
stats.MaxSpeed.Distance = maxSpeedRec.Sport.Distance
}
stats.Score = user.Props.Score
stats.Actor = userActor(user.Actor)
stats.Level = user.Level()
//stats.Rank = userRank(stats.Level)
stats.Index = redis.LBDisRank(form.Userid) + 1
stats.LBCount = redis.LBDisCard()
writeResponse(request.RequestURI, resp, stats, nil)
}
示例2: leaderboardHandler
func leaderboardHandler(request *http.Request, resp http.ResponseWriter,
redis *models.RedisLogger, user *models.Account, form leaderboardForm) {
if form.Paging.Count == 0 {
form.Paging.Count = models.DefaultPageSize
}
start := 0
stop := 0
switch form.Type {
case "FRIEND":
ids := redis.Friends("friend", user.Id)
friends, err := models.Users(ids, &form.Paging)
if err != nil {
writeResponse(request.RequestURI, resp, nil, err)
return
}
lb := make([]leaderboardResp, len(friends))
for i, _ := range friends {
lb[i].Userid = friends[i].Id
lb[i].Score = friends[i].Props.Score
lb[i].Level = friends[i].Level()
lb[i].Profile = friends[i].Profile
lb[i].Nickname = friends[i].Nickname
lb[i].Gender = friends[i].Gender
lb[i].Actor = friends[i].Actor
lb[i].LastLog = friends[i].LastLogin.Unix()
lb[i].Birth = friends[i].Birth
lb[i].Location = friends[i].Loc
lb[i].Phone = friends[i].Phone
}
respData := map[string]interface{}{
"members_list": lb,
"page_frist_id": form.Paging.First,
"page_last_id": form.Paging.Last,
}
writeResponse(request.RequestURI, resp, respData, nil)
return
case "USER_AROUND":
rank := redis.LBDisRank(form.Info)
if rank < 0 {
writeResponse(request.RequestURI, resp, nil, errors.NewError(errors.NotExistsError, "user not exist"))
return
}
if form.Paging.Count < 0 {
start = rank
stop = rank
break
}
start = rank - form.Paging.Count
if start < 0 {
start = 0
}
stop = rank + form.Paging.Count
case "TOP":
fallthrough
default:
start, stop = leaderboardPaging(&form.Paging)
}
kv := redis.GetDisLB(start, stop)
ids := make([]string, len(kv))
for i, _ := range kv {
ids[i] = kv[i].K
}
users, _ := models.FindUsersByIds(0, ids...)
lb := make([]leaderboardResp, len(kv))
for i, _ := range kv {
lb[i].Userid = kv[i].K
lb[i].Rank = start + i + 1
lb[i].Score = kv[i].V
for _, user := range users {
if user.Id == kv[i].K {
lb[i].Nickname = user.Nickname
lb[i].Profile = user.Profile
break
}
}
}
page_first := 0
page_last := 0
if len(lb) > 0 {
page_first = lb[0].Rank
page_last = lb[len(lb)-1].Rank
}
respData := map[string]interface{}{
"members_list": lb,
"page_frist_id": strconv.Itoa(page_first),
"page_last_id": strconv.Itoa(page_last),
}
writeResponse(request.RequestURI, resp, respData, nil)
//.........這裏部分代碼省略.........