|
@@ -39,6 +39,7 @@ using MiniExcelLibs;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
using SqlSugar;
|
|
|
using System.Text;
|
|
|
+using System.Threading;
|
|
|
using XF.Domain.Authentications;
|
|
|
using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Repository;
|
|
@@ -75,6 +76,7 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IRepository<KnowledgeQuestions> _knowledgeQuestionsRepository;
|
|
|
private readonly IRepository<KnowledgeCorrection> _knowledgeCorrectionRepository;
|
|
|
private readonly IRepository<KnowledgeCollect> _knowledgeCollectRepository;
|
|
|
+ private readonly IRepository<KnowledgeRecord> _knowledgeRecordRepository;
|
|
|
private readonly ISystemDomainService _systemDomainService;
|
|
|
private readonly IRepository<KnowledgeComment> _knowledgeCommentRepository;
|
|
|
private readonly ISystemOrganizeRepository _systemOrganizeRepository;
|
|
@@ -104,6 +106,7 @@ namespace Hotline.Api.Controllers
|
|
|
IRepository<KnowledgeQuestions> knowledgeQuestionsRepository,
|
|
|
IRepository<KnowledgeCorrection> knowledgeCorrectionRepository,
|
|
|
IRepository<KnowledgeCollect> knowledgeCollectRepository,
|
|
|
+ IRepository<KnowledgeRecord> knowledgeRecordRepository,
|
|
|
ISystemDomainService systemDomainService,
|
|
|
IRepository<KnowledgeComment> knowledgeCommentRepository,
|
|
|
ISystemOrganizeRepository systemOrganizeRepository,
|
|
@@ -140,6 +143,7 @@ namespace Hotline.Api.Controllers
|
|
|
_knowledgeQuestionsRepository = knowledgeQuestionsRepository;
|
|
|
_knowledgeCorrectionRepository = knowledgeCorrectionRepository;
|
|
|
_knowledgeCollectRepository = knowledgeCollectRepository;
|
|
|
+ _knowledgeRecordRepository = knowledgeRecordRepository;
|
|
|
_systemDomainService = systemDomainService;
|
|
|
_knowledgeCommentRepository = knowledgeCommentRepository;
|
|
|
_systemOrganizeRepository = systemOrganizeRepository;
|
|
@@ -473,7 +477,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpPut("update-and-approve-batch")]
|
|
|
- [LogFilter("知识修改批量")]
|
|
|
+ [LogFilter("知识批量提交")]
|
|
|
public async Task UpdateAndApproveBatch([FromBody] UpdateKnowledgeAndApproveBatchDto dto)
|
|
|
{
|
|
|
foreach (var item in dto.KnowledgeIds)
|
|
@@ -503,6 +507,133 @@ namespace Hotline.Api.Controllers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 知识库-记录
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPut("update-and-record")]
|
|
|
+ [LogFilter("知识修改并且保存修改之前的信息")]
|
|
|
+ public async Task UpdateAndRecord([FromBody] UpdateKnowledgeAndApproveDto dto)
|
|
|
+ {
|
|
|
+ // 知识库记录
|
|
|
+ var knowledge = await _knowledgeRepository.GetAsync(d => d.Id == dto.Id);
|
|
|
+ if (knowledge != null)
|
|
|
+ {
|
|
|
+ var data = _mapper.Map<KnowledgeRecord>(knowledge);
|
|
|
+ data.RecordId = knowledge.Id;
|
|
|
+ await _knowledgeRecordRepository.AddNav(data)
|
|
|
+ .Include(d => d.KnowledgeTypes)
|
|
|
+ .Include(d => d.KnowledgeOrganizes)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+
|
|
|
+ // 知识库修改
|
|
|
+ await _knowledgeDomainService.UpdateKnowledgeAsync(dto, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 知识库-记录
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="Id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("queryRecord/{Id}")]
|
|
|
+ [LogFilter("查询知识库修改记录")]
|
|
|
+ public async Task<IList<KnowledgeDto>> QueryRecord(string Id)
|
|
|
+ {
|
|
|
+ List<KnowledgeDto> knList = new List<KnowledgeDto>();
|
|
|
+
|
|
|
+ var query = await _knowledgeRecordRepository.Queryable()
|
|
|
+ .Includes(x => x.SourceOrganize)
|
|
|
+ .Includes(x => x.KnowledgeTypes)
|
|
|
+ .Includes(x => x.KnowledgeOrganizes)
|
|
|
+ .Includes(x => x.HotspotType)
|
|
|
+ .OrderByDescending(d => d.CreationTime)
|
|
|
+ .FirstAsync(d => d.RecordId == Id, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ if (query != null)
|
|
|
+ {
|
|
|
+ #region 最新修改记录
|
|
|
+
|
|
|
+ //转化
|
|
|
+ var knowledgeInfoDto1 = _mapper.Map<KnowledgeDto>(query);
|
|
|
+
|
|
|
+ if (knowledgeInfoDto1 != null && !string.IsNullOrEmpty(knowledgeInfoDto1.Content))
|
|
|
+ knowledgeInfoDto1.Content = _bulletinApplication.GetSiteUrls(knowledgeInfoDto1.Content);
|
|
|
+
|
|
|
+ //收藏
|
|
|
+ var collect1 = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == Id && x.CreatorId == _sessionContext.UserId);
|
|
|
+ if (knowledgeInfoDto1 != null && collect1 != null)
|
|
|
+ knowledgeInfoDto1.Collect = _mapper.Map<KnowledgeCollectDto>(collect1);
|
|
|
+ //关联知识
|
|
|
+ var knowledges1 = await _knowledgeRepository.Queryable().In(x => x.Id, query.Knowledges).Where(x => x.Status == EKnowledgeStatus.OnShelf && ((x.ExpiredTime != null && x.ExpiredTime >= DateTime.Now) || x.ExpiredTime == null)).ToListAsync();
|
|
|
+ if (knowledgeInfoDto1 != null && knowledges1.Any())
|
|
|
+ knowledgeInfoDto1.KnowledgeDtos = _mapper.Map<List<KnowledgeDto>>(knowledges1);
|
|
|
+ //关键词
|
|
|
+ var knowledgeWords1 = await _knowledgeWrodRepository.Queryable().In(x => x.Id, query.Keywords).ToListAsync();
|
|
|
+ if (knowledgeInfoDto1 != null && knowledgeWords1.Any())
|
|
|
+ knowledgeInfoDto1.KeywordsDto = _mapper.Map<List<KnowledgeWordDto>>(knowledgeWords1);
|
|
|
+
|
|
|
+ if (knowledgeInfoDto1 != null && knowledgeInfoDto1.FileJson != null && knowledgeInfoDto1.FileJson.Any())
|
|
|
+ {
|
|
|
+ var ids = knowledgeInfoDto1.FileJson.Select(x => x.Id).ToList();
|
|
|
+ knowledgeInfoDto1.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (knowledgeInfoDto1 != null)
|
|
|
+ {
|
|
|
+ knList.Add(knowledgeInfoDto1);
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+
|
|
|
+ var knowledge = await _knowledgeRepository.Queryable()
|
|
|
+ .Includes(x => x.SourceOrganize)
|
|
|
+ .Includes(x => x.KnowledgeTypes)
|
|
|
+ .Includes(x => x.KnowledgeOrganizes)
|
|
|
+ .Includes(x => x.HotspotType)
|
|
|
+ .FirstAsync(p => p.Id == Id, HttpContext.RequestAborted);
|
|
|
+ if (knowledge != null)
|
|
|
+ {
|
|
|
+ #region 当前知识库
|
|
|
+
|
|
|
+ //转化
|
|
|
+ var knowledgeShowInfoDto = _mapper.Map<KnowledgeDto>(knowledge);
|
|
|
+
|
|
|
+ if (knowledgeShowInfoDto != null && !string.IsNullOrEmpty(knowledgeShowInfoDto.Content))
|
|
|
+ knowledgeShowInfoDto.Content = _bulletinApplication.GetSiteUrls(knowledgeShowInfoDto.Content);
|
|
|
+
|
|
|
+ //收藏
|
|
|
+ var collect = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == Id && x.CreatorId == _sessionContext.UserId);
|
|
|
+ if (knowledgeShowInfoDto != null && collect != null)
|
|
|
+ knowledgeShowInfoDto.Collect = _mapper.Map<KnowledgeCollectDto>(collect);
|
|
|
+ //关联知识
|
|
|
+ var knowledges = await _knowledgeRepository.Queryable().In(x => x.Id, knowledge.Knowledges).Where(x => x.Status == EKnowledgeStatus.OnShelf && ((x.ExpiredTime != null && x.ExpiredTime >= DateTime.Now) || x.ExpiredTime == null)).ToListAsync();
|
|
|
+ if (knowledgeShowInfoDto != null && knowledges.Any())
|
|
|
+ knowledgeShowInfoDto.KnowledgeDtos = _mapper.Map<List<KnowledgeDto>>(knowledges);
|
|
|
+ //关键词
|
|
|
+ var knowledgeWords = await _knowledgeWrodRepository.Queryable().In(x => x.Id, knowledge.Keywords).ToListAsync();
|
|
|
+ if (knowledgeShowInfoDto != null && knowledgeWords.Any())
|
|
|
+ knowledgeShowInfoDto.KeywordsDto = _mapper.Map<List<KnowledgeWordDto>>(knowledgeWords);
|
|
|
+
|
|
|
+ if (knowledgeShowInfoDto != null && knowledgeShowInfoDto.FileJson != null && knowledgeShowInfoDto.FileJson.Any())
|
|
|
+ {
|
|
|
+ var ids = knowledgeShowInfoDto.FileJson.Select(x => x.Id).ToList();
|
|
|
+ knowledgeShowInfoDto.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (knowledgeShowInfoDto != null)
|
|
|
+ {
|
|
|
+ knList.Add(knowledgeShowInfoDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+
|
|
|
+ return _mapper.Map<IList<KnowledgeDto>>(knList);
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 批量更新公开状态(new)
|
|
|
/// </summary>
|