Explorar el Código

自贡12345 - 案例库

libin hace 4 meses
padre
commit
2773b296b9

+ 5 - 2
src/Hotline.Api/Controllers/CaseController.cs

@@ -345,7 +345,10 @@ namespace Hotline.Api.Controllers
             var any = await _CaseListRepository.Queryable()
                 .Where(x => x.Status == ECaseStatus.Auditing || x.Status >= ECaseStatus.OnShelf)
                 .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Equals(dto.Title))
-                .WhereIF(!string.IsNullOrEmpty(dto.Content), x => x.Content.Equals(dto.Content))
+                .WhereIF(!string.IsNullOrEmpty(dto.Abstract), x => x.Abstract.Equals(dto.Abstract))
+                .WhereIF(!string.IsNullOrEmpty(dto.Describe), x => x.Describe.Equals(dto.Describe))
+                .WhereIF(!string.IsNullOrEmpty(dto.Result), x => x.Result.Equals(dto.Result))
+                .WhereIF(!string.IsNullOrEmpty(dto.Reason), x => x.Reason.Equals(dto.Reason))
                 .WhereIF(!string.IsNullOrEmpty(dto.Id), x => x.Id != dto.Id)
                 .AnyAsync();
             return any;
@@ -367,7 +370,7 @@ namespace Hotline.Api.Controllers
                 return File(fileBytes, "application/octet-stream", $"{name}.zip");
             }
             var info = await _CaseListRepository.GetAsync(dto.Ids[0]) ?? throw UserFriendlyException.SameMessage("案例不存在");
-            return info.Content.HtmlToStream(dto.FileType).GetFileStreamResult(dto.FileType, info.Title, false);
+            return info.Result.HtmlToStream(dto.FileType).GetFileStreamResult(dto.FileType, info.Title, false);
         }
 
         #endregion

+ 14 - 28
src/Hotline.Application/Caselibrary/CaseApplication.cs

@@ -178,13 +178,7 @@ namespace Hotline.Application.Caselibrary
         /// <returns></returns>
         public async Task<(int, IList<CaseDataDto>)> QueryAllCaseListAsync(CaseListDto pagedDto, CancellationToken cancellationToken)
         {
-            //if (!_sessionContext.OrgIsCenter)
-            //{// 部门只能查询【部门案例库】
-            //    pagedDto.Attribution = "部门案例库";
-            //}
-
             var typeSpliceName = string.Empty;
-            var hotspotHotSpotFullName = string.Empty;
 
             if (!string.IsNullOrEmpty(pagedDto.CaseTypeID))
             {
@@ -192,20 +186,12 @@ namespace Hotline.Application.Caselibrary
                 typeSpliceName = type?.SpliceName;
             }
 
-            if (!string.IsNullOrEmpty(pagedDto.HotspotId))
-            {
-                var hotspot = await _hotspotTypeRepository.GetAsync(x => x.Id == pagedDto.HotspotId);
-                hotspotHotSpotFullName = hotspot?.HotSpotFullName;
-            }
-
             //单表分页
             var (total, temp) = await _CaseListRepository.Queryable()
                 .Includes(x => x.CaseTypes)
-                .Includes(x => x.HotspotType)
                 .Where(x => x.IsDeleted == false)
                 .Where(x => (x.Status == ECaseStatus.Drafts && x.CreatorId == _sessionContext.UserId) || (x.Status != ECaseStatus.Drafts))
                 .WhereIF(OrgSeedData.CenterId != pagedDto.CreateOrgId && !string.IsNullOrEmpty(pagedDto.CreateOrgId), x => x.CreatorOrgId != null && x.CreatorOrgId.StartsWith(pagedDto.CreateOrgId!))
-                .WhereIF(!string.IsNullOrEmpty(pagedDto.Attribution), x => x.Attribution == pagedDto.Attribution)
                 .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), x => x.Title.Contains(pagedDto.Title))
                 .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), x => x.Title.Contains(pagedDto.Keyword!) ||
                                                                   x.CreatorName!.Contains(pagedDto.Keyword!) ||
@@ -216,9 +202,7 @@ namespace Hotline.Application.Caselibrary
                                                         x => x.Status == pagedDto.Status && ((x.ExpiredTime != null && x.ExpiredTime > DateTime.Now) || x.ExpiredTime == null))
                 .WhereIF(pagedDto.Status.HasValue && pagedDto.Status == ECaseStatus.OffShelf, x => x.Status == pagedDto.Status || (x.ExpiredTime != null && x.ExpiredTime < DateTime.Now && x.Status != ECaseStatus.Drafts))
                 .WhereIF(pagedDto.Status.HasValue && pagedDto.Status == ECaseStatus.NewDrafts, x => x.Status == ECaseStatus.Drafts || x.Status == ECaseStatus.Revert)
