Forráskód Böngészése

回访更新同步更新工单回复字段

qinchaoyue 4 hónapja
szülő
commit
3a9d491a41

+ 1 - 1
src/Hotline.Api/StartupExtensions.cs

@@ -188,7 +188,7 @@ internal static class StartupExtensions
         }
 
         //services.AddScoped(typeof(IUpdateDatabase<>), typeof(UpdateDatabase<>));
-        services.AddScoped<IUpdateDatabaseEvent<OrderVisit>, OrderVisitEventHandler>();
+        services.AddScoped<IUpdateDatabaseEvent<OrderVisit>, OrderVisitDetailEventHandler>();
 
         //sqlsugar
         services.AddSqlSugar(configuration);

+ 61 - 0
src/Hotline/Orders/DatabaseEventHandler/OrderVisitDetailEventHandler.cs

@@ -0,0 +1,61 @@
+using Hotline.Share.Enums.Order;
+using XF.Domain.Repository;
+using XF.Domain.Repository.Events;
+
+namespace Hotline.Orders.DatabaseEventHandler;
+
+/// <summary>
+/// OrderVisit 更新数据后执行事务处理
+/// 更新 order 表中的 OrgProcessingResults 和 SeatEvaluate 字段
+/// </summary>
+public class OrderVisitDetailEventHandler : IUpdateDatabaseEvent<OrderVisitDetail>
+{
+    private readonly IRepository<OrderVisitDetail> _orderVisitDetailRepository;
+    private readonly IOrderRepository _orderRepository;
+    private readonly IRepository<OrderVisit> _orderVisitRepository;
+
+    public OrderVisitDetailEventHandler(IOrderRepository orderRepository, IRepository<OrderVisitDetail> orderVisitDetailRepository, IRepository<OrderVisit> orderVisitRepository)
+    {
+        _orderRepository = orderRepository;
+        _orderVisitDetailRepository = orderVisitDetailRepository;
+        _orderVisitRepository = orderVisitRepository;
+    }
+
+    public void OnInsert(OrderVisitDetail entity)
+    {
+        OrderUpdate(entity);
+    }
+
+    public void OnUpdate(OrderVisitDetail entity)
+    {
+        OrderUpdate(entity);
+    }
+
+    private void OrderUpdate(OrderVisitDetail visit)
+    {
+        if (visit.VisitTarget == EVisitTarget.Org && visit.OrgProcessingResults != null)
+        {
+            var orderId = _orderVisitRepository.Queryable()
+                .Where(m => m.Id == visit.VisitId)
+                .Select(m => m.OrderId)
+                .First();
+            _orderRepository.Updateable()
+                .SetColumns(m => m.OrgProcessingResults == visit.OrgProcessingResults)
+                .Where(m => m.Id == orderId)
+                .ExecuteCommand();
+        }
+
+        if (visit.VisitTarget == EVisitTarget.Seat && visit.SeatEvaluate != null)
+        {
+            var orderId = _orderVisitRepository.Queryable()
+                .Where(m => m.Id == visit.VisitId)
+                .Select(m => m.OrderId)
+                .First();
+            _orderRepository.Updateable()
+                .SetColumns(m => m.SeatEvaluate == visit.SeatEvaluate)
+                .Where(m => m.Id == orderId)
+                .ExecuteCommand();
+        }
+
+    }
+}

+ 0 - 46
src/Hotline/Orders/DatabaseEventHandler/OrderVisitEventHandler.cs

@@ -1,46 +0,0 @@
-using Hotline.Share.Enums.Order;
-using XF.Domain.Repository;
-using XF.Domain.Repository.Events;
-
-namespace Hotline.Orders.DatabaseEventHandler;
-
-/// <summary>
-/// OrderVisit 更新数据后执行事务处理
-/// 更新 order 表中的 OrgProcessingResults 和 SeatEvaluate 字段
-/// </summary>
-public class OrderVisitEventHandler : IUpdateDatabaseEvent<OrderVisit>
-{
-    private readonly IRepository<OrderVisitDetail> _orderVisitDetailRepository;
-    private readonly IOrderRepository _orderRepository;
-
-    public OrderVisitEventHandler(IOrderRepository orderRepository, IRepository<OrderVisitDetail> orderVisitDetailRepository)
-    {
-        _orderRepository = orderRepository;
-        _orderVisitDetailRepository = orderVisitDetailRepository;
-    }
-
-    public void OnInsert(OrderVisit entity)
-    {
-        OrderUpdate(entity);
-    }
-
-    public void OnUpdate(OrderVisit entity)
-    {
-        OrderUpdate(entity);
-    }
-
-    private void OrderUpdate(OrderVisit visit)
-    {
-        if (visit.VisitState != EVisitState.Visited) return;
-        var orgDetail = _orderVisitDetailRepository.Queryable()
-            .Where(m => m.VisitId == visit.Id && m.VisitTarget == EVisitTarget.Org).First();
-        var seatDetail = _orderVisitDetailRepository.Queryable()
-            .Where(m => m.VisitId == visit.Id && m.VisitTarget == EVisitTarget.Seat).First();
-
-        _orderRepository.Updateable()
-            .SetColumns(m => m.OrgProcessingResults == orgDetail.OrgProcessingResults)
-            .SetColumns(m => m.SeatEvaluate == seatDetail.SeatEvaluate)
-            .Where(m => m.Id == visit.OrderId)
-            .ExecuteCommand();
-    }
-}