xf 2 年之前
父节点
当前提交
3fca9379fd

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

@@ -1,11 +1,13 @@
 using Hotline.Application.Knowledge;
 using Hotline.KnowledgeBase;
+using Hotline.KnowledgeBase.Notifies;
 using Hotline.Permissions;
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Enums.KnowledgeBase;
 using MapsterMapper;
+using MediatR;
 using Microsoft.AspNetCore.Mvc;
 using SqlSugar;
 using XF.Domain.Authentications;
@@ -24,6 +26,7 @@ namespace Hotline.Api.Controllers
         private readonly IKnowledgeDomainService _knowledgeDomainService;
         private readonly IMapper _mapper;
         private readonly IKnowApplication _knowApplication;
+        private readonly IMediator _mediator;
 
         /// <summary>
         /// 
@@ -35,7 +38,8 @@ namespace Hotline.Api.Controllers
         /// <param name="mapper"></param>
         /// <param name="knowApplication"></param>
         public KnowledgeController(IKnowledgeRepository knowledgeRepository, IKnowledgeTempRepository knowledgeTempRepository,
-           ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication)
+           ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication,
+           IMediator mediator)
         {
             _knowledgeRepository = knowledgeRepository;
             _knowledgeTempRepository = knowledgeTempRepository;
@@ -43,6 +47,7 @@ namespace Hotline.Api.Controllers
             _knowledgeDomainService = knowledgeDomainService;
             _mapper = mapper;
             _knowApplication = knowApplication;
+            _mediator = mediator;
         }
         #region 草稿箱
         /// <summary>
@@ -150,7 +155,9 @@ namespace Hotline.Api.Controllers
         [HttpGet("info/{Id}")]
         public async Task<Knowledge> KnowledgeInfo(string Id)
         {
-            return await _knowledgeDomainService.KnowledgeInfo(Id, HttpContext.RequestAborted);
+            var knowledge = await _knowledgeDomainService.KnowledgeInfo(Id, HttpContext.RequestAborted);
+            _mediator.Publish(new GetKnowledgeInfoNotify(knowledge));
+            return knowledge;
         }
 
         /// <summary>

+ 17 - 3
src/Hotline.Application/Handlers/FlowEngine/EndWorkflowHandler.cs

@@ -1,17 +1,31 @@
 using Hotline.FlowEngine.Notifies;
+using Hotline.KnowledgeBase;
+using Hotline.Settings;
 using MediatR;
 
 namespace Hotline.Application.Handlers.FlowEngine;
 
 public class EndWorkflowHandler : INotificationHandler<EndWorkflowNotify>
 {
+    private readonly IKnowledgeDomainService _knowledgeDomainService;
+
+    public EndWorkflowHandler(IKnowledgeDomainService knowledgeDomainService)
+    {
+        _knowledgeDomainService = knowledgeDomainService;
+    }
+
     /// <summary>Handles a notification</summary>
     /// <param name="notification">The notification</param>
     /// <param name="cancellationToken">Cancellation token</param>
     public async Task Handle(EndWorkflowNotify notification, CancellationToken cancellationToken)
     {
-        //todo 知识审批收到此消息表示审批通过
-
-        throw new NotImplementedException();
+        //知识审批收到此消息表示审批通过
+        var workflow = notification.Workflow;
+        switch (workflow.ModuleCode)
+        {
+            case WorkflowModuleConsts.KnowledgeAdd:
+                //_knowledgeDomainService.
+                break;
+        }
     }
 }

+ 1 - 1
src/Hotline.Application/Handlers/FlowEngine/NextStepHandler.cs

@@ -51,7 +51,7 @@ public class NextStepHandler : INotificationHandler<NextStepNotify>
                 order.CurrentStepName = workflow.CurrentStepName;
                 break;
 
-            //case WorkflowModuleConsts.KnowledgePublish:
+            //case WorkflowModuleConsts.KnowledgeAdd:
             //    var know = await _knowledgeRepository.GetAsync(d => d.WorkflowId == workflow.Id, cancellationToken);
             //    //todo is null
             //    know.Assign(notification.FlowAssignType, data.Handlers);

+ 29 - 0
src/Hotline.Application/Knowledge/GetKnowledgeInfoNotifyHandler.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Hotline.KnowledgeBase;
+using Hotline.KnowledgeBase.Notifies;
+using MediatR;
+
+namespace Hotline.Application.Knowledge
+{
+    public class GetKnowledgeInfoNotifyHandler : INotificationHandler<GetKnowledgeInfoNotify>
+    {
+        private readonly IKnowledgeDomainService _knowledgeDomainService;
+
+        public GetKnowledgeInfoNotifyHandler(IKnowledgeDomainService knowledgeDomainService)
+        {
+            _knowledgeDomainService = knowledgeDomainService;
+        }
+
+        /// <summary>Handles a notification</summary>
+        /// <param name="notification">The notification</param>
+        /// <param name="cancellationToken">Cancellation token</param>
+        public async Task Handle(GetKnowledgeInfoNotify notification, CancellationToken cancellationToken)
+        {
+            await _knowledgeDomainService.KnowledgePvIncreaseAsync(notification.Knowledge, cancellationToken);
+        }
+    }
+}

