Esempio n. 1
0
 /// <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);
 }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
 /// <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);
 }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
 public ActionResult _ListTopUsers(string spaceKey, int topNumber, SortBy_User sortBy = SortBy_User.HitTimes)
 {
     IEnumerable<IUser> users = userService.GetTopUsers(topNumber, sortBy);
     return View(users);
 }
Esempio n. 6
0
 /// <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 } });
 }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
        /// <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);
        }