/// <summary> /// 把fromFolderId合并到toFolderId /// </summary> /// <remarks> /// 例如:将栏目fromFolderId合并到栏目toFolderId,那么fromFolderId栏目下的所有子栏目和ContentItem全部归到toFolderID栏目,同时删除fromFolderID栏目 /// </remarks> public void Merge(int fromFolderId, int toFolderId) { ContentFolder toFolder = Get(toFolderId); if (toFolder == null) { return; } ContentFolder fromFolder = Get(fromFolderId); if (fromFolder == null) { return; } ContentItemRepository contentItemRepository = new ContentItemRepository(); foreach (var childSection in fromFolder.Children) { childSection.ParentId = toFolderId; childSection.Depth = toFolder.Depth + 1; if (childSection.Depth == 1) { childSection.ParentIdList = childSection.ParentId.ToString(); } else { childSection.ParentIdList = toFolder.ParentIdList + "," + childSection.ParentId; } RecursiveUpdateDepthAndParentIdList(childSection); ContentItemQuery contentItemQuery = new ContentItemQuery(CacheVersionType.None) { ContentFolderId = childSection.ContentFolderId }; PagingDataSet <ContentItem> contentItems = contentItemRepository.GetContentItems(false, contentItemQuery, int.MaxValue, 1); foreach (var contentItem in contentItems) { contentItem.ContentFolderId = toFolderId; contentItemRepository.Update(contentItem); } } ContentItemQuery currentContentItemQuery = new ContentItemQuery(CacheVersionType.None) { ContentFolderId = fromFolderId }; PagingDataSet <ContentItem> currentContentItems = contentItemRepository.GetContentItems(false, currentContentItemQuery, int.MaxValue, 1); foreach (var item in currentContentItems) { item.ContentFolderId = toFolderId; contentItemRepository.Update(item); } if (fromFolder.ParentId > 0) { ContentFolder fromParentFolder = Get(fromFolder.ParentId); if (fromParentFolder != null) { fromParentFolder.ChildCount -= 1; } } toFolder.ChildCount += fromFolder.ChildCount; contentFolderRepository.Update(toFolder); contentFolderRepository.Delete(fromFolder); EntityData.ForType(typeof(Navigation)).RealTimeCacheHelper.IncreaseAreaVersion("OwnerId", 0); }
/// <summary> /// 构造器 /// </summary> public ContentItemService() { contentItemRepository = new ContentItemRepository(); }