Browse Source

下架拆分为2个接口

xf 3 tháng trước cách đây
mục cha
commit
4c02b1d866

+ 9 - 60
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -223,7 +223,7 @@ namespace Hotline.Api.Controllers
         {
             var kn = await _knowledgeDomainService.AddKnowledgeAsync(dto, HttpContext.RequestAborted);
 
-            var approve = await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.Add, kn.Id, null,
+            var approve = await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.Add, kn, null,
                 HttpContext.RequestAborted);
 
             return approve.Id;
@@ -275,36 +275,8 @@ namespace Hotline.Api.Controllers
         /// </summary>
         [HttpPost("offshelf")]
         [LogFilter("知识下架")]
-        public async Task OffShelf([FromBody] OffShelfKnowledgeDto dto)
-        {
-            var kn = await _knowledgeRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
-            if (kn is null) throw new UserFriendlyException("无效知识id");
-            if (kn.Status == EKnowledgeStatus.OffShelf) return;
-            if (kn.Status != EKnowledgeStatus.OnShelf) throw new UserFriendlyException("知识下架失败");
-
-            if (_sessionContext.OrgIsCenter || !_appOptions.Value.IsYiBin)
-            {
-                kn.Status = EKnowledgeStatus.OffShelf;
-                kn.OnShelfTime = null;
-                kn.OffShelfTime = DateTime.Now;
-                await _knowledgeRepository.UpdateAsync(kn, HttpContext.RequestAborted);
-
-                var pushKnowledge = _mapper.Map<KnowledgeSendDto>(kn);
-                pushKnowledge.CategoryCode = "01";
-                pushKnowledge.CategoryName = "公共服务";
-                //推省上
-                await _capPublisher.PublishAsync(EventNames.HotlineKnowledgeRemove, pushKnowledge, cancellationToken: HttpContext.RequestAborted);
-            }
-            else
-            {
-                kn.Status = EKnowledgeStatus.Auditing;
-                await _knowledgeRepository.UpdateAsync(kn, HttpContext.RequestAborted);
-
-                var approve = await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.OffShelf,
-                    kn.Id, null, HttpContext.RequestAborted);
-            }
-
-        }
+        public Task OffShelf([FromBody] OffShelfKnowledgeDto dto) => 
+            _knowledgeDomainService.OffShelfAsync(dto, HttpContext.RequestAborted);
 
         /// <summary>
         /// 知识库-知识下架并发起审批(new)
@@ -313,33 +285,10 @@ namespace Hotline.Api.Controllers
         [LogFilter("知识下架")]
         public async Task OffShelfAndApprove([FromBody] OffShelfKnowledgeDto dto)
         {
-            var kn = await _knowledgeRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
-            if (kn is null) throw new UserFriendlyException("无效知识id");
-            if (kn.Status == EKnowledgeStatus.OffShelf) return;
-            if (kn.Status != EKnowledgeStatus.OnShelf) throw new UserFriendlyException("知识下架失败");
-
-            if (_sessionContext.OrgIsCenter || !_appOptions.Value.IsYiBin)
-            {
-                kn.Status = EKnowledgeStatus.OffShelf;
-                kn.OnShelfTime = null;
-                kn.OffShelfTime = DateTime.Now;
-                await _knowledgeRepository.UpdateAsync(kn, HttpContext.RequestAborted);
-
-                var pushKnowledge = _mapper.Map<KnowledgeSendDto>(kn);
-                pushKnowledge.CategoryCode = "01";
-                pushKnowledge.CategoryName = "公共服务";
-                //推省上
-                await _capPublisher.PublishAsync(EventNames.HotlineKnowledgeRemove, pushKnowledge, cancellationToken: HttpContext.RequestAborted);
-            }
-            else
-            {
-                kn.Status = EKnowledgeStatus.Auditing;
-                await _knowledgeRepository.UpdateAsync(kn, HttpContext.RequestAborted);
-
-                var approve = await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.OffShelf,
-                    kn.Id, null, HttpContext.RequestAborted);
-            }
+            var kn = await _knowledgeDomainService.OffShelfAsync(dto, HttpContext.RequestAborted);
 
+            await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.OffShelf,
+                kn, null, HttpContext.RequestAborted);
         }
 
         /// <summary>
@@ -482,12 +431,12 @@ namespace Hotline.Api.Controllers
 
             if (kn.Status == EKnowledgeStatus.Drafts)
             {
-                await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.Add, kn.Id, null,
+                await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.Add, kn, null,
                     HttpContext.RequestAborted);
             }
             else
             {
-                await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.Update, kn.Id, dto.Opinion,
+                await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.Update, kn, dto.Opinion,
                     HttpContext.RequestAborted);
             }
         }
