コード例 #1
0
        /// <summary>
        /// 获得当前文章同一个Collection中的下一篇
        /// </summary>
        /// <param name="IsNext"></param>
        /// <returns></returns>
        public Article GetArticleInCollection(bool IsNext)
        {
            //寻找同一个Collection
            //Code大(小)于当前Code的记录
            //已经审核发布的
            //是否发布首页标志相同的
            //按照升(降)序排序,取第一条,
            IMongoQuery CollectionIDQuery = Query.EQ(nameof(CollectionID), CollectionID);
            IMongoQuery CodeQuery         = IsNext ? Query.GT(nameof(Code), Code) : Query.LT(nameof(Code), Code);

            Sort.SortArg[] sortArgs = new Sort.SortArg[1];
            sortArgs[0] = new Sort.SortArg()
            {
                FieldName = nameof(Code),
                SortType  = IsNext ? Sort.SortType.Ascending : Sort.SortType.Descending,
                SortOrder = 1
            };
            Action <MongoCursor> setCursor = x => { x.SetSortOrder(Sort.GetSortBuilder(sortArgs)); };
            //这里认为可以是所有公开的文章,通过首页文章,查看同文集的公开文章
            var Articlelist = MongoDbRepository.GetRecList <Article>(Query.And(CollectionIDQuery, CodeQuery, ArticleListManager.PublicArticleQuery), setCursor);

            if (Articlelist.Count > 0)
            {
                return(Articlelist[0]);
            }
            else
            {
                return(null);
            }
        }
コード例 #2
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);
        }
コード例 #3
0
        /// <summary>
        /// 获得首页表示的文章列表
        /// 按照确认时间排序
        /// </summary>
        /// <param name="p">分页器</param>
        /// <param name="isFirstPage">仅首页</param>
        /// <param name="AddtionalCondition">附加条件</param>
        /// <returns></returns>
        public static List <ArticleItemBody> GetPublicListForArticleByPage(Pages p, ArticleQueryFilter filter)
        {
            //注意这里必须要控制取出的数量,当然现在可以不考虑优化问题
            //所有文章中首页审核通过的,限制数量4000篇(20 * 20)
            //取出后进行缓存
            var sortArgs = new Sort.SortArg[1];

            sortArgs[0] = new Sort.SortArg
            {
                FieldName = nameof(Article.ConfirmDateTime),
                SortType  = Sort.SortType.Descending,
                SortOrder = 1
            };
            //修改后的文章再发布,则发布日期是最新的,这里使用首页审核日期作为排序日期。
            Action <MongoCursor> setCursor = x => { x.SetSkip(p.SkipCount()).SetLimit(p.PageItemCount).SetSortOrder(Sort.GetSortBuilder(sortArgs)); };
            var firstpage = new List <Article>();

            firstpage = MongoDbRepository.GetRecList <Article>(GetQueryByArticelFilter(filter), setCursor);
            var titlelist = new List <ArticleItemBody>();

            foreach (var item in firstpage)
            {
                titlelist.Add(GetArticleItemBodyById(item.Sn));
            }
            return(titlelist);
        }
コード例 #4
0
        /// <summary>
        /// 非黑名单的一览表
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static List <UserInfo> GetNoBlockUserInfo(Pages p)
        {
            var sortArgs = new Sort.SortArg[1];

            sortArgs[0] = new Sort.SortArg
            {
                FieldName = MongoDbRepository.MongoKeyField,
                SortType  = Sort.SortType.Descending,
                SortOrder = 1
            };
            Action <MongoCursor> setCursor = x => { x.SetSkip(p.SkipCount()).SetLimit(p.PageItemCount).SetSortOrder(Sort.GetSortBuilder(sortArgs)); };

            return(MongoDbRepository.GetRecList <UserInfo>(NoBlockUserQuery, setCursor));
        }
コード例 #5
0
        /// <summary>
        /// 获得指定小时内首页发布文章的列表
        /// </summary>
        /// <returns></returns>
        public static List <Article> GetHoursFirstPageArticleList(int Hours = 48)
        {
            IMongoQuery ConfirmDateTimeQuery = Query.GT(nameof(ConfirmDateTime), DateTime.Now.AddHours(-Hours));
            var         sortArgs             = new Sort.SortArg[1];

            sortArgs[0] = new Sort.SortArg
            {
                FieldName = nameof(ConfirmDateTime),
                SortType  = Sort.SortType.Descending,
                SortOrder = 1
            };
            Action <MongoCursor> setCursor = x => { x.SetSortOrder(Sort.GetSortBuilder(sortArgs)); };

            return(MongoDbRepository.GetRecList <Article>(Query.And(ArticleListManager.FirstPageArticleQuery, ConfirmDateTimeQuery), setCursor));
        }