public static List <int> GetContentIdList(SiteInfo siteInfo, ChannelInfo channelInfo, int?onlyAdminId, int offset, int limit) { var list = ListCache.GetContentIdList(channelInfo.Id, onlyAdminId); if (list.Count >= offset + limit) { return(list.Skip(offset).Take(limit).ToList()); } var tableName = ChannelManager.GetTableName(siteInfo, channelInfo); if (list.Count == offset) { var dict = ContentCache.GetContentDict(channelInfo.Id); var pageContentInfoList = DataProvider.ContentDao.GetContentInfoList(tableName, DataProvider.ContentDao.GetCacheWhereString(siteInfo, channelInfo, onlyAdminId), DataProvider.ContentDao.GetOrderString(channelInfo, string.Empty), offset, limit); foreach (var contentInfo in pageContentInfoList) { dict[contentInfo.Id] = contentInfo; } var pageContentIdList = pageContentInfoList.Select(x => x.Id).ToList(); list.AddRange(pageContentIdList); return(pageContentIdList); } return(DataProvider.ContentDao.GetCacheContentIdList(tableName, DataProvider.ContentDao.GetCacheWhereString(siteInfo, channelInfo, onlyAdminId), DataProvider.ContentDao.GetOrderString(channelInfo, string.Empty), offset, limit)); }
public static List <int> GetContentIdList(SiteInfo siteInfo, ChannelInfo channelInfo, int offset, int limit) { var list = ListCache.GetContentIdList(channelInfo.Id); if (list.Count >= offset + limit) { return(list.Skip(offset).Take(limit).ToList()); } if (list.Count == offset) { var dict = ContentCache.GetContentDict(channelInfo.Id); var pageContentInfoList = DataProvider.ContentDao.GetCacheContentInfoList(siteInfo, channelInfo, offset, limit); foreach (var contentInfo in pageContentInfoList) { dict[contentInfo.Id] = contentInfo; } var pageContentIdList = pageContentInfoList.Select(x => x.Id).ToList(); list.AddRange(pageContentIdList); return(pageContentIdList); } return(DataProvider.ContentDao.GetCacheContentIdList(siteInfo, channelInfo, offset, limit)); }
public static List <(int ChannelId, int ContentId)> GetChannelContentIdList(SiteInfo siteInfo, ChannelInfo channelInfo, int adminId, bool isAllContents, int offset, int limit) { var tableName = ChannelManager.GetTableName(siteInfo, channelInfo); var channelContentIdList = new List <(int ChannelId, int ContentId)>(); foreach (var contentId in ListCache.GetContentIdList(channelInfo.Id, adminId)) { channelContentIdList.Add((channelInfo.Id, contentId)); } if (isAllContents) { var channelIdList = ChannelManager.GetChannelIdList(channelInfo, EScopeType.Descendant); foreach (var contentChannelId in channelIdList) { var contentChannelInfo = ChannelManager.GetChannelInfo(siteInfo.Id, contentChannelId); var channelTableName = ChannelManager.GetTableName(siteInfo, contentChannelInfo); if (!StringUtils.EqualsIgnoreCase(tableName, channelTableName)) { continue; } foreach (var contentId in ListCache.GetContentIdList(contentChannelId, adminId)) { channelContentIdList.Add((contentChannelId, contentId)); } } } if (channelContentIdList.Count >= offset + limit) { return(channelContentIdList.Skip(offset).Take(limit).ToList()); } if (channelContentIdList.Count == offset) { var dict = ContentCache.GetContentDict(channelInfo.Id); var pageContentInfoList = DataProvider.ContentDao.GetContentInfoList(tableName, DataProvider.ContentDao.GetCacheWhereString(siteInfo, channelInfo, adminId, isAllContents), DataProvider.ContentDao.GetOrderString(channelInfo, string.Empty, isAllContents), offset, limit); foreach (var contentInfo in pageContentInfoList) { ListCache.Set(contentInfo); dict[contentInfo.Id] = contentInfo; } var pageContentIdList = pageContentInfoList.Select(x => (x.ChannelId, x.Id)).ToList(); channelContentIdList.AddRange(pageContentIdList); return(pageContentIdList); } return(DataProvider.ContentDao.GetCacheChannelContentIdList(tableName, DataProvider.ContentDao.GetCacheWhereString(siteInfo, channelInfo, adminId, isAllContents), DataProvider.ContentDao.GetOrderString(channelInfo, string.Empty, isAllContents), offset, limit)); }
public static void InsertCache(SiteInfo siteInfo, ChannelInfo channelInfo, IContentInfo contentInfo) { if (contentInfo.SourceId == SourceManager.Preview) { return; } var contentIdList = ListCache.GetContentIdList(channelInfo.Id); if (ETaxisTypeUtils.Equals(ETaxisType.OrderByTaxisDesc, channelInfo.Additional.DefaultTaxisType)) { contentIdList.Insert(0, contentInfo.Id); } else { ListCache.Remove(channelInfo.Id); } var dict = ContentCache.GetContentDict(contentInfo.ChannelId); dict[contentInfo.Id] = (ContentInfo)contentInfo; var tableName = ChannelManager.GetTableName(siteInfo, channelInfo); var countInfoList = GetContentCountInfoList(tableName); var countInfo = countInfoList.FirstOrDefault(x => x.SiteId == siteInfo.Id && x.ChannelId == channelInfo.Id && x.IsChecked == contentInfo.IsChecked.ToString() && x.CheckedLevel == contentInfo.CheckedLevel); if (countInfo != null) { countInfo.Count++; } StlContentCache.ClearCache(); CountCache.Clear(tableName); }