|
@@ -43,6 +43,9 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IRepository<Hotspot> _hotspotTypeRepository;
|
|
|
private readonly IRepositoryTextSearch<KnowledgeTs> _repositoryts;
|
|
|
private readonly IRepository<KnowledgeWord> _knowledgeWrodRepository;
|
|
|
+ private readonly IRepository<KnowledgeQuestions> _knowledgeQuestionsRepository;
|
|
|
+ private readonly IRepository<KnowledgeCorrection> _knowledgeCorrectionRepository;
|
|
|
+ private readonly IRepository<KnowledgeCollect> _knowledgeCollectRepository;
|
|
|
|
|
|
|
|
|
public KnowledgeController(
|
|
@@ -58,7 +61,11 @@ namespace Hotline.Api.Controllers
|
|
|
IRepository<KnowledgeType> knowledgeTypeRepository,
|
|
|
IRepository<Hotspot> hotspotTypeRepository,
|
|
|
IRepositoryTextSearch<KnowledgeTs> repositoryts,
|
|
|
- IRepository<KnowledgeWord> knowledgeWrodRepository)
|
|
|
+ IRepository<KnowledgeWord> knowledgeWrodRepository,
|
|
|
+ IRepository<KnowledgeQuestions> knowledgeQuestionsRepository,
|
|
|
+ IRepository<KnowledgeCorrection> knowledgeCorrectionRepository,
|
|
|
+ IRepository<KnowledgeCollect> knowledgeCollectRepository
|
|
|
+ )
|
|
|
{
|
|
|
_knowledgeRepository = knowledgeRepository;
|
|
|
_sessionContext = sessionContext;
|
|
@@ -73,8 +80,9 @@ namespace Hotline.Api.Controllers
|
|
|
_hotspotTypeRepository = hotspotTypeRepository;
|
|
|
_repositoryts = repositoryts;
|
|
|
_knowledgeWrodRepository = knowledgeWrodRepository;
|
|
|
-
|
|
|
-
|
|
|
+ _knowledgeQuestionsRepository = knowledgeQuestionsRepository;
|
|
|
+ _knowledgeCorrectionRepository = knowledgeCorrectionRepository;
|
|
|
+ _knowledgeCollectRepository = knowledgeCollectRepository;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
@@ -678,12 +686,225 @@ namespace Hotline.Api.Controllers
|
|
|
/// <returns></returns>
|
|
|
[Permission(EPermission.KnowledgeWordEntity)]
|
|
|
[HttpGet("knowledge_word/{id}")]
|
|
|
- public async Task<KnowledgeWord> OrderWordEntity(string id)
|
|
|
+ public async Task<KnowledgeWord> WordEntity(string id)
|
|
|
{
|
|
|
return await _knowledgeWrodRepository.Queryable()
|
|
|
.FirstAsync(x => x.Id == id);
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
+ #region 知识纠错
|
|
|
+ /// <summary>
|
|
|
+ /// 新增知识纠错
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dtos"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.AddKnowledgeCorrection)]
|
|
|
+ [HttpPost("knowledge_correction")]
|
|
|
+ public async Task Add([FromBody] KnowledgeCorrectionAddDto dto)
|
|
|
+ {
|
|
|
+ var correction = _mapper.Map<KnowledgeCorrection>(dto);
|
|
|
+ await _knowledgeCorrectionRepository.AddAsync(correction, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 删除知识纠错
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.DeleteKnowledgeCorrection)]
|
|
|
+ [HttpDelete("knowledge_correction")]
|
|
|
+ public async Task Delete([FromBody] KnowledgeCorrectionDeleteDto dto)
|
|
|
+ {
|
|
|
+ await _knowledgeCorrectionRepository.RemoveAsync(x => x.Id == dto.Id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 更新知识纠错
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.UpdateKnowledgeCorrection)]
|
|
|
+ [HttpPut("knowledge_correction")]
|
|
|
+ public async Task Update([FromBody] KnowledgeCorrectionUpdateDto dto)
|
|
|
+ {
|
|
|
+ var correction = await _knowledgeCorrectionRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
+ if (correction is null)
|
|
|
+ throw UserFriendlyException.SameMessage("无效知识纠错");
|
|
|
+ _mapper.Map(dto, correction);
|
|
|
+ await _knowledgeCorrectionRepository.UpdateAsync(correction, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 答复知识纠错
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.UpdateKnowledgeCorrection)]
|
|
|
+ [HttpPut("knowledge_correction/Reply")]
|
|
|
+ public async Task Reply([FromBody] KnowledgeCorrectionUpdateDto dto)
|
|
|
+ {
|
|
|
+ var correction = await _knowledgeCorrectionRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
+ if (correction is null)
|
|
|
+ throw UserFriendlyException.SameMessage("无效知识纠错");
|
|
|
+ _mapper.Map(dto, correction);
|
|
|
+ dto.ReplyTime = DateTime.Now;
|
|
|
+ dto.ReplyUserName =_sessionContext.UserName;
|
|
|
+ await _knowledgeCorrectionRepository.UpdateAsync(correction, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取知识纠错列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.KnowledgeCorrectionList)]
|
|
|
+ [HttpGet("knowledge_correction/list")]
|
|
|
+ public async Task<PagedDto<KnowledgeCorrectionDto>> List([FromQuery] KnowledgeCorrectionListDto dto)
|
|
|
+ {
|
|
|
+ var (total, items) = await _knowledgeCorrectionRepository.Queryable()
|
|
|
+ .Includes(x => x.Knowledge)
|
|
|
+ .Includes(x => x.Knowledge, y => y.KnowledgeType)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.KnowledgeTypeId), x => x.Knowledge.KnowledgeTypeId == dto.KnowledgeTypeId!)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.CreatorName), x => x.CreatorName == dto.CreatorName!)
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<KnowledgeCorrectionDto>(total, _mapper.Map<IReadOnlyList<KnowledgeCorrectionDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取知识库纠错
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.KnowledgeCorrectionEntity)]
|
|
|
+ [HttpGet("knowledge_correction/{id}")]
|
|
|
+ public async Task<KnowledgeCorrection> CorrectionEntity(string id)
|
|
|
+ {
|
|
|
+ return await _knowledgeCorrectionRepository.Queryable()
|
|
|
+ .FirstAsync(x => x.Id == id);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 知识提问
|
|
|
+ /// <summary>
|
|
|
+ /// 新增知识提问
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dtos"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.AddKnowledgeQuestions)]
|
|
|
+ [HttpPost("knowledge_questions")]
|
|
|
+ public async Task Add([FromBody] KnowledgeQuestionsAddDto dto)
|
|
|
+ {
|
|
|
+ var questions = _mapper.Map<KnowledgeQuestions>(dto);
|
|
|
+ await _knowledgeQuestionsRepository.AddAsync(questions, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 删除知识提问
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.DeleteKnowledgeQuestions)]
|
|
|
+ [HttpDelete("knowledge_questions")]
|
|
|
+ public async Task Delete([FromBody] KnowledgeQuestionsDeleteDto dto)
|
|
|
+ {
|
|
|
+ await _knowledgeQuestionsRepository.RemoveAsync(x => x.Id == dto.Id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 更新知识提问
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.UpdateKnowledgeQuestions)]
|
|
|
+ [HttpPut("knowledge_questions")]
|
|
|
+ public async Task Update([FromBody] KnowledgeQuestionsUpdateDto dto)
|
|
|
+ {
|
|
|
+ var questions = await _knowledgeQuestionsRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
+ if (questions is null)
|
|
|
+ throw UserFriendlyException.SameMessage("无效知识提问");
|
|
|
+ _mapper.Map(dto, questions);
|
|
|
+ await _knowledgeQuestionsRepository.UpdateAsync(questions, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 答复知识提问
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.UpdateKnowledgeQuestions)]
|
|
|
+ [HttpPut("knowledge_questions/Reply")]
|
|
|
+ public async Task Reply([FromBody] KnowledgeQuestionsUpdateDto dto)
|
|
|
+ {
|
|
|
+ var correction = await _knowledgeQuestionsRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
+ if (correction is null)
|
|
|
+ throw UserFriendlyException.SameMessage("无效知识提问");
|
|
|
+ _mapper.Map(dto, correction);
|
|
|
+ dto.ReplyTime = DateTime.Now;
|
|
|
+ dto.ReplyUserName = _sessionContext.UserName;
|
|
|
+ await _knowledgeQuestionsRepository.UpdateAsync(correction, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取知识提问列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.KnowledgeQuestionsList)]
|
|
|
+ [HttpGet("knowledge_questions/list")]
|
|
|
+ public async Task<PagedDto<KnowledgeQuestionsDto>> List([FromQuery] KnowledgeQuestionsListDto dto)
|
|
|
+ {
|
|
|
+ var (total, items) = await _knowledgeQuestionsRepository.Queryable()
|
|
|
+ .Includes(x => x.Knowledge)
|
|
|
+ .Includes(x => x.Knowledge, y => y.KnowledgeType)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.KnowledgeTypeId), x => x.Knowledge.KnowledgeTypeId == dto.KnowledgeTypeId!)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.CreatorName), x => x.CreatorName == dto.CreatorName!)
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<KnowledgeQuestionsDto>(total, _mapper.Map<IReadOnlyList<KnowledgeQuestionsDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取知识提问
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.KnowledgeQuestionsEntity)]
|
|
|
+ [HttpGet("knowledge_questions/{id}")]
|
|
|
+ public async Task<KnowledgeQuestions> QuestionsEntity(string id)
|
|
|
+ {
|
|
|
+ return await _knowledgeQuestionsRepository.Queryable()
|
|
|
+ .FirstAsync(x => x.Id == id);
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 知识收藏
|
|
|
+ /// <summary>
|
|
|
+ /// 新增知识收藏
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dtos"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.AddKnowledgeCollect)]
|
|
|
+ [HttpPost("knowledge_collect")]
|
|
|
+ public async Task Add([FromBody] KnowledgeCollectAddDto dto)
|
|
|
+ {
|
|
|
+ var questions = _mapper.Map<KnowledgeCollect>(dto);
|
|
|
+ await _knowledgeCollectRepository.AddAsync(questions, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 删除知识收藏
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.DeleteKnowledgeCollect)]
|
|
|
+ [HttpDelete("knowledge_collect")]
|
|
|
+ public async Task Delete([FromBody] KnowledgeCollectDeleteDto dto)
|
|
|
+ {
|
|
|
+ await _knowledgeCollectRepository.RemoveAsync(x => x.Id == dto.Id);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
}
|
|
|
}
|