本文整理匯總了Golang中github.com/ginuerzh/sports/models.RedisLogger.GetDisLB方法的典型用法代碼示例。如果您正苦於以下問題:Golang RedisLogger.GetDisLB方法的具體用法?Golang RedisLogger.GetDisLB怎麽用?Golang RedisLogger.GetDisLB使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/ginuerzh/sports/models.RedisLogger
的用法示例。
在下文中一共展示了RedisLogger.GetDisLB方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: 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)
//.........這裏部分代碼省略.........