qinchaoyue 6 сар өмнө
parent
commit
a0b6e6b922

+ 20 - 0
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -640,6 +640,7 @@ namespace Hotline.Api.Controllers
                 var hotspot = await _hotspotTypeRepository.GetAsync(x => x.Id == dto.HotspotId);
                 hotspotHotSpotFullName = hotspot?.HotSpotFullName;
             }
+
             var sugar = _knowledgeRepository
                 .Queryable(false, false, false)
                 .Includes(x => x.User)
@@ -672,6 +673,12 @@ namespace Hotline.Api.Controllers
                         exp.Or(m => m.Content.Contains(keyword));
                     if (dto.RetrievalType == EKnowledgeRetrievalType.Summary)
                         exp.Or(m => m.Summary != null && m.Summary.Contains(keyword));
+                    if (dto.RetrievalType == EKnowledgeRetrievalType.KeyWord)
+                    {
+                        var keywordEntity = await _knowledgeWordRepository.GetAsync(m => m.Tag == keyword && m.IsEnable == 0);
+                        if (keywordEntity is null) continue;
+                        exp.Or(m => SqlFunc.JsonArrayAny(m.Keywords, keywordEntity.Id));
+                    }
                 }
                 sugar.Where(exp.ToExpression());
             }
@@ -1512,6 +1519,19 @@ namespace Hotline.Api.Controllers
             await _knowApplication.AddKnowledgeHotWordAsync(dto, HttpContext.RequestAborted);
         }
 
+        /// <summary>
+        /// 新增热词页面基础数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("hotword/basedata")]
+        public async Task<Dictionary<string, dynamic>> AddKnowledgeHotWordBaseDataAsync()
+        {
+            return _baseDataApplication
+                .KnowledgeHotWordType()
+                .Build();
+        }
+
         /// <summary>
         /// 热词集合
         /// </summary>

+ 6 - 0
src/Hotline.Application/Systems/BaseDataApplication.cs

@@ -182,4 +182,10 @@ public class BaseDataApplication : IScopeDependency
         _baseData.TryAdd("KnowledgeRetrievalType", items.Where(m => !ignoreFileType.Contains(m.Key)).ToList());
         return this;
     }
+
+    public BaseDataApplication KnowledgeHotWordType()
+    {
+        Add(typeof(EKnowledgeHotWordType));
+        return this;
+    }
 }

+ 10 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeDto.cs

@@ -489,6 +489,11 @@ namespace Hotline.Share.Dtos.Knowledge
         /// 排序
         /// </summary>
         public int? Sort { get; set; }
+
+        /// <summary>
+        /// 热词类型
+        /// </summary>
+        public EKnowledgeHotWordType? Type { get; set; }
     }
 
     public class KnowledgeHotWordOutDto : UpdateKnowledgeHotWordInDto
@@ -497,5 +502,10 @@ namespace Hotline.Share.Dtos.Knowledge
         /// 创建时间
         /// </summary>
         public DateTime CreationTime { get; set; }
+
+        /// <summary>
+        /// 热词类型
+        /// </summary>
+        public string TypeTxt => Type.GetDescription();
     }
 }

+ 25 - 0
src/Hotline.Share/Enums/KnowledgeBase/EKnowledgeHotWordType.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Enums.KnowledgeBase;
+public enum EKnowledgeHotWordType
+{
+    /// <summary>
+    /// 知识库
+    /// </summary>
+    [Description("知识库")]
+    KnowledgeBase = 0,
+
+    /// <summary>
+    /// 预案库
+    /// </summary>
+    [Description("预案库")]
+    PrePlanBase = 1,
+
+    [Description("案例库")]
+    CaseBase = 2,
+}

+ 9 - 1
src/Hotline/KnowledgeBase/KnowledgeHotWord.cs

@@ -1,4 +1,5 @@
-using SqlSugar;
+using Hotline.Share.Enums.KnowledgeBase;
+using SqlSugar;
 using System.ComponentModel;
 using XF.Domain.Repository;
 
@@ -25,6 +26,13 @@ public class KnowledgeHotWord : CreationEntity
     [SugarColumn(ColumnDescription = "搜索次数")]
     public int SearchCount { get; set; }
 
+    
+    /// <summary>
+    /// 类型
+    /// </summary>
+    [SugarColumn(ColumnDescription = "类型")]
+    public EKnowledgeHotWordType Type { get; set; }
+
     /// <summary>
     /// 是否启用
     /// </summary>

+ 0 - 2
src/Hotline/KnowledgeBase/KnowledgeWord.cs

@@ -47,7 +47,5 @@ namespace Hotline.KnowledgeBase
 		/// </summary>
 		[SugarColumn(ColumnDescription = "启禁用  0  启用  1 禁用")]
 		public int IsEnable { get; set; }
-
- 
 	}
 }