Exemple #1
0
        public async Task <IActionResult> List()
        {
            if (WikiListCaches != null && WikiListCaches.Item1.AddMinutes(5) > DateTime.Now)
            {
                return(Json(WikiListCaches.Item2));
            }

            List <WikiPassageDto>  wikiPassageDtos = this._wikiPassageService.ListDtos();
            List <WikiListItemDto> wikiListItems   = new List <WikiListItemDto>();

            foreach (WikiPassageDto item in wikiPassageDtos)
            {
                WikiListItemDto dto = new WikiListItemDto();
                dto.Id          = item.Id;
                dto.Title       = item.Title;
                dto.Description = await this._wikiPassageService.PickDescriptionFromContent(item.Content);

                dto.RoutePath = item.RoutePath;
                dto.CoverUrl  = await this._wikiPassageService.PickCoverUrlFromContentFirstImage(item.Content);

                wikiListItems.Add(dto);
            }

            //Cache
            WikiListController.WikiListCaches = new Tuple <DateTime, List <WikiListItemDto> >(DateTime.Now, wikiListItems);

            return(Json(wikiListItems));
        }
Exemple #2
0
        /// 列出所有文章的概述。
        ///
        /// 注意:
        ///     包含文章标题、概述、封面图链接等。
        /// <param name="isContainLastModifyUserInfo">是否包含文章的作者信息</param>
        /// <param name="neverReadFromCache">是否立即从数据库中执行统计。设置为 false,则自动按照缓存策略决定返回的数据来自于缓存还是数据库。</param>
        /// <returns></returns>
        public virtual async Task <List <WikiListItemDto> > ListAllPassageGenerals(bool readFromDatabaseImmediately = false)
        {
            if (!readFromDatabaseImmediately)
            {
                if (WikiListCaches != null && WikiListCaches.Item1.AddMinutes(5) > DateTime.Now)
                {
                    return(WikiListCaches.Item2);
                }
            }

            List <WikiPassage>     wikiPassageDtos = List();
            List <WikiListItemDto> wikiListItems   = new List <WikiListItemDto>();

            foreach (WikiPassage item in wikiPassageDtos)
            {
                WikiListItemDto dto = new WikiListItemDto();
                dto.Id          = item.Id;
                dto.Title       = item.Title;
                dto.Description = await PickDescriptionFromContent(item.Content);

                dto.RoutePath = item.RoutePath;
                dto.CoverUrl  = await PickCoverUrlFromContentFirstImage(item.Content);

                dto.LastModifyDate = item.LastModifyDate.ToString("yyyy-MM-dd HH:mm:ss");
                dto.LastModifyUser = new UserInfoDto {
                    Id = item.LastModifyUserId
                };
                wikiListItems.Add(dto);
            }

            //Cache
            WikiPassageService.WikiListCaches = new Tuple <DateTime, List <WikiListItemDto> >(DateTime.Now, wikiListItems);

            return(wikiListItems);
        }
        private async Task <WikiListItemDto> CovertToWikiListModel(WikiPassage wikiPassage)
        {
            WikiListItemDto dto = new WikiListItemDto();

            dto.Id          = wikiPassage.Id;
            dto.Title       = wikiPassage.Title;
            dto.Description = await PickDescriptionFromContent(wikiPassage.Content);

            dto.RoutePath = wikiPassage.RoutePath;
            dto.CoverUrl  = await PickCoverUrlFromContentFirstImage(wikiPassage.Content);

            dto.LastModifyDate = wikiPassage.LastModifyDate.ToString("yyyy-MM-dd HH:mm:ss");
            dto.LastModifyUser = new UserInfoDto {
                Id = wikiPassage.LastModifyUserId
            };
            dto.TotalViewsCount = wikiPassage.TotalViewsCount;

            return(dto);
        }