田爽 1 year ago
parent
commit
6b9bb56e96

+ 28 - 16
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -277,7 +277,9 @@ namespace Hotline.Api.Controllers
 			var collect = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == Id && x.CreatorId == _sessionContext.UserId);
 			if (collect != null)
 				knowledgeShowInfoDto.Collect = _mapper.Map<KnowledgeCollectDto>(collect);
-
+			var knowledges = await _knowledgeRepository.Queryable().In(x=>x.Id,knowledge.Knowledges).ToListAsync();
+			if (knowledges.Any())
+				knowledgeShowInfoDto.Knowledges = _mapper.Map<List<KnowledgeDto>>(knowledges);
 			if (IsAddPv == true)
 				_mediator.Publish(new GetKnowledgeInfoNotify(knowledge));
 			return knowledgeShowInfoDto;
@@ -362,13 +364,18 @@ namespace Hotline.Api.Controllers
 		[HttpGet]
 		public async Task<PagedDto<KnowledgeDataDto>> GetKnowList([FromQuery] KnowPagedListDto pagedDto)
 		{
-			var type = new KnowledgeType();
-			var hotspot = new Hotspot();
-			var organize = new SystemOrganize();
+			var typeSpliceName = string.Empty;
+			var hotspotHotSpotFullName = string.Empty;
 			if (!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId))
-				type = await _knowledgeTypeRepository.GetAsync(x => x.Id == pagedDto.KnowledgeTypeId);
+			{
+				var type = await _knowledgeTypeRepository.GetAsync(x => x.Id == pagedDto.KnowledgeTypeId);
+				typeSpliceName = type?.SpliceName;
+			}
 			if (!string.IsNullOrEmpty(pagedDto.HotspotId))
-				hotspot = await _hotspotTypeRepository.GetAsync(x => x.Id == pagedDto.HotspotId);
+			{
+				var hotspot = await _hotspotTypeRepository.GetAsync(x => x.Id == pagedDto.HotspotId);
+				hotspotHotSpotFullName = hotspot?.HotSpotFullName;
+			}
 			var (total, temp) = await _knowledgeRepository.Queryable()
 				.Includes(x => x.User)
 				.Includes(x => x.SystemOrganize)
@@ -379,8 +386,8 @@ namespace Hotline.Api.Controllers
 				.WhereIF(pagedDto.Status.HasValue, x => x.Status == pagedDto.Status)
 				.WhereIF(pagedDto.IsPublic.HasValue, x => x.IsPublic == pagedDto.IsPublic)
 				.WhereIF(!string.IsNullOrEmpty(pagedDto.Summary), x => x.Summary != null && x.Summary.Contains(pagedDto.Summary!))
-				.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), x => type != null && x.KnowledgeType.SpliceName.EndsWith(type.SpliceName))
-				.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), x => hotspot != null && x.HotspotType.HotSpotFullName.EndsWith(hotspot.HotSpotFullName))
+				.WhereIF(!string.IsNullOrEmpty(typeSpliceName), x => x.KnowledgeType.SpliceName.EndsWith(typeSpliceName!))
+				.WhereIF(!string.IsNullOrEmpty(hotspotHotSpotFullName), x => x.HotspotType.HotSpotFullName.EndsWith(hotspotHotSpotFullName!))
 				.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgId), x => x.HotspotType.CreatorId != null && x.HotspotType.CreatorId.EndsWith(pagedDto.CreateOrgId!))
 				.OrderByDescending(d => d.CreationTime)
 				//转分页数据
@@ -398,13 +405,18 @@ namespace Hotline.Api.Controllers
 		[HttpGet("knowretrieval")]
 		public async Task<PagedDto<KnowledgeRetrievalDataDto>> KnowRetrieval([FromQuery] KnowledgeRetrievalPagedListDto pagedDto)
 		{
-			var type = new KnowledgeType();
-			var hotspot = new Hotspot();
-			var organize = new SystemOrganize();
+			var typeSpliceName = string.Empty;
+			var hotspotHotSpotFullName = string.Empty;
 			if (!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId))
-				type = await _knowledgeTypeRepository.GetAsync(x => x.Id == pagedDto.KnowledgeTypeId);
+			{
+				var type = await _knowledgeTypeRepository.GetAsync(x => x.Id == pagedDto.KnowledgeTypeId);
+				typeSpliceName = type?.SpliceName;
+			}
 			if (!string.IsNullOrEmpty(pagedDto.HotspotId))
-				hotspot = await _hotspotTypeRepository.GetAsync(x => x.Id == pagedDto.HotspotId);
+			{
+				var hotspot = await _hotspotTypeRepository.GetAsync(x => x.Id == pagedDto.HotspotId);
+				hotspotHotSpotFullName = hotspot?.HotSpotFullName;
+			}
 			var sugar = _knowledgeRepository
 				.Queryable()
 				.Includes(x => x.User)
@@ -415,9 +427,9 @@ namespace Hotline.Api.Controllers
 				.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.All && !string.IsNullOrEmpty(pagedDto.Keyword), d => d.Title.Contains(pagedDto.Keyword!) || d.Content.Contains(pagedDto.Keyword!))// || d.Additions.Contains(pagedDto.Keyword)
 				.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(pagedDto.RetrievalType == EKnowledgeRetrievalType.Summary && !string.IsNullOrEmpty(pagedDto.Keyword), d => d.Summary.Contains(pagedDto.Keyword!))
-				.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), x => type != null && x.KnowledgeType.SpliceName.EndsWith(type.SpliceName))
-				.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), x => hotspot != null && x.HotspotType.HotSpotFullName.EndsWith(hotspot.HotSpotFullName))
+				.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Summary && !string.IsNullOrEmpty(pagedDto.Keyword), d => d.Summary != null && d.Summary.Contains(pagedDto.Keyword!))
+				.WhereIF(!string.IsNullOrEmpty(typeSpliceName), x => x.KnowledgeType.SpliceName.EndsWith(typeSpliceName!))
+				.WhereIF(!string.IsNullOrEmpty(hotspotHotSpotFullName), x => x.HotspotType.HotSpotFullName.EndsWith(hotspotHotSpotFullName!))
 				.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgId), x => x.HotspotType.CreatorId != null && x.HotspotType.CreatorId.EndsWith(pagedDto.CreateOrgId!))
 				.WhereIF(!string.IsNullOrEmpty(pagedDto.Attribution), x => x.Attribution == pagedDto.Attribution!);
 			switch (pagedDto.Sort)

+ 5 - 5
src/Hotline.Share/Dtos/Knowledge/KnowledgeDto.cs

@@ -137,11 +137,6 @@ namespace Hotline.Share.Dtos.Knowledge
         /// </summary>
         public List<string> Additions { get; set; }
 
-        /// <summary>
-        /// 关联知识
-        /// </summary>
-        public List<string> Knowledges { get; set; }
-
         /// <summary>
         /// 外部数据(为前端提供级联功能)
         /// </summary>
@@ -186,6 +181,11 @@ namespace Hotline.Share.Dtos.Knowledge
 
         public KnowledgeCollectDto Collect { get; set; }
 
+        /// <summary>
+        /// 关联知识对象
+        /// </summary>
+        public List<KnowledgeDto> Knowledges { get; set; }
+
 	}
 
     public record KnowledgeBaseDto {