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)); }
/// 列出所有文章的概述。 /// /// 注意: /// 包含文章标题、概述、封面图链接等。 /// <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); }