|
@@ -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();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|