-                .WhereIF(pagedDto.IsPublic.HasValue, x => x.IsPublic == pagedDto.IsPublic)
                 .WhereIF(!string.IsNullOrEmpty(typeSpliceName), x => x.CaseTypes.Any(t => t.CaseTypeSpliceName.StartsWith(typeSpliceName)))
-                .WhereIF(!string.IsNullOrEmpty(hotspotHotSpotFullName), x => x.HotspotType.HotSpotFullName.EndsWith(hotspotHotSpotFullName!))
 
                 .WhereIF(pagedDto.CreationTimeStart.HasValue, x => x.CreationTime >= pagedDto.CreationTimeStart)
                 .WhereIF(pagedDto.CreationTimeEnd.HasValue, x => x.CreationTime <= pagedDto.CreationTimeEnd)
@@ -303,8 +287,6 @@ namespace Hotline.Application.Caselibrary
 
             _mapper.Map(dto, Case);
 
-            Case.HotspotId = dto.HotspotId;
-
             if (dto.Files != null && dto.Files.Count > 0)
                 Case.FileJson = await _fileRepository.AddFileAsync(dto.Files, Case.Id, "", cancellationToken);
             else
@@ -324,7 +306,7 @@ namespace Hotline.Application.Caselibrary
 
         #endregion
 
-        #region 案例库 - 下架审核
+        #region 案例库 - 下架&审核
 
         /// <summary>
         /// 下架审核
@@ -368,13 +350,17 @@ namespace Hotline.Application.Caselibrary
             //转化
             var CaseInfoDto = _mapper.Map<CaseInfoDto>(Case);
 