@@ -636,7 +585,7 @@ namespace Hotline.Api.Controllers
                 if (exists)
                     throw new UserFriendlyException($"该知识存在待审批申请, knId: {dto.Id}", "该知识存在待审批申请, 请先审批");
 
-                await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.Delete, knowledge.Id, dto.Opinion,
+                await _knowledgeDomainService.AddKnowledgeApproveAsync(EKnowledgeApproveType.Delete, knowledge, dto.Opinion,
                     HttpContext.RequestAborted);
             }
         }

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

@@ -83,9 +83,17 @@ namespace Hotline.KnowledgeBase
         /// <summary>
         /// 插入知识审批数据
         /// </summary>
-        Task<KnowledgeApprove> AddKnowledgeApproveAsync(EKnowledgeApproveType knowledgeApproveType, string knowledgeId, string? createOpinion,
+        Task<KnowledgeApprove> AddKnowledgeApproveAsync(EKnowledgeApproveType knowledgeApproveType, Knowledge kn, string? createOpinion,
             CancellationToken cancellation);
 
+        /// <summary>
+        /// 更新
+        /// </summary>
         Task<Knowledge> UpdateKnowledgeAsync(UpdateKnowledgeDto dto, CancellationToken cancellation);
+
+        /// <summary>
+        /// 下架知识
+        /// </summary>
+        Task<Knowledge> OffShelfAsync(OffShelfKnowledgeDto dto, CancellationToken cancellation);
     }
 }

+ 1 - 0
src/Hotline/KnowledgeBase/Knowledge.cs

@@ -272,6 +272,7 @@ public class Knowledge : WorkflowEntity//   WorkflowEntity  FullStateEntity
     {
         Status = EKnowledgeStatus.OffShelf;
         OffShelfTime = System.DateTime.Now;
+        OnShelfTime = null;
     }
 
     #endregion

+ 28 - 5
src/Hotline/KnowledgeBase/KnowledgeDomainService.cs

@@ -418,20 +418,23 @@ namespace Hotline.KnowledgeBase
         /// <summary>
         /// 插入知识审批数据
         /// </summary>
-        public async Task<KnowledgeApprove> AddKnowledgeApproveAsync(EKnowledgeApproveType knowledgeApproveType, string knowledgeId, string? createOpinion,
+        public async Task<KnowledgeApprove> AddKnowledgeApproveAsync(EKnowledgeApproveType knowledgeApproveType, Knowledge kn, string? createOpinion,
             CancellationToken cancellation)
         {
-            var approveAdd = new KnowledgeApprove
+            var approve = new KnowledgeApprove
             {
-                KnowledgeId = knowledgeId,
+                KnowledgeId = kn.Id,
                 KnowledgeApproveType = knowledgeApproveType,
                 KnowledgeApproveStatus = EKnowledgeApproveStatus.Unhandle,
                 CreateOpinion = createOpinion,
             };
 
-            await _knowledgeApproveRepository.AddAsync(approveAdd, cancellation);
+            await _knowledgeApproveRepository.AddAsync(approve, cancellation);
 
-            return approveAdd;
+            kn.Status = EKnowledgeStatus.Auditing;
+            await _knowledgeRepository.UpdateAsync(kn, cancellation);
+
+            return approve;
         }
 
         public async Task<Knowledge> UpdateKnowledgeAsync(UpdateKnowledgeDto dto, CancellationToken cancellation)
@@ -490,7 +493,27 @@ namespace Hotline.KnowledgeBase
             return knowledge;
         }
 
+        /// <summary>
+        /// 下架知识
+        /// </summary>
+        public async Task<Knowledge> OffShelfAsync(OffShelfKnowledgeDto dto, CancellationToken cancellation)
+        {
+            var kn = await _knowledgeRepository.GetAsync(dto.Id, cancellation);
+            if (kn is null) throw new UserFriendlyException("无效知识id");
+            if (kn.Status == EKnowledgeStatus.OffShelf) return kn;
+            if (kn.Status != EKnowledgeStatus.OnShelf) throw new UserFriendlyException("知识下架失败");
+
+            kn.OffShelf();
 
+            await _knowledgeRepository.UpdateAsync(kn, cancellation);
 
+            var pushKnowledge = _mapper.Map<KnowledgeSendDto>(kn);
+            pushKnowledge.CategoryCode = "01";
+            pushKnowledge.CategoryName = "公共服务";
+            //推省上
+            await _capPublisher.PublishAsync(EventNames.HotlineKnowledgeRemove, pushKnowledge, cancellationToken: cancellation);
+
+            return kn;
+        }
     }
 }