|
@@ -3,8 +3,8 @@ using Hotline.Application.Knowledge;
|
|
|
using Hotline.FlowEngine.WorkflowModules;
|
|
|
using Hotline.KnowledgeBase;
|
|
|
using Hotline.KnowledgeBase.Notifies;
|
|
|
-using Hotline.Orders;
|
|
|
using Hotline.Permissions;
|
|
|
+using Hotline.Quality;
|
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
|
using Hotline.Repository.SqlSugar.Ts;
|
|
|
using Hotline.Settings;
|
|
@@ -13,11 +13,14 @@ using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.FlowEngine;
|
|
|
using Hotline.Share.Dtos.Knowledge;
|
|
|
using Hotline.Share.Dtos.Order;
|
|
|
+using Hotline.Share.Dtos.Quality;
|
|
|
using Hotline.Share.Enums.KnowledgeBase;
|
|
|
using Hotline.Users;
|
|
|
using MapsterMapper;
|
|
|
using MediatR;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
+using Org.BouncyCastle.Utilities;
|
|
|
+using Polly.Caching;
|
|
|
using SqlSugar;
|
|
|
using XF.Domain.Authentications;
|
|
|
using XF.Domain.Exceptions;
|
|
@@ -47,6 +50,7 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IRepository<KnowledgeCorrection> _knowledgeCorrectionRepository;
|
|
|
private readonly IRepository<KnowledgeCollect> _knowledgeCollectRepository;
|
|
|
private readonly ISystemDomainService _systemDomainService;
|
|
|
+ private readonly IRepository<KnowledgeComment> _knowledgeCommentRepository;
|
|
|
|
|
|
|
|
|
public KnowledgeController(
|
|
@@ -66,7 +70,8 @@ namespace Hotline.Api.Controllers
|
|
|
IRepository<KnowledgeQuestions> knowledgeQuestionsRepository,
|
|
|
IRepository<KnowledgeCorrection> knowledgeCorrectionRepository,
|
|
|
IRepository<KnowledgeCollect> knowledgeCollectRepository,
|
|
|
- ISystemDomainService systemDomainService
|
|
|
+ ISystemDomainService systemDomainService,
|
|
|
+ IRepository<KnowledgeComment> knowledgeCommentRepository
|
|
|
)
|
|
|
{
|
|
|
_knowledgeRepository = knowledgeRepository;
|
|
@@ -86,6 +91,7 @@ namespace Hotline.Api.Controllers
|
|
|
_knowledgeCorrectionRepository = knowledgeCorrectionRepository;
|
|
|
_knowledgeCollectRepository = knowledgeCollectRepository;
|
|
|
_systemDomainService = systemDomainService;
|
|
|
+ _knowledgeCommentRepository = knowledgeCommentRepository;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
@@ -171,7 +177,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <param name="title"></param>
|
|
|
/// <returns></returns>
|
|
|
- [HttpGet("/{Title}")]
|
|
|
+ [HttpGet("{Title}")]
|
|
|
public async Task<bool> KnowledgeTitle(string Title) {
|
|
|
var count = await _knowledgeRepository.Queryable().Where(x => x.Title == Title).CountAsync();
|
|
|
return count > 0;
|
|
@@ -1030,5 +1036,57 @@ namespace Hotline.Api.Controllers
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
+
|
|
|
+ #region 知识评论
|
|
|
+
|
|
|
+ //[Permission(EPermission.AddKnowledgeCollect)]
|
|
|
+ [HttpPost("knowledge_comment")]
|
|
|
+ public async Task Add([FromBody] KnowledgeCommentAddDto dto)
|
|
|
+ {
|
|
|
+ var model = _mapper.Map<KnowledgeComment>(dto);
|
|
|
+ await _knowledgeCommentRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ if (!string.IsNullOrEmpty(dto.ReplyId))
|
|
|
+ {
|
|
|
+ var comment = await _knowledgeCommentRepository.GetAsync(dto.ReplyId);
|
|
|
+ if (comment != null)
|
|
|
+ {
|
|
|
+ comment.ReplyNum++;
|
|
|
+ await _knowledgeCommentRepository.UpdateAsync(comment, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //[Permission(EPermission.DeleteQualityItem)]
|
|
|
+ [HttpDelete("itemBatch")]
|
|
|
+ public async Task Delete([FromBody] KnowledgeCommentDeleteDto dto)
|
|
|
+ {
|
|
|
+ await _knowledgeCommentRepository.RemoveAsync(x => x.Id == dto.Id);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //[Permission(EPermission.UpdateQualityItem)]
|
|
|
+ [HttpPut("item")]
|
|
|
+ public async Task Update([FromBody] KnowledgeCommentUpdateDto dto)
|
|
|
+ {
|
|
|
+ var comment = await _knowledgeCommentRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
+ if (comment is null)
|
|
|
+ throw UserFriendlyException.SameMessage("无效评论");
|
|
|
+ _mapper.Map(dto, comment);
|
|
|
+ await _knowledgeCommentRepository.UpdateAsync(comment, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ //[Permission(EPermission.QualityItemList)]
|
|
|
+ [HttpGet("item/list")]
|
|
|
+ public async Task<List<KnowledgeCommentDto>> List([FromQuery] KnowledgeCommentListDto dto)
|
|
|
+ {
|
|
|
+ var comments = await _knowledgeCommentRepository.Queryable()
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.KnowledgeId), x => x.KnowledgeId == dto.KnowledgeId)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ReplyId), x => x.ReplyId == dto.ReplyId)
|
|
|
+ .WhereIF(dto.All.HasValue && dto.All == false, x => x.CreatorId == _sessionContext.UserId)
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .ToListAsync();
|
|
|
+ return new List<KnowledgeCommentDto>(_mapper.Map<IReadOnlyList<KnowledgeCommentDto>>(comments));
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
}
|
|
|
}
|