|
@@ -3,6 +3,7 @@ using Hotline.Orders.Notifications;
|
|
|
using Hotline.Settings;
|
|
|
using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Enums.Order;
|
|
|
+using MapsterMapper;
|
|
|
using MediatR;
|
|
|
using XF.Domain.Repository;
|
|
|
|
|
@@ -17,13 +18,15 @@ namespace Hotline.Application.Handlers.Order
|
|
|
private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
|
|
|
private readonly IRepository<SystemDicData> _systemDicDataRepository;
|
|
|
private readonly IOrderRepository _orderRepository;
|
|
|
+ private readonly IMapper _mapper;
|
|
|
|
|
|
- public AddVisitNotifyHandler(IRepository<OrderVisit> orderVisitRepository, IRepository<OrderVisitDetail> orderVisitedDetailRepository,IRepository<SystemDicData> systemDicDataRepository,IOrderRepository orderRepository)
|
|
|
+ public AddVisitNotifyHandler(IRepository<OrderVisit> orderVisitRepository, IRepository<OrderVisitDetail> orderVisitedDetailRepository,IRepository<SystemDicData> systemDicDataRepository,IOrderRepository orderRepository,IMapper mapper)
|
|
|
{
|
|
|
_orderVisitRepository = orderVisitRepository;
|
|
|
_orderVisitedDetailRepository = orderVisitedDetailRepository;
|
|
|
_systemDicDataRepository = systemDicDataRepository;
|
|
|
_orderRepository = orderRepository;
|
|
|
+ _mapper = mapper;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -77,6 +80,32 @@ namespace Hotline.Application.Handlers.Order
|
|
|
//工单
|
|
|
orderVisit.Order.Visited(orgProcessingResults.Key, orgProcessingResults.Value);
|
|
|
await _orderRepository.UpdateAsync(orderVisit.Order);
|
|
|
+
|
|
|
+ //处理网站通知差评数据
|
|
|
+ if(orderVisit.Order.Source== ESource.Hotline && orderVisit.OrderVisitDetails.Any(x=> x.OrgHandledAttitude?.Key=="1" || x.OrgHandledAttitude?.Key == "2" || x.OrgProcessingResults?.Key=="1" || x.OrgProcessingResults?.Key == "2"))
|
|
|
+ {
|
|
|
+ //包含不满意数据,重新生成新的回访
|
|
|
+ var newOrderVisit = _mapper.Map<OrderVisit>(orderVisit);
|
|
|
+ newOrderVisit.InitId();
|
|
|
+ newOrderVisit.VisitState = EVisitState.NoSatisfiedWaitForVisit;
|
|
|
+ newOrderVisit.VisitTime = null;
|
|
|
+ newOrderVisit.IsCanHandle = false;
|
|
|
+ newOrderVisit.IsCanAiVisit = false;
|
|
|
+ newOrderVisit.AiVisitCount = 0;
|
|
|
+ await _orderVisitRepository.AddAsync(newOrderVisit,cancellationToken);
|
|
|
+ var list = _mapper.Map<List<OrderVisitDetail>>(orderVisit.OrderVisitDetails);
|
|
|
+ list.ForEach(x =>
|
|
|
+ {
|
|
|
+ x.VisitId = newOrderVisit.Id;
|
|
|
+ x.VoiceEvaluate = null;
|
|
|
+ x.VoiceEvaluate = null;
|
|
|
+ x.OrgHandledAttitude = null;
|
|
|
+ x.OrgNoSatisfiedReason = null;
|
|
|
+ x.OrgProcessingResults = null;
|
|
|
+ x.VisitContent = "";
|
|
|
+ });
|
|
|
+ await _orderVisitedDetailRepository.AddRangeAsync(list, cancellationToken);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|