Ejemplo n.º 1
0
        /// <summary>
        /// 最新发布文章
        /// </summary>
        /// <returns></returns>
        public static AsideColumnBody LastArticle(int ArticleCnt)
        {
            var sortArgs = new Sort.SortArg[1];

            sortArgs[0] = new Sort.SortArg
            {
                FieldName = nameof(Article.PublishDateTime),
                SortType  = Sort.SortType.Descending,
                SortOrder = 1
            };
            Action <MongoCursor> setCursor = x => { x.SetLimit(ArticleCnt).SetSortOrder(Sort.GetSortBuilder(sortArgs)); };
            var firstpage = MongoDbRepository.GetRecList <Article>(ArticleListManager.FirstPageArticleQuery, setCursor);
            var titlelist = new AsideColumnBody()
            {
                Title      = "最新发布文章",
                DetailItem = new List <GenericItem>(),
                HrefBase   = "/ArticlePage/Index?ArticleId="
            };

            foreach (var item in firstpage)
            {
                titlelist.DetailItem.Add(new GenericItem()
                {
                    Display = item.Title,
                    Cnt     = item.GetStockCnt(),
                    KeyId   = item.Sn
                });
            }
            return(titlelist);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获得指定时间内评分最高的文章
        /// </summary>
        /// <param name="ArticleCnt"></param>
        /// <param name="Hours"></param>
        /// <returns></returns>
        public static AsideColumnBody HotArticle(int ArticleCnt, int Hours)
        {
            //评分规则在ArticleListManager编写
            var articles     = Article.GetHoursFirstPageArticleList(Hours);
            var articleBodys = new List <ArticleBody>();

            foreach (var art in articles)
            {
                articleBodys.Add(ArticleListManager.GetArticleBodyById(art.Sn));
            }
            var firstpage = articleBodys.OrderByDescending((x) => { return(x.Score); });
            var titlelist = new AsideColumnBody()
            {
                Title      = Hours + "小时热门文章",
                DetailItem = new List <GenericItem>(),
                HrefBase   = "/ArticlePage/Index?ArticleId="
            };
            int xCnt = 0;

            foreach (var item in firstpage)
            {
                titlelist.DetailItem.Add(new GenericItem()
                {
                    Display = item.ArticleInfo.Title,
                    Cnt     = item.Score,
                    KeyId   = item.ArticleInfo.Sn
                });
                xCnt++;
                if (xCnt == ArticleCnt)
                {
                    break;
                }
            }
            return(titlelist);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 最多文章作者
        /// </summary>
        /// <param name="AuthorCnt"></param>
        /// <returns></returns>
        public static AsideColumnBody MostArticleAuthor(int AuthorCnt)
        {
            var titlelist = new AsideColumnBody()
            {
                Title      = "最多文章作者",
                DetailItem = GetGenericItemListByRankContain(new RankContain(UserManager.UserGroupCntResult()), AuthorCnt, UserInfo.GetUserNickNameByAccountId),
                HrefBase   = "/Author/Index?AccountId="
            };

            return(titlelist);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 泛用标签
        /// </summary>
        /// <param name="RankTagDic"></param>
        /// <param name="TagCntDic"></param>
        /// <returns></returns>
        public static AsideColumnBody CreateTagRankAside(RankContain rankContain, int TagCnt)
        {
            var titlelist = new AsideColumnBody()
            {
                Title      = "标签一览",
                DetailItem = GetGenericItemListByRankContain(rankContain, TagCnt),
                HrefBase   = "/Home/TagList?PageNo=1&TagName="
            };

            return(titlelist);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 最热门标签
        /// </summary>
        /// <param name="TagCnt"></param>
        /// <returns></returns>
        public static AsideColumnBody MostHotTag_TwoCombo(int TagCnt)
        {
            var titlelist = new AsideColumnBody()
            {
                HrefBase   = "/Home/TagList?PageNo=1&TagName=",
                Title      = "最热门标签组合",
                DetailItem = GetGenericItemListByRankContain(TagUtility.TagTwoComboRankContain, TagCnt, (x) => { return(x.Replace("|", " + ")); }),
            };

            return(titlelist);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 最热门标签
        /// </summary>
        /// <param name="TagCnt"></param>
        /// <returns></returns>
        public static AsideColumnBody MostHotTag(int TagCnt)
        {
            var titlelist = new AsideColumnBody()
            {
                Title      = "最热门标签",
                DetailItem = GetGenericItemListByRankContain(TagUtility.TagRankContain, TagCnt),
                HrefBase   = "/Home/TagList?PageNo=1&TagName="
            };

            return(titlelist);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 该标签的作者列表(文章数排序)
        /// </summary>
        /// <param name="TopCnt"></param>
        /// <returns></returns>
        public static AsideColumnBody GetMostAuthorByTag(string tagName, int AuthorCnt = 10)
        {
            IMongoQuery TagNameQuery   = Article.GetTagQuery(tagName);
            var         groupCntResult = MongoDbRepository.GroupCount(Article.CollectionName, nameof(Article.OwnerId), Query.And(ArticleListManager.FirstPageArticleQuery, TagNameQuery));
            var         titlelist      = new AsideColumnBody()
            {
                Title      = "最多文章作者",
                DetailItem = GetGenericItemListByRankContain(new RankContain(groupCntResult), AuthorCnt, UserInfo.GetUserNickNameByAccountId),
                HrefBase   = "/Author/Index?AccountId="
            };

            return(titlelist);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// HotCircle
        /// </summary>
        /// <returns></returns>
        public static AsideColumnBody HotCircle(int CircleCnt)
        {
            var DistinctResult = MongoDbRepository.Distinct(UserInfo.CollectionName, nameof(UserInfo.TopicList));
            var groupCntResult = new Dictionary <string, int>();

            foreach (string item in DistinctResult)
            {
                groupCntResult.Add(item, UserInfo.GetJoinsCnt(item));
            }
            var titlelist = new AsideColumnBody()
            {
                Title      = "热门圈子",
                DetailItem = GetGenericItemListByRankContain(new RankContain(groupCntResult), CircleCnt),
                HrefBase   = "/Home/TagList?PageNo=1&TagName="
            };

            return(titlelist);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 统计个人的兴趣爱好
        /// </summary>
        public static AsideColumnBody TagHobby(string accountId, int TagCnt)
        {
            var TagScore = new Dictionary <string, int>();
            //阅读量
            var visitors = Visitor.GetArticleByAccountId(accountId);

            foreach (var article in visitors)
            {
                foreach (var tag in article.TagName)
                {
                    if (TagScore.ContainsKey(tag))
                    {
                        TagScore[tag] += 1;
                    }
                    else
                    {
                        TagScore.Add(tag, 1);
                    }
                }
            }
            //评论
            IMongoQuery AuthorQuery = Query.EQ(nameof(Comment.OwnerId), accountId);
            var         comments    = MongoDbRepository.GetRecList <Comment>(AuthorQuery);

            foreach (var comment in comments)
            {
                var article = Article.GetArticleBySn(comment.ArticleID);
                foreach (var tag in article.TagName)
                {
                    if (TagScore.ContainsKey(tag))
                    {
                        TagScore[tag] += 3;
                    }
                    else
                    {
                        TagScore.Add(tag, 3);
                    }
                }
            }

            //收藏
            AuthorQuery = Query.EQ(nameof(Stock.OwnerId), accountId);
            var Stocks = MongoDbRepository.GetRecList <Stock>(AuthorQuery);

            foreach (var stock in Stocks)
            {
                var article = Article.GetArticleBySn(stock.ArticleID);
                foreach (var tag in article.TagName)
                {
                    if (TagScore.ContainsKey(tag))
                    {
                        TagScore[tag] += 5;
                    }
                    else
                    {
                        TagScore.Add(tag, 5);
                    }
                }
            }

            //文章
            AuthorQuery = Query.EQ(nameof(Article.OwnerId), accountId);
            var articles = MongoDbRepository.GetRecList <Article>(Query.And(AuthorQuery, ArticleListManager.FirstPageArticleQuery));

            foreach (var article in articles)
            {
                foreach (var tag in article.TagName)
                {
                    if (TagScore.ContainsKey(tag))
                    {
                        TagScore[tag] += 10;
                    }
                    else
                    {
                        TagScore.Add(tag, 10);
                    }
                }
            }

            var titlelist = new AsideColumnBody()
            {
                Title      = "标签关注度",
                DetailItem = GetGenericItemListByRankContain(new RankContain(TagScore), TagCnt),
                HrefBase   = "/Home/TagList?PageNo=1&TagName="
            };

            return(titlelist);
        }