/// <summary> /// 获取前N个用户 /// </summary> /// <param name="topNumber">获取用户数</param> /// <param name="sortBy">排序字段</param> /// <returns></returns> public static IEnumerable<IUser> GetTopUsers(this IUserService userService, int topNumber, SortBy_User sortBy) { IUserRepository userRepository = userService.GetUserRepository(); return userRepository.GetTopUsers(topNumber, sortBy); }
/// <summary> /// 获取前N个用户 /// </summary> /// <param name="topNumber">获取用户数</param> /// <param name="sortBy">排序字段</param> /// <returns></returns> public IEnumerable <User> GetTopUsers(int topNumber, SortBy_User sortBy) { IEnumerable <User> topUsers = null; topUsers = GetTopEntities(topNumber, CachingExpirationType.ObjectCollection, () => { //获取缓存 StringBuilder cacheKey = new StringBuilder("TopUsers:"); cacheKey.AppendFormat("SortBy-{0}", (int)sortBy); return(cacheKey.ToString()); }, () => { var sql = PetaPoco.Sql.Builder; var whereSql = Sql.Builder; var orderSql = Sql.Builder; whereSql.Where("IsActivated =1 and IsBanned = 0"); CountService countService = new CountService(TenantTypeIds.Instance().User()); StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().User()); string countTableName = countService.GetTableName_Counts(); int stageCountDays; string stageCountType; switch (sortBy) { case SortBy_User.FollowerCount: orderSql.OrderBy("FollowerCount desc"); break; case SortBy_User.ReputationPoints: orderSql.OrderBy("ReputationPoints desc"); break; case SortBy_User.DateCreated: orderSql.OrderBy("UserId desc"); break; case SortBy_User.PreWeekHitTimes: stageCountDays = 7; stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().HitTimes(), stageCountDays); sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType)) .On("UserId = c.ObjectId"); orderSql.OrderBy("c.StatisticsCount desc"); break; case SortBy_User.HitTimes: sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, CountTypes.Instance().HitTimes())) .On("UserId = c.ObjectId"); orderSql.OrderBy("c.StatisticsCount desc"); break; case SortBy_User.PreWeekReputationPoints: stageCountDays = 7; stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().ReputationPointsCounts(), stageCountDays); sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType)) .On("UserId = c.ObjectId"); orderSql.OrderBy("c.StatisticsCount desc"); break; default: orderSql.OrderBy("FollowerCount desc"); break; } return(sql.Append(whereSql).Append(orderSql)); }); return(topUsers); }
/// <summary> /// 根据排序条件分页显示用户 /// </summary> /// <param name="sortBy">排序条件</param> /// <param name="pageIndex">当前页码</param> /// <param name="pageSize">每页记录</param> /// <returns>根据排序条件倒排序分页显示用户</returns> public static PagingDataSet<User> GetPagingUsers(this IUserService userService, SortBy_User? sortBy, int pageIndex, int pageSize) { IUserRepository userRepository = userService.GetUserRepository(); return userRepository.GetPagingUsers(sortBy, pageIndex, pageSize); }
/// <summary> /// 获取前N个用户 /// </summary> /// <param name="topNumber">获取用户数</param> /// <param name="sortBy">排序字段</param> /// <returns></returns> public static IEnumerable <IUser> GetTopUsers(this IUserService userService, int topNumber, SortBy_User sortBy) { IUserRepository userRepository = userService.GetUserRepository(); return(userRepository.GetTopUsers(topNumber, sortBy)); }
public ActionResult _ListTopUsers(string spaceKey, int topNumber, SortBy_User sortBy = SortBy_User.HitTimes) { IEnumerable<IUser> users = userService.GetTopUsers(topNumber, sortBy); return View(users); }
/// <summary> /// 排行榜 /// </summary> /// <returns></returns> public string FindUserRanking(SortBy_User sortBy, int pageIndex = 1) { return CachedUrlHelper.Action("Ranking", "FindUser", CommonAreaName, new RouteValueDictionary { { "sortBy", sortBy }, { "pageIndex", pageIndex } }); }
public ActionResult _TopUsers(SortBy_User? sortBy, int topNumber = 20) { IEnumerable<IUser> users = userService.GetTopUsers(topNumber, sortBy ?? SortBy_User.PreWeekHitTimes); ViewData["sortBy"] = sortBy; return PartialView(users); }
/// <summary> /// 排行榜 /// </summary> //[DonutOutputCache(CacheProfile = "Frequently")] public ActionResult Ranking(SortBy_User? sortBy = SortBy_User.PreWeekHitTimes, int pageIndex = 1) { PagingDataSet<User> users = userService.GetPagingUsers(sortBy, pageIndex, 20); IUser CurrentUser = UserContext.CurrentUser; ViewData["sortBy"] = sortBy; //查询用户标签 IEnumerable<long> itemInTagIds = tagService.GetItemInTagIdsByItemIds(users.Select(n => n.UserId)); IEnumerable<ItemInTag> itemInTags = tagService.GetItemInTags(itemInTagIds); Dictionary<long, List<string>> userTagNameDic = new Dictionary<long, List<string>>(); foreach (ItemInTag itemInTag in itemInTags) { if (userTagNameDic.ContainsKey(itemInTag.ItemId)) { List<string> tagNames = userTagNameDic[itemInTag.ItemId]; tagNames.Add(itemInTag.TagName); } else { List<string> tagNames = new List<string>(); tagNames.Add(itemInTag.TagName); userTagNameDic.Add(itemInTag.ItemId, tagNames); } } ViewData["userTagNameDic"] = userTagNameDic; pageResourceManager.InsertTitlePart("用户排行"); return View(users); }