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) }
func recommendHandler(r *http.Request, w http.ResponseWriter, redis *models.RedisLogger, user *models.Account, p Parameter) { form := p.(recommendForm) excludes := redis.Friends(models.RelFollowing, user.Id) excludes = append(excludes, redis.Friends(models.RelBlacklist, user.Id)...) users, _ := user.Recommend(excludes) var list []*leaderboardResp for i, _ := range users { if users[i].Id == user.Id { continue } rel := redis.Relationship(user.Id, users[i].Id) if rel == models.RelFollowing || rel == models.RelFriend { continue } lb := &leaderboardResp{ Userid: users[i].Id, Score: users[i].Props.Score, Level: users[i].Level(), Profile: users[i].Profile, Nickname: users[i].Nickname, Gender: users[i].Gender, LastLog: users[i].LastLogin.Unix(), Birth: users[i].Birth, Location: users[i].Loc, Addr: users[i].LocAddr, Phone: users[i].Phone, Actor: users[i].Actor, } lb.Distance, _ = redis.RecStats(users[i].Id) lb.Status = users[i].LatestArticle().Title list = append(list, lb) } respData := map[string]interface{}{ "members_list": list, "page_frist_id": form.Paging.First, "page_last_id": form.Paging.Last, } writeResponse(r.RequestURI, w, respData, nil) }