+ 22 - 0
src/Hotline/FlowEngine/Notifies/WorkflowNotify.cs

@@ -7,14 +7,36 @@ namespace Hotline.FlowEngine.Notifies;
 
 public record WorkflowNotify(Workflow Workflow, EFlowAssignType FlowAssignType, List<IdName> Handlers) : INotification;
 
+/// <summary>
+/// 开始流程
+/// </summary>
 public record StartWorkflowNotify(Workflow Workflow, EFlowAssignType FlowAssignType, List<IdName> Handlers, BasicWorkflowDto Dto) : WorkflowNotify(Workflow, FlowAssignType, Handlers);
 
+/// <summary>
+/// 节点办理完成
+/// </summary>
 public record NextStepNotify(Workflow Workflow, EFlowAssignType FlowAssignType, List<IdName> Handlers, BasicWorkflowDto Dto, bool IsCountersignStart, bool IsCountersignEnd) : WorkflowNotify(Workflow, FlowAssignType, Handlers);
 
+/// <summary>
+/// 接办
+/// </summary>
+/// <param name="Workflow"></param>
 public record AcceptWorkflowNotify(Workflow Workflow) : INotification;
 
+/// <summary>
+/// 会签结束
+/// </summary>
+/// <param name="Workflow"></param>
 public record CountersignEndAssigned(Workflow Workflow) : INotification;
 
+/// <summary>
+/// 退回上一节点
+/// </summary>
+/// <param name="Data"></param>
 public record PreviousStepNotify(PreviousWorkflowDto Data) : INotification;
 
+/// <summary>
+/// 流程结束
+/// </summary>
+/// <param name="Workflow"></param>
 public record EndWorkflowNotify(Workflow Workflow) : INotification;

+ 8 - 0
src/Hotline/KnowledgeBase/IKnowledgeDomainService.cs

@@ -40,5 +40,13 @@ namespace Hotline.KnowledgeBase
         /// <param name="HandleOpinions">办理意见</param>
         /// <returns></returns>
         Task ApprovalHandle(List<string> Ids, string ApprovalStatus, string HandleOpinions, CancellationToken cancellationToken);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="know"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task KnowledgePvIncreaseAsync(Knowledge know, CancellationToken cancellationToken);
     }
 }

+ 8 - 1
src/Hotline/KnowledgeBase/KnowledgeDomainService.cs

@@ -38,6 +38,14 @@ namespace Hotline.KnowledgeBase
             var know = await _knowledgeRepository.GetAsync(Id, cancellationToken);
             if (know is null)
                 throw UserFriendlyException.SameMessage("知识查询失败!");
+            //await KnowledgePvIncrese(cancellationToken, know);
+
+
+            return know;
+        }
+
+        public async Task KnowledgePvIncreaseAsync(Knowledge know, CancellationToken cancellationToken)
+        {
             //写入浏览记录
             KnowledgePv knowledgePv = new()
             {
@@ -51,7 +59,6 @@ namespace Hotline.KnowledgeBase
             know.PageView++;
             //修改点击量
             await _knowledgeRepository.UpdateAsync(know, cancellationToken);
-            return know;
         }
 
         /// <summary>

+ 11 - 0
src/Hotline/KnowledgeBase/Notifies/GetKnowledgeInfoNotify.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MediatR;
+
+namespace Hotline.KnowledgeBase.Notifies
+{
+    public record GetKnowledgeInfoNotify(Knowledge Knowledge) : INotification;
+}

+ 0 - 7
src/Hotline/Settings/WorkflowModule.cs

@@ -23,8 +23,6 @@ public class WorkflowModule
         {
             { WorkflowModuleConsts.Order, "工单办理" },
             { WorkflowModuleConsts.KnowledgeAdd, "新增知识审批" },
-            { WorkflowModuleConsts.Order, "工单审批" },
-            { WorkflowModuleConsts.KnowledgePublish, "知识发布" },
             { WorkflowModuleConsts.KnowledgeUpdate, "知识更新" },
             { WorkflowModuleConsts.KnowledgeDelete, "知识删除" },
         };
@@ -41,11 +39,6 @@ public class WorkflowModuleConsts
     /// 新增知识审批
     /// </summary>
     public const string KnowledgeAdd = "KnowledgeAdd";
-
-    /// <summary>
-    /// 知识发布流程
-    /// </summary>
-    public const string KnowledgePublish = "KnowledgePublish";
     public const string KnowledgeUpdate = "KnowledgeUpdate";
     public const string KnowledgeDelete = "KnowledgeDelete";