-            if (Case != null && !string.IsNullOrEmpty(Case.Content))
-                CaseInfoDto.Content = _bulletinApplication.GetSiteUrls(Case.Content);
-
-            // 热点
-            //var hot = await _hotspotTypeRepository.GetAsync(Case.HotspotId, cancellationToken);
-            //if (hot != null)
-            //    CaseDto.HotspotId = hot.HotSpotFullName;
+            //if (Case != null && !string.IsNullOrEmpty(Case.Content))
+            //    CaseInfoDto.Content = _bulletinApplication.GetSiteUrls(Case.Content);
+            if (Case != null)
+            {
+                if (!string.IsNullOrEmpty(Case.Describe))
+                    CaseInfoDto.Content = _bulletinApplication.GetSiteUrls(Case.Describe);
+                if (!string.IsNullOrEmpty(Case.Result))
+                    CaseInfoDto.Content = _bulletinApplication.GetSiteUrls(Case.Result);
+                if (!string.IsNullOrEmpty(Case.Reason))
+                    CaseInfoDto.Content = _bulletinApplication.GetSiteUrls(Case.Reason);
+            }
 
             if (CaseInfoDto.FileJson != null && CaseInfoDto.FileJson.Any())
             {
@@ -408,12 +394,12 @@ namespace Hotline.Application.Caselibrary
             var streamList = new Dictionary<string, Stream>();
             var knowList = await _CaseListRepository.Queryable()
                 .Where(m => dto.Ids.Contains(m.Id))
-                .Select(m => new { m.Title, m.Content })
+                .Select(m => new { m.Title, m.Result })
                 .ToListAsync(cancellationToken);
 
             var tasks = knowList.Select(async item =>
             {
-                var stream = await Task.Run(() => item.Content.HtmlToStream(dto.FileType), cancellationToken);
+                var stream = await Task.Run(() => item.Result.HtmlToStream(dto.FileType), cancellationToken);
                 return new KeyValuePair<string, Stream>(
                     item.Title + dto.FileType.GetFileExtension(),
                     stream

+ 1 - 1
src/Hotline.Application/Planlibrary/PlanApplication.cs

@@ -324,7 +324,7 @@ namespace Hotline.Application.Planlibrary
 
         #endregion
 
-        #region 预案库 - 下架审核
+        #region 预案库 - 下架&审核
 
         /// <summary>
         /// 下架审核

+ 19 - 9
src/Hotline.Share/Dtos/Caselibrary/CaseDataDto.cs

@@ -28,9 +28,9 @@ namespace Hotline.Share.Dtos.Caselibrary
         public int PageView { get; set; }
 
         /// <summary>
-        /// 是否公开
+        /// 是否热门
         /// </summary>
-        public bool IsPublic { get; set; }
+        public bool IsPopular { get; set; }
 
         /// <summary>
         /// 申请部门ID
@@ -72,11 +72,6 @@ namespace Hotline.Share.Dtos.Caselibrary
         /// </summary>
         public DateTime? ExpiredTime { get; set; }
 
-        /// <summary>
-        /// 案例归属
-        /// </summary>
-        public string? Attribution { get; set; }
-
         /// <summary>
         /// 文档状态
         /// </summary>
@@ -152,9 +147,24 @@ public class CaseExistDto
     public string Title { get; set; }
 
     /// <summary>
-    /// 内容
+    /// 摘要
+    /// </summary>
+    public string Abstract { get; set; }
+
+    /// <summary>
+    /// 案例描述
+    /// </summary>
+    public string Describe { get; set; }
+
+    /// <summary>
+    /// 案例结果
+    /// </summary>
+    public string Result { get; set; }
+
+    /// <summary>
+    /// 推荐理由
     /// </summary>
-    public string Content { get; set; }
+    public string Reason { get; set; }
 
     /// <summary>
     /// ID

+ 50 - 26
src/Hotline.Share/Dtos/Caselibrary/CaseListDto.cs

@@ -19,21 +19,35 @@ namespace Hotline.Share.Dtos.Caselibrary
         /// </summary>
         public string? Keyword { get; set; }
 
-        /// <summary>
-        /// 内容
-        /// </summary>
-        public string Content { get; set; }
+        ///// <summary>
+        ///// 摘要
+        ///// </summary>
+        //public string? Abstract { get; set; }
 
+        ///// <summary>
+        ///// 案例描述
+        ///// </summary>
+        //public string Describe { get; set; }
+
+        ///// <summary>
+        ///// 案例结果
+        ///// </summary>
+        //public string Result { get; set; }
+
+        ///// <summary>
+        ///// 推荐理由
+        ///// </summary>
+        //public string Reason { get; set; }
 
         /// <summary>
-        /// 案例状态
+        /// 是否热门
         /// </summary>
-        public ECaseStatus? Status { get; set; }
+        public bool? IsPopular { get; set; } = false;
 
         /// <summary>
-        /// 案例归属
+        /// 案例状态
         /// </summary>
-        public string? Attribution { get; set; }
+        public ECaseStatus? Status { get; set; }
 
         /// <summary>
         /// 分类ID
@@ -41,14 +55,14 @@ namespace Hotline.Share.Dtos.Caselibrary
         public string? CaseTypeID { get; set; }
 
         /// <summary>
-        /// 热点
+        /// 工单ID
         /// </summary>
-        public string? HotspotId { get; set; }
+        public string? OrderId { get; set; }
 
         /// <summary>
-        /// 是否公开
+        /// 知识库ID
         /// </summary>
-        public bool? IsPublic { get; set; }
+        public string? KnowledgeId { get; set; }
 
         /// <summary>
         /// 是否删除
@@ -159,34 +173,44 @@ namespace Hotline.Share.Dtos.Caselibrary
         public string? Keyword { get; set; }
 
         /// <summary>
-        /// 内容
+        /// 摘要
         /// </summary>
-        public string Content { get; set; }
+        public string? Abstract { get; set; }
 
         /// <summary>
-        /// 案例归属
+        /// 案例描述
         /// </summary>
-        public string Attribution { get; set; }
+        public string Describe { get; set; }
 
-        ///// <summary>
-        ///// 分类ID
-        ///// </summary>
-        //public string? CaseTypeID { get; set; }
+        /// <summary>
+        /// 案例结果
+        /// </summary>
+        public string Result { get; set; }
 
         /// <summary>
-        /// 分类
+        /// 推荐理由
         /// </summary>
-        public List<CaseRelationTypeDto> CaseType { get; set; }
+        public string Reason { get; set; }
 
         /// <summary>
-        /// 热点
+        /// 是否热门
         /// </summary>
-        public string? HotspotId { get; set; }
+        public bool? IsPopular { get; set; } = false;
 
         /// <summary>
-        /// 是否公开
+        /// 工单ID
         /// </summary>
-        public bool? IsPublic { get; set; }
+        public string? OrderId { get; set; }
+
+        /// <summary>
+        /// 知识库ID
+        /// </summary>
+        public string? KnowledgeId { get; set; }
+
+        /// <summary>
+        /// 分类
+        /// </summary>
+        public List<CaseRelationTypeDto> CaseType { get; set; }
 
         /// <summary>
         /// 失效时间

+ 49 - 26
src/Hotline/CaseLibrary/CaseList.cs

@@ -6,6 +6,8 @@ using System.ComponentModel;
 using XF.Domain.Repository;
 using Hotline.Share.Enums.Caselibrary;
 using Hotline.Share.Dtos.File;
+using Hotline.Orders;
+using Hotline.KnowledgeBase;
 
 namespace Hotline.CaseLibrary;
 
@@ -13,8 +15,7 @@ namespace Hotline.CaseLibrary;
 /// 案例库列表内容
 /// </summary>
 [Description("案例库列表")]
-[SugarIndex("index_caselibrary_hotspotId", nameof(CaseList.HotspotId), OrderByType.Desc)]
-[SugarIndex("index_caselibrary_attribution", nameof(CaseList.Attribution), OrderByType.Desc)]
+
 [SugarIndex("index_caselibrary_creatorOrgId", nameof(CaseList.CreatorOrgId), OrderByType.Desc)]
 public class CaseList : CreationEntity
 {
@@ -25,52 +26,52 @@ public class CaseList : CreationEntity
     public string Title { get; set; }
 
     /// <summary>
-    /// 关键词
+    /// 摘要
     /// </summary>
-    [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true, ColumnDescription = "关键词")]
-    public List<string>? Keywords { get; set; }
+    [SugarColumn(ColumnDescription = "摘要")]
+    public string? Abstract { get; set; }
 
     /// <summary>
-    /// 内容
+    /// 关键词
     /// </summary>
-    [SugarColumn(ColumnDataType = "text", ColumnDescription = "内容")]
-    public string Content { get; set; }
+    [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true, ColumnDescription = "关键词")]
+    public List<string>? Keywords { get; set; }
 
     /// <summary>
-    /// 案例申请状态
+    /// 案例描述
     /// </summary>
-    [SugarColumn(ColumnDescription = "案例申请状态")]
-    public ECaseApplyStatus ApplyStatus { get; set; }
+    [SugarColumn(ColumnDescription = "案例描述")]
+    public string Describe { get; set; }
 
     /// <summary>
-    /// 案例状态
+    /// 案例结果
     /// </summary>
-    [SugarColumn(ColumnDescription = "案例状态")]
-    public ECaseStatus Status { get; set; }
+    [SugarColumn(ColumnDescription = "案例结果")]
+    public string Result { get; set; }
 
     /// <summary>
-    /// 案例归属
+    /// 推荐理由
     /// </summary>
-    [SugarColumn(ColumnDescription = "案例归属")]
-    public string Attribution { get; set; }
+    [SugarColumn(ColumnDescription = "推荐理由")]
+    public string Reason { get; set; }
 
     /// <summary>
-    /// 热点
+    /// 是否热门
     /// </summary>
-    [SugarColumn(ColumnDescription = "热点")]
-    public string? HotspotId { get; set; }
+    [SugarColumn(ColumnDescription = "是否热门")]
+    public bool? IsPopular { get; set; } = false;
 
     /// <summary>
-    /// 热点
+    /// 案例申请状态
     /// </summary>
-    [Navigate(NavigateType.OneToOne, nameof(HotspotId))]//一对一 
-    public Hotspot? HotspotType { get; set; }
+    [SugarColumn(ColumnDescription = "案例申请状态")]
+    public ECaseApplyStatus ApplyStatus { get; set; }
 
     /// <summary>
-    /// 是否公开
+    /// 案例状态
     /// </summary>
-    [SugarColumn(ColumnDescription = "是否公开")]
-    public bool IsPublic { get; set; }
+    [SugarColumn(ColumnDescription = "案例状态")]
+    public ECaseStatus Status { get; set; }
 
     /// <summary>
     /// 是否删除
@@ -154,6 +155,28 @@ public class CaseList : CreationEntity
     [SugarColumn(ColumnDescription = "评分")]
     public decimal? Score { get; set; } = decimal.Zero;
 
+    /// <summary>
+    /// 工单ID
+    /// </summary>
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// 工单
+    /// </summary>
+    [Navigate(NavigateType.OneToOne, nameof(OrderId))]
+    public Order Order { get; set; }
+
+    /// <summary>
+    /// 知识库ID
+    /// </summary>
+    public string KnowledgeId { get; set; }
+
+    /// <summary>
+    /// 知识库
+    /// </summary>
+    [Navigate(NavigateType.OneToOne, nameof(KnowledgeId))]
+    public Knowledge Knowledge { get; set; }
+
     /// <summary>
 	/// 案例库类型关联ID
 	/// </summary>