public async Task <ActionResult <BoolResult> > Create([FromBody] CreateRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.Contents)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); var config = await _databaseManager.ConfigRepository.GetAsync(); foreach (var summary in summaries) { await _createManager.CreateContentAsync(request.SiteId, summary.ChannelId, summary.Id); if (config.IsLogSite && config.IsLogSiteCreate) { var filePath = await _pathManager.GetContentPageFilePathAsync(site, summary.ChannelId, summary.Id, 0); await _authManager.AddSiteCreateLogAsync(request.SiteId, summary.ChannelId, summary.Id, filePath); } } return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Create([FromBody] CreateRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.Contents)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); foreach (var summary in summaries) { await _createManager.CreateContentAsync(request.SiteId, summary.ChannelId, summary.Id); } return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.Translate)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); summaries.Reverse(); foreach (var summary in summaries) { await ContentUtility.TranslateAsync(_pathManager, _databaseManager, _pluginManager, site, summary.ChannelId, summary.Id, request.TransSiteId, request.TransChannelId, request.CopyType, _createManager, _authManager.AdminId); } await _authManager.AddSiteLogAsync(request.SiteId, request.ChannelId, "复制内容", string.Empty); await _createManager.TriggerContentChangedEventAsync(request.SiteId, request.ChannelId); return(new BoolResult { Value = true }); }
public async Task <ActionResult <GetResult> > Get([FromQuery] GetRequest request) { var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); var contents = new List <Content>(); foreach (var summary in summaries) { var channel = await _channelRepository.GetAsync(summary.ChannelId); var content = await _contentRepository.GetAsync(site, channel, summary.Id); if (content == null || content.UserId != _authManager.UserId) { continue; } var pageContent = content.Clone <Content>(); pageContent.Set(ColumnsManager.CheckState, CheckManager.GetCheckState(site, content)); contents.Add(pageContent); } return(new GetResult { Contents = contents }); }
public async Task <ActionResult <GetResult> > Get([FromQuery] GetRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.CheckLevel1)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); var contents = new List <Content>(); foreach (var summary in summaries) { var channel = await _channelRepository.GetAsync(summary.ChannelId); var content = await _contentRepository.GetAsync(site, channel, summary.Id); if (content == null) { continue; } var pageContent = content.Clone <Content>(); pageContent.Set(ColumnsManager.CheckState, CheckManager.GetCheckState(site, content)); contents.Add(pageContent); } var siteIdList = await _authManager.GetSiteIdsAsync(); var transSites = await _siteRepository.GetSelectsAsync(siteIdList); var(isChecked, checkedLevel) = await CheckManager.GetUserCheckLevelAsync(_authManager, site, request.ChannelId); var checkedLevels = ElementUtils.GetSelects(CheckManager.GetCheckedLevels(site, isChecked, checkedLevel, true)); return(new GetResult { Contents = contents, CheckedLevels = checkedLevels, CheckedLevel = checkedLevel, TransSites = transSites }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.Edit)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); foreach (var summary in summaries) { var channel = await _channelRepository.GetAsync(summary.ChannelId); var content = await _contentRepository.GetAsync(site, channel, summary.Id); if (content == null) { continue; } if (request.IsAdd) { content.Hits += request.Hits; } else { content.Hits -= request.Hits; } if (content.Hits < 0) { content.Hits = 0; } await _contentRepository.UpdateAsync(site, channel, content); } await _authManager.AddSiteLogAsync(request.SiteId, "设置内容点击量"); return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.Edit)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); foreach (var summary in summaries) { var channel = await _channelRepository.GetAsync(summary.ChannelId); var content = await _contentRepository.GetAsync(site, channel, summary.Id); if (content == null) { continue; } if (request.IsTop) { content.Top = !request.IsCancel; } if (request.IsRecommend) { content.Recommend = !request.IsCancel; } if (request.IsHot) { content.Hot = !request.IsCancel; } if (request.IsColor) { content.Color = !request.IsCancel; } await _contentRepository.UpdateAsync(site, channel, content); } await _authManager.AddSiteLogAsync(request.SiteId, request.IsCancel? "取消内容属性" : "设置内容属性"); //else if (pageType == "setHits") //{ // foreach (var channelContentId in channelContentIds) // { // var channelInfo = await _channelRepository.GetAsync(channelContentId.ChannelId); // var contentInfo = await _contentRepository.GetAsync(site, channelInfo, channelContentId.Id); // if (contentInfo == null) continue; // contentInfo.Hits = hits; // await _contentRepository.UpdateAsync(site, channelInfo, contentInfo); // } // await request.AddSiteLogAsync(siteId, "设置内容点击量"); //} return(new BoolResult { Value = true }); }
public async Task <ActionResult <SubmitResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.View)) { return(Unauthorized()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); if (channel == null) { return(this.Error("无法确定内容对应的栏目")); } var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.Contents); var contentInfoList = new List <Content>(); var calculatedContentInfoList = new List <Content>(); if (summaries.Count == 0) { var ccIds = await _contentRepository.GetSummariesAsync(site, channel, channel.IsAllContents); var count = ccIds.Count; var pages = Convert.ToInt32(Math.Ceiling((double)count / site.PageSize)); if (pages == 0) { pages = 1; } if (count > 0) { for (var page = 1; page <= pages; page++) { var offset = site.PageSize * (page - 1); var limit = site.PageSize; var pageCcIds = ccIds.Skip(offset).Take(limit).ToList(); var sequence = offset + 1; foreach (var channelContentId in pageCcIds) { var contentInfo = await _contentRepository.GetAsync(site, channelContentId.ChannelId, channelContentId.Id); if (contentInfo == null) { continue; } if (!request.IsAllCheckedLevel) { var checkedLevel = contentInfo.CheckedLevel; if (contentInfo.Checked) { checkedLevel = site.CheckContentLevel; } if (!request.CheckedLevelKeys.Contains(checkedLevel)) { continue; } } if (!request.IsAllDate) { if (contentInfo.AddDate < request.StartDate || contentInfo.AddDate > request.EndDate) { continue; } } contentInfoList.Add(contentInfo); calculatedContentInfoList.Add(await columnsManager.CalculateContentListAsync(sequence++, site, request.ChannelId, contentInfo, columns)); } } } } else { var sequence = 1; foreach (var channelContentId in summaries) { var contentInfo = await _contentRepository.GetAsync(site, channelContentId.ChannelId, channelContentId.Id); if (contentInfo == null) { continue; } if (!request.IsAllCheckedLevel) { var checkedLevel = contentInfo.CheckedLevel; if (contentInfo.Checked) { checkedLevel = site.CheckContentLevel; } if (!request.CheckedLevelKeys.Contains(checkedLevel)) { continue; } } if (!request.IsAllDate) { if (contentInfo.AddDate < request.StartDate || contentInfo.AddDate > request.EndDate) { continue; } } contentInfoList.Add(contentInfo); calculatedContentInfoList.Add(await columnsManager.CalculateContentListAsync(sequence++, site, request.ChannelId, contentInfo, columns)); } } var downloadUrl = string.Empty; if (contentInfoList.Count > 0) { if (request.ExportType == "zip") { var fileName = $"{channel.ChannelName}.zip"; var filePath = _pathManager.GetTemporaryFilesPath(fileName); var caching = new CacheUtils(_cacheManager); var exportObject = new ExportObject(_pathManager, _databaseManager, caching, site); contentInfoList.Reverse(); if (await exportObject.ExportContentsAsync(filePath, contentInfoList)) { downloadUrl = _pathManager.GetTemporaryFilesUrl(fileName); } } else if (request.ExportType == "excel") { var exportColumnNames = request.IsAllColumns ? columns.Select(x => x.AttributeName).ToList() : request.ColumnNames; var fileName = $"{channel.ChannelName}.csv"; var filePath = _pathManager.GetTemporaryFilesPath(fileName); var excelObject = new ExcelObject(_databaseManager, _pathManager); await excelObject.CreateExcelFileForContentsAsync(filePath, site, channel, calculatedContentInfoList, exportColumnNames); downloadUrl = _pathManager.GetTemporaryFilesUrl(fileName); } } return(new SubmitResult { Value = downloadUrl, IsSuccess = !string.IsNullOrEmpty(downloadUrl) }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.Edit)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var allTagNames = await _contentTagRepository.GetTagNamesAsync(request.SiteId); foreach (var tagName in request.TagNames) { if (!allTagNames.Contains(tagName)) { await _contentTagRepository.InsertAsync(request.SiteId, tagName); } } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); foreach (var summary in summaries) { var channel = await _channelRepository.GetAsync(summary.ChannelId); var content = await _contentRepository.GetAsync(site, channel, summary.Id); if (content == null) { continue; } var list = new List <string>(); foreach (var tagName in ListUtils.GetStringList(content.TagNames)) { if (allTagNames.Contains(tagName)) { list.Add(tagName); } } foreach (var name in request.TagNames) { if (request.IsCancel) { if (list.Contains(name)) { list.Remove(name); } } else { if (!list.Contains(name)) { list.Add(name); } } } content.TagNames = list; await _contentRepository.UpdateAsync(site, channel, content); } await _authManager.AddSiteLogAsync(request.SiteId, request.IsCancel? "批量取消内容标签" : "批量设置内容标签"); return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Delete([FromBody] DeleteRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.ContentsRecycle)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } if (request.Action == Action.Delete) { var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); foreach (var channelId in summaries.Select(x => Math.Abs(x.ChannelId)).Distinct()) { var contentIdList = summaries.Where(x => Math.Abs(x.ChannelId) == channelId).Select(x => x.Id).Distinct().ToList(); var tableName = site.TableName; var channel = await _channelRepository.GetAsync(channelId); if (channel != null) { tableName = _channelRepository.GetTableName(site, channel); } await _contentRepository.DeleteTrashAsync(site, channelId, tableName, contentIdList, _pluginManager); } await _authManager.AddSiteLogAsync(request.SiteId, "从回收站删除内容"); } else if (request.Action == Action.DeleteAll) { await _contentRepository.DeleteTrashAsync(site, _pluginManager); await _authManager.AddSiteLogAsync(request.SiteId, "从回收站清空所有内容"); } else if (request.Action == Action.Restore) { var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); foreach (var channelId in summaries.Select(x => Math.Abs(x.ChannelId)).Distinct()) { var contentIdList = summaries.Where(x => Math.Abs(x.ChannelId) == channelId).Select(x => x.Id).Distinct().ToList(); var tableName = site.TableName; var channel = await _channelRepository.GetAsync(channelId); if (channel != null) { tableName = _channelRepository.GetTableName(site, channel); } await _contentRepository.RestoreTrashAsync(site, channelId, tableName, contentIdList, request.RestoreChannelId); } await _authManager.AddSiteLogAsync(request.SiteId, "从回收站还原内容"); } else if (request.Action == Action.RestoreAll) { await _contentRepository.RestoreTrashAsync(site, request.RestoreChannelId); await _authManager.AddSiteLogAsync(request.SiteId, "从回收站还原所有内容"); } return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.Edit)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); var isUp = request.IsUp; if (isUp == false) { summaries.Reverse(); } foreach (var summary in summaries) { var channel = await _channelRepository.GetAsync(summary.ChannelId); var content = await _contentRepository.GetAsync(site, channel, summary.Id); if (content == null) { continue; } var isTop = content.Top; for (var i = 1; i <= request.Taxis; i++) { if (isUp) { if (await _contentRepository.SetTaxisToUpAsync(site, channel, summary.Id, isTop) == false) { break; } } else { if (await _contentRepository.SetTaxisToDownAsync(site, channel, summary.Id, isTop) == false) { break; } } } } foreach (var distinctChannelId in summaries.Select(x => x.ChannelId).Distinct()) { await _createManager.TriggerContentChangedEventAsync(request.SiteId, distinctChannelId); } await _authManager.AddSiteLogAsync(request.SiteId, request.ChannelId, 0, "对内容排序", string.Empty); return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.CheckLevel1)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var isChecked = request.CheckedLevel >= site.CheckContentLevel; if (isChecked) { request.CheckedLevel = 0; } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); summaries.Reverse(); var adminId = _authManager.AdminId; foreach (var summary in summaries) { var contentChannelInfo = await _channelRepository.GetAsync(summary.ChannelId); var contentInfo = await _contentRepository.GetAsync(site, contentChannelInfo, summary.Id); if (contentInfo == null) { continue; } contentInfo.Set(ColumnsManager.CheckAdminId, adminId); contentInfo.Set(ColumnsManager.CheckDate, DateTime.Now); contentInfo.Set(ColumnsManager.CheckReasons, request.Reasons); contentInfo.Checked = isChecked; contentInfo.CheckedLevel = request.CheckedLevel; await _contentRepository.UpdateAsync(site, contentChannelInfo, contentInfo); await _contentCheckRepository.InsertAsync(new ContentCheck { SiteId = request.SiteId, ChannelId = contentInfo.ChannelId, ContentId = contentInfo.Id, AdminId = adminId, Checked = isChecked, CheckedLevel = request.CheckedLevel, CheckDate = DateTime.Now, Reasons = request.Reasons }); if (request.IsTranslate) { await ContentUtility.TranslateAsync(_pathManager, _databaseManager, _pluginManager, site, summary.ChannelId, summary.Id, request.TransSiteId, request.TransChannelId, TranslateType.Cut, _createManager, _authManager.AdminId); } } await _authManager.AddSiteLogAsync(request.SiteId, "批量审核内容"); if (request.IsTranslate) { await _createManager.TriggerContentChangedEventAsync(request.TransSiteId, request.TransChannelId); } else { foreach (var summary in summaries) { await _createManager.CreateContentAsync(request.SiteId, summary.ChannelId, summary.Id); } } foreach (var distinctChannelId in summaries.Select(x => x.ChannelId).Distinct()) { await _createManager.TriggerContentChangedEventAsync(request.SiteId, distinctChannelId); } return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); if (summaries.Count == 1) { var summary = summaries[0]; var content = await _contentRepository.GetAsync(site, summary.ChannelId, summary.Id); if (content != null) { await _authManager.AddSiteLogAsync(request.SiteId, summary.ChannelId, summary.Id, "删除内容", $"栏目:{await _channelRepository.GetChannelNameNavigationAsync(request.SiteId, summary.ChannelId)},内容标题:{content.Title}"); } } else { await _authManager.AddSiteLogAsync(request.SiteId, "批量删除内容", $"栏目:{await _channelRepository.GetChannelNameNavigationAsync(request.SiteId, request.ChannelId)},内容条数:{summaries.Count}"); } await _authManager.AddUserLogAsync("批量删除内容", $"内容条数:{summaries.Count}"); var adminId = _authManager.AdminId; foreach (var distinctChannelId in summaries.Select(x => x.ChannelId).Distinct()) { var distinctChannel = await _channelRepository.GetAsync(distinctChannelId); var contentIdList = summaries.Where(x => x.ChannelId == distinctChannelId) .Select(x => x.Id).ToList(); var contentIds = new List <int>(); foreach (var contentId in contentIdList) { var content = await _contentRepository.GetAsync(site, distinctChannel, contentId); if (content == null || content.UserId != _authManager.UserId) { continue; } contentIds.Add(contentId); } await _contentRepository.TrashContentsAsync(site, distinctChannel, contentIds, adminId); await _createManager.TriggerContentChangedEventAsync(request.SiteId, distinctChannelId); } return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Add([FromBody] AddRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.Edit)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channelContentIds = ContentUtility.ParseSummaries(request.ChannelContentIds); var group = new ContentGroup { GroupName = request.GroupName, SiteId = request.SiteId, Description = request.Description }; if (await _contentGroupRepository.IsExistsAsync(request.SiteId, group.GroupName)) { await _contentGroupRepository.UpdateAsync(group); await _authManager.AddSiteLogAsync(request.SiteId, "修改内容组", $"内容组:{group.GroupName}"); } else { await _contentGroupRepository.InsertAsync(group); await _authManager.AddSiteLogAsync(request.SiteId, "添加内容组", $"内容组:{group.GroupName}"); } foreach (var channelContentId in channelContentIds) { var channel = await _channelRepository.GetAsync(channelContentId.ChannelId); var content = await _contentRepository.GetAsync(site, channel, channelContentId.Id); if (content == null) { continue; } var list = ListUtils.GetStringList(content.GroupNames); if (!list.Contains(group.GroupName)) { list.Add(group.GroupName); } content.GroupNames = list; await _contentRepository.UpdateAsync(site, channel, content); } await _authManager.AddSiteLogAsync(request.SiteId, "批量设置内容组", $"内容组:{group.GroupName}"); return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.Delete)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); if (!request.IsRetainFiles) { foreach (var summary in summaries) { await _createManager.DeleteContentAsync(site, summary.ChannelId, summary.Id); } } if (summaries.Count == 1) { var summary = summaries[0]; var content = await _contentRepository.GetAsync(site, summary.ChannelId, summary.Id); if (content != null) { await _authManager.AddSiteLogAsync(request.SiteId, summary.ChannelId, summary.Id, "删除内容", $"栏目:{await _channelRepository.GetChannelNameNavigationAsync(request.SiteId, summary.ChannelId)},内容标题:{content.Title}"); } } else { await _authManager.AddSiteLogAsync(request.SiteId, "批量删除内容", $"栏目:{await _channelRepository.GetChannelNameNavigationAsync(request.SiteId, request.ChannelId)},内容条数:{summaries.Count}"); } var adminId = _authManager.AdminId; foreach (var distinctChannelId in summaries.Select(x => x.ChannelId).Distinct()) { var distinctChannel = await _channelRepository.GetAsync(distinctChannelId); var contentIdList = summaries.Where(x => x.ChannelId == distinctChannelId) .Select(x => x.Id).ToList(); await _contentRepository.TrashContentsAsync(site, distinctChannel, contentIdList, adminId); await _createManager.TriggerContentChangedEventAsync(request.SiteId, distinctChannelId); } return(new BoolResult { Value = true }); }