|
@@ -6,6 +6,7 @@ using Hotline.KnowledgeBase.Notifies;
|
|
using Hotline.Permissions;
|
|
using Hotline.Permissions;
|
|
using Hotline.Quality;
|
|
using Hotline.Quality;
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
|
|
+using Hotline.Repository.SqlSugar.System;
|
|
using Hotline.Repository.SqlSugar.Ts;
|
|
using Hotline.Repository.SqlSugar.Ts;
|
|
using Hotline.Settings;
|
|
using Hotline.Settings;
|
|
using Hotline.Settings.Hotspots;
|
|
using Hotline.Settings.Hotspots;
|
|
@@ -51,6 +52,7 @@ namespace Hotline.Api.Controllers
|
|
private readonly IRepository<KnowledgeCollect> _knowledgeCollectRepository;
|
|
private readonly IRepository<KnowledgeCollect> _knowledgeCollectRepository;
|
|
private readonly ISystemDomainService _systemDomainService;
|
|
private readonly ISystemDomainService _systemDomainService;
|
|
private readonly IRepository<KnowledgeComment> _knowledgeCommentRepository;
|
|
private readonly IRepository<KnowledgeComment> _knowledgeCommentRepository;
|
|
|
|
+ private readonly ISystemOrganizeRepository _systemOrganizeRepository;
|
|
|
|
|
|
|
|
|
|
public KnowledgeController(
|
|
public KnowledgeController(
|
|
@@ -71,7 +73,8 @@ namespace Hotline.Api.Controllers
|
|
IRepository<KnowledgeCorrection> knowledgeCorrectionRepository,
|
|
IRepository<KnowledgeCorrection> knowledgeCorrectionRepository,
|
|
IRepository<KnowledgeCollect> knowledgeCollectRepository,
|
|
IRepository<KnowledgeCollect> knowledgeCollectRepository,
|
|
ISystemDomainService systemDomainService,
|
|
ISystemDomainService systemDomainService,
|
|
- IRepository<KnowledgeComment> knowledgeCommentRepository
|
|
|
|
|
|
+ IRepository<KnowledgeComment> knowledgeCommentRepository,
|
|
|
|
+ ISystemOrganizeRepository systemOrganizeRepository
|
|
)
|
|
)
|
|
{
|
|
{
|
|
_knowledgeRepository = knowledgeRepository;
|
|
_knowledgeRepository = knowledgeRepository;
|
|
@@ -92,6 +95,7 @@ namespace Hotline.Api.Controllers
|
|
_knowledgeCollectRepository = knowledgeCollectRepository;
|
|
_knowledgeCollectRepository = knowledgeCollectRepository;
|
|
_systemDomainService = systemDomainService;
|
|
_systemDomainService = systemDomainService;
|
|
_knowledgeCommentRepository = knowledgeCommentRepository;
|
|
_knowledgeCommentRepository = knowledgeCommentRepository;
|
|
|
|
+ _systemOrganizeRepository = systemOrganizeRepository;
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
@@ -115,7 +119,7 @@ namespace Hotline.Api.Controllers
|
|
|
|
|
|
kn.Status = EKnowledgeStatus.Drafts;
|
|
kn.Status = EKnowledgeStatus.Drafts;
|
|
var id = await _knowledgeRepository.AddAsync(kn, HttpContext.RequestAborted);
|
|
var id = await _knowledgeRepository.AddAsync(kn, HttpContext.RequestAborted);
|
|
- if (dto.Workflow != null && !string.IsNullOrEmpty(id))
|
|
|
|
|
|
+ if (dto.Workflow != null && !string.IsNullOrEmpty(id))
|
|
{
|
|
{
|
|
var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
|
|
var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
|
|
startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeAdd;
|
|
startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeAdd;
|
|
@@ -177,9 +181,12 @@ namespace Hotline.Api.Controllers
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <param name="title"></param>
|
|
/// <param name="title"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
- [HttpGet("{Title}")]
|
|
|
|
- public async Task<bool> KnowledgeTitle(string Title) {
|
|
|
|
- var count = await _knowledgeRepository.Queryable().Where(x => x.Title == Title).CountAsync();
|
|
|
|
|
|
+ [HttpGet("title")]
|
|
|
|
+ public async Task<bool> KnowledgeTitle([FromQuery] KnowledgeTitleDto dto)
|
|
|
|
+ {
|
|
|
|
+ var count = await _knowledgeRepository.Queryable()
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Id), x => x.Id != dto.Id)
|
|
|
|
+ .Where(x => x.Title == dto.Title).CountAsync();
|
|
return count > 0;
|
|
return count > 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -222,7 +229,8 @@ namespace Hotline.Api.Controllers
|
|
{
|
|
{
|
|
var delete = _mapper.Map<Knowledge>(dto.Data);
|
|
var delete = _mapper.Map<Knowledge>(dto.Data);
|
|
var knowledge = await _knowledgeRepository.GetAsync(delete.Id, HttpContext.RequestAborted);
|
|
var knowledge = await _knowledgeRepository.GetAsync(delete.Id, HttpContext.RequestAborted);
|
|
- if (knowledge == null) return;
|
|
|
|
|
|
+ if (knowledge == null)
|
|
|
|
+ throw UserFriendlyException.SameMessage("无效知识库数据");
|
|
if (knowledge.Status == EKnowledgeStatus.OnShelf || knowledge.Status == EKnowledgeStatus.Auditing)
|
|
if (knowledge.Status == EKnowledgeStatus.OnShelf || knowledge.Status == EKnowledgeStatus.Auditing)
|
|
throw UserFriendlyException.SameMessage("知识库数据不可删除");
|
|
throw UserFriendlyException.SameMessage("知识库数据不可删除");
|
|
//await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
|
|
//await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
|
|
@@ -234,6 +242,22 @@ namespace Hotline.Api.Controllers
|
|
await StartFlow(delete.Id, WorkflowModuleConsts.KnowledgeDelete, EKnowledgeApplyType.Delete, startDto);
|
|
await StartFlow(delete.Id, WorkflowModuleConsts.KnowledgeDelete, EKnowledgeApplyType.Delete, startDto);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 增加搜索量
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="dto"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [HttpPost("search_num")]
|
|
|
|
+ public async Task SearchNum([FromBody] KnowledgeSearchNumDto dto)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ var knowledge = await _knowledgeRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
|
+ if (knowledge == null)
|
|
|
|
+ throw UserFriendlyException.SameMessage("无效知识库数据");
|
|
|
|
+ knowledge.SearchNum++;
|
|
|
|
+ await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
|
|
|
|
+ }
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 知识库-知识修改-查询详情
|
|
/// 知识库-知识修改-查询详情
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -280,10 +304,10 @@ namespace Hotline.Api.Controllers
|
|
var knowledgeShowInfoDto = _mapper.Map<KnowledgeInfoDto>(knowledge);
|
|
var knowledgeShowInfoDto = _mapper.Map<KnowledgeInfoDto>(knowledge);
|
|
|
|
|
|
var type = await _knowledgeTypeRepository.GetAsync(knowledge.KnowledgeTypeId, HttpContext.RequestAborted);
|
|
var type = await _knowledgeTypeRepository.GetAsync(knowledge.KnowledgeTypeId, HttpContext.RequestAborted);
|
|
- if (type != null)
|
|
|
|
|
|
+ if (type != null)
|
|
{
|
|
{
|
|
knowledgeShowInfoDto.KnowledgeTypeName = type.SpliceName;
|
|
knowledgeShowInfoDto.KnowledgeTypeName = type.SpliceName;
|
|
- knowledgeShowInfoDto.KnowledgeType =_mapper.Map<KnowledgeTypeDto>(type);
|
|
|
|
|
|
+ knowledgeShowInfoDto.KnowledgeType = _mapper.Map<KnowledgeTypeDto>(type);
|
|
}
|
|
}
|
|
var hot = await _hotspotTypeRepository.GetAsync(knowledge.HotspotId, HttpContext.RequestAborted);
|
|
var hot = await _hotspotTypeRepository.GetAsync(knowledge.HotspotId, HttpContext.RequestAborted);
|
|
if (hot != null)
|
|
if (hot != null)
|
|
@@ -293,11 +317,11 @@ namespace Hotline.Api.Controllers
|
|
if (collect != null)
|
|
if (collect != null)
|
|
knowledgeShowInfoDto.Collect = _mapper.Map<KnowledgeCollectDto>(collect);
|
|
knowledgeShowInfoDto.Collect = _mapper.Map<KnowledgeCollectDto>(collect);
|
|
//关联知识
|
|
//关联知识
|
|
- var knowledges = await _knowledgeRepository.Queryable().In(x=>x.Id,knowledge.Knowledges).ToListAsync();
|
|
|
|
|
|
+ var knowledges = await _knowledgeRepository.Queryable().In(x => x.Id, knowledge.Knowledges).ToListAsync();
|
|
if (knowledges.Any())
|
|
if (knowledges.Any())
|
|
knowledgeShowInfoDto.KnowledgeDtos = _mapper.Map<List<KnowledgeDto>>(knowledges);
|
|
knowledgeShowInfoDto.KnowledgeDtos = _mapper.Map<List<KnowledgeDto>>(knowledges);
|
|
//关键词
|
|
//关键词
|
|
- var knowledgeWords= await _knowledgeWrodRepository.Queryable().In(x => x.Id, knowledge.Keywords).ToListAsync();
|
|
|
|
|
|
+ var knowledgeWords = await _knowledgeWrodRepository.Queryable().In(x => x.Id, knowledge.Keywords).ToListAsync();
|
|
if (knowledgeWords.Any())
|
|
if (knowledgeWords.Any())
|
|
knowledgeShowInfoDto.KeywordsDto = _mapper.Map<List<KnowledgeWordDto>>(knowledgeWords);
|
|
knowledgeShowInfoDto.KeywordsDto = _mapper.Map<List<KnowledgeWordDto>>(knowledgeWords);
|
|
if (IsAddPv == true)
|
|
if (IsAddPv == true)
|
|
@@ -462,7 +486,7 @@ namespace Hotline.Api.Controllers
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
sugar = sugar.OrderByDescending(p => p.PageView);
|
|
sugar = sugar.OrderByDescending(p => p.PageView);
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
var (total, temp) = await sugar.ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
var (total, temp) = await sugar.ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
return new PagedDto<KnowledgeRetrievalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(temp));
|
|
return new PagedDto<KnowledgeRetrievalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(temp));
|
|
@@ -571,31 +595,21 @@ namespace Hotline.Api.Controllers
|
|
[HttpGet("knowpopscreen")]
|
|
[HttpGet("knowpopscreen")]
|
|
public async Task<PagedDto<KnowledgeRetrievalDataDto>> KnowPopScreen([FromQuery] KnowledgePopScreenPagedListDto pagedDto)
|
|
public async Task<PagedDto<KnowledgeRetrievalDataDto>> KnowPopScreen([FromQuery] KnowledgePopScreenPagedListDto pagedDto)
|
|
{
|
|
{
|
|
- RefAsync<int> total = 0;
|
|
|
|
- var temp = await _knowledgeRepository
|
|
|
|
- .Queryable()
|
|
|
|
- .Select(o => new
|
|
|
|
- {
|
|
|
|
- index = SqlFunc.RowNumber($"{o.Version} desc ", $"{o.Code}"),
|
|
|
|
- o.Id,
|
|
|
|
- o.Code,
|
|
|
|
- o.Title,
|
|
|
|
- o.Summary,
|
|
|
|
- o.Content,
|
|
|
|
- o.PageView,
|
|
|
|
- o.Keywords,
|
|
|
|
- o.HotspotId,
|
|
|
|
- o.Status
|
|
|
|
- })
|
|
|
|
- //将结果合并成一个表
|
|
|
|
- .MergeTable()
|
|
|
|
- //取第一条数据
|
|
|
|
- .Where(d => d.index == 1 && d.Status == EKnowledgeStatus.OnShelf)
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), p => p.Title.Contains(pagedDto.Keyword) || p.Keywords.Contains(pagedDto.Keyword))
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), p => p.HotspotId == pagedDto.HotspotId)
|
|
|
|
- .OrderByDescending(p => p.PageView)
|
|
|
|
- .ToPageListAsync(pagedDto.PageIndex, pagedDto.PageSize, total);
|
|
|
|
-
|
|
|
|
|
|
+ var orgid = string.Empty;
|
|
|
|
+ if (pagedDto.RetrievalType == EKnowledgeRetrievalType.Org && !string.IsNullOrEmpty(pagedDto.Keyword))
|
|
|
|
+ {
|
|
|
|
+ var organize = await _systemOrganizeRepository.GetAsync(x => x.Name == pagedDto.Keyword);
|
|
|
|
+ orgid = organize?.Id;
|
|
|
|
+ }
|
|
|
|
+ var (total, temp) = await _knowledgeRepository.Queryable()
|
|
|
|
+ .Includes(x=>x.SourceOrganize)
|
|
|
|
+ .Where(d => d.Status == EKnowledgeStatus.OnShelf)
|
|
|
|
+ .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Title && !string.IsNullOrEmpty(pagedDto.Keyword), d => d.Title.Contains(pagedDto.Keyword!))
|
|
|
|
+ .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Content && !string.IsNullOrEmpty(pagedDto.Keyword), d => d.Content.Contains(pagedDto.Keyword!))
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(orgid) && pagedDto.RetrievalType == EKnowledgeRetrievalType.Org, x=>x.CreatorOrgId.EndsWith(orgid!))
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), p => p.HotspotId == pagedDto.HotspotId)
|
|
|
|
+ .OrderByDescending(p => p.CreationTime)
|
|
|
|
+ .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
return new PagedDto<KnowledgeRetrievalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(temp));
|
|
return new PagedDto<KnowledgeRetrievalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(temp));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -878,7 +892,7 @@ namespace Hotline.Api.Controllers
|
|
public async Task<KnowledgeCorrection> CorrectionEntity(string id)
|
|
public async Task<KnowledgeCorrection> CorrectionEntity(string id)
|
|
{
|
|
{
|
|
return await _knowledgeCorrectionRepository.Queryable()
|
|
return await _knowledgeCorrectionRepository.Queryable()
|
|
- .Includes(x=>x.Knowledge)
|
|
|
|
|
|
+ .Includes(x => x.Knowledge)
|
|
.FirstAsync(x => x.Id == id);
|
|
.FirstAsync(x => x.Id == id);
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
@@ -973,7 +987,7 @@ namespace Hotline.Api.Controllers
|
|
public async Task<KnowledgeQuestions> QuestionsEntity(string id)
|
|
public async Task<KnowledgeQuestions> QuestionsEntity(string id)
|
|
{
|
|
{
|
|
return await _knowledgeQuestionsRepository.Queryable()
|
|
return await _knowledgeQuestionsRepository.Queryable()
|
|
- .Includes(x=>x.Knowledge)
|
|
|
|
|
|
+ .Includes(x => x.Knowledge)
|
|
.FirstAsync(x => x.Id == id);
|
|
.FirstAsync(x => x.Id == id);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -995,7 +1009,8 @@ namespace Hotline.Api.Controllers
|
|
collect.Collect = dto.Collect;
|
|
collect.Collect = dto.Collect;
|
|
await _knowledgeCollectRepository.UpdateAsync(collect, HttpContext.RequestAborted);
|
|
await _knowledgeCollectRepository.UpdateAsync(collect, HttpContext.RequestAborted);
|
|
}
|
|
}
|
|
- else {
|
|
|
|
|
|
+ else
|
|
|
|
+ {
|
|
var collectNew = _mapper.Map<KnowledgeCollect>(dto);
|
|
var collectNew = _mapper.Map<KnowledgeCollect>(dto);
|
|
await _knowledgeCollectRepository.AddAsync(collectNew, HttpContext.RequestAborted);
|
|
await _knowledgeCollectRepository.AddAsync(collectNew, HttpContext.RequestAborted);
|
|
}
|
|
}
|
|
@@ -1031,7 +1046,7 @@ namespace Hotline.Api.Controllers
|
|
var knowledge = await _knowledgeRepository.GetAsync(x => x.Id == dto.KnowledgeId);
|
|
var knowledge = await _knowledgeRepository.GetAsync(x => x.Id == dto.KnowledgeId);
|
|
if (knowledge != null)
|
|
if (knowledge != null)
|
|
{
|
|
{
|
|
- knowledge.Score = decimal.Round(score.Value,1);
|
|
|
|
|
|
+ knowledge.Score = decimal.Round(score.Value, 1);
|
|
await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
|
|
await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1039,7 +1054,12 @@ namespace Hotline.Api.Controllers
|
|
|
|
|
|
#region 知识评论
|
|
#region 知识评论
|
|
|
|
|
|
- //[Permission(EPermission.AddKnowledgeCollect)]
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 新增知识评论
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="dto"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [Permission(EPermission.AddKnowledgeComment)]
|
|
[HttpPost("knowledge_comment")]
|
|
[HttpPost("knowledge_comment")]
|
|
public async Task Add([FromBody] KnowledgeCommentAddDto dto)
|
|
public async Task Add([FromBody] KnowledgeCommentAddDto dto)
|
|
{
|
|
{
|
|
@@ -1048,7 +1068,7 @@ namespace Hotline.Api.Controllers
|
|
if (!string.IsNullOrEmpty(dto.ReplyId))
|
|
if (!string.IsNullOrEmpty(dto.ReplyId))
|
|
{
|
|
{
|
|
var comment = await _knowledgeCommentRepository.GetAsync(dto.ReplyId);
|
|
var comment = await _knowledgeCommentRepository.GetAsync(dto.ReplyId);
|
|
- if (comment != null)
|
|
|
|
|
|
+ if (comment != null)
|
|
{
|
|
{
|
|
comment.ReplyNum++;
|
|
comment.ReplyNum++;
|
|
await _knowledgeCommentRepository.UpdateAsync(comment, HttpContext.RequestAborted);
|
|
await _knowledgeCommentRepository.UpdateAsync(comment, HttpContext.RequestAborted);
|
|
@@ -1056,16 +1076,30 @@ namespace Hotline.Api.Controllers
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- //[Permission(EPermission.DeleteQualityItem)]
|
|
|
|
- [HttpDelete("itemBatch")]
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 删除知识评论
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="dto"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [Permission(EPermission.DeleteKnowledgeComment)]
|
|
|
|
+ [HttpDelete("knowledge_comment")]
|
|
public async Task Delete([FromBody] KnowledgeCommentDeleteDto dto)
|
|
public async Task Delete([FromBody] KnowledgeCommentDeleteDto dto)
|
|
{
|
|
{
|
|
|
|
+ var comment = await _knowledgeCommentRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
|
+ if (comment is null)
|
|
|
|
+ throw UserFriendlyException.SameMessage("无效评论");
|
|
|
|
+ if (comment.CreatorId != _sessionContext.UserId)
|
|
|
|
+ throw UserFriendlyException.SameMessage("只有评论者可以删除当前评论");
|
|
await _knowledgeCommentRepository.RemoveAsync(x => x.Id == dto.Id);
|
|
await _knowledgeCommentRepository.RemoveAsync(x => x.Id == dto.Id);
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
- //[Permission(EPermission.UpdateQualityItem)]
|
|
|
|
- [HttpPut("item")]
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 修改知识评论
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="dto"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [Permission(EPermission.UpdateKnowledgeComment)]
|
|
|
|
+ [HttpPut("knowledge_comment")]
|
|
public async Task Update([FromBody] KnowledgeCommentUpdateDto dto)
|
|
public async Task Update([FromBody] KnowledgeCommentUpdateDto dto)
|
|
{
|
|
{
|
|
var comment = await _knowledgeCommentRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
var comment = await _knowledgeCommentRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
@@ -1075,8 +1109,13 @@ namespace Hotline.Api.Controllers
|
|
await _knowledgeCommentRepository.UpdateAsync(comment, HttpContext.RequestAborted);
|
|
await _knowledgeCommentRepository.UpdateAsync(comment, HttpContext.RequestAborted);
|
|
}
|
|
}
|
|
|
|
|
|
- //[Permission(EPermission.QualityItemList)]
|
|
|
|
- [HttpGet("item/list")]
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 知识评论列表
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="dto"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [Permission(EPermission.KnowledgeCommentList)]
|
|
|
|
+ [HttpGet("knowledge_comment/list")]
|
|
public async Task<List<KnowledgeCommentDto>> List([FromQuery] KnowledgeCommentListDto dto)
|
|
public async Task<List<KnowledgeCommentDto>> List([FromQuery] KnowledgeCommentListDto dto)
|
|
{
|
|
{
|
|
var comments = await _knowledgeCommentRepository.Queryable()
|
|
var comments = await _knowledgeCommentRepository.Queryable()
|