|
@@ -1,27 +1,17 @@
|
|
using DotNetCore.CAP;
|
|
using DotNetCore.CAP;
|
|
using Hotline.Caching.Interfaces;
|
|
using Hotline.Caching.Interfaces;
|
|
-using Hotline.Push.FWMessage;
|
|
|
|
-using Hotline.Settings;
|
|
|
|
using Hotline.Share.Dtos;
|
|
using Hotline.Share.Dtos;
|
|
using Hotline.Share.Dtos.Order;
|
|
using Hotline.Share.Dtos.Order;
|
|
using Hotline.Share.Dtos.Push;
|
|
using Hotline.Share.Dtos.Push;
|
|
using Hotline.Share.Enums.Order;
|
|
using Hotline.Share.Enums.Order;
|
|
-using Hotline.Share.Enums.Quality;
|
|
|
|
using Hotline.Share.Tools;
|
|
using Hotline.Share.Tools;
|
|
using Mapster;
|
|
using Mapster;
|
|
-using Mapster.Utils;
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
using Microsoft.Extensions.Logging;
|
|
-using Newtonsoft.Json.Linq;
|
|
|
|
-using System;
|
|
|
|
-using System.Collections.Generic;
|
|
|
|
-using System.Linq;
|
|
|
|
-using System.Text;
|
|
|
|
-using System.Threading;
|
|
|
|
-using System.Threading.Tasks;
|
|
|
|
using XF.Domain.Dependency;
|
|
using XF.Domain.Dependency;
|
|
using XF.Domain.Exceptions;
|
|
using XF.Domain.Exceptions;
|
|
using XF.Domain.Repository;
|
|
using XF.Domain.Repository;
|
|
-using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
|
|
|
|
+using Hotline.EventBus;
|
|
|
|
+using Hotline.Orders.Notifications;
|
|
|
|
|
|
namespace Hotline.Orders;
|
|
namespace Hotline.Orders;
|
|
public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependency
|
|
public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependency
|
|
@@ -32,8 +22,9 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
|
|
private readonly ISystemDicDataCacheManager _systemDicDataCacheManager;
|
|
private readonly ISystemDicDataCacheManager _systemDicDataCacheManager;
|
|
private readonly IOrderVisitRepository _orderVisitRepository;
|
|
private readonly IOrderVisitRepository _orderVisitRepository;
|
|
private readonly ICapPublisher _capPublisher;
|
|
private readonly ICapPublisher _capPublisher;
|
|
|
|
+ private readonly Publisher _publisher;
|
|
|
|
|
|
- public OrderVisitDomainService(IRepository<OrderVisitDetail> orderVisitDetailRepository, ILogger<OrderVisitDomainService> logger, IRepository<Order> orderRepository, ISystemDicDataCacheManager systemDicDataCacheManager, IOrderVisitRepository orderVisitRepository, ICapPublisher capPublisher)
|
|
|
|
|
|
+ public OrderVisitDomainService(IRepository<OrderVisitDetail> orderVisitDetailRepository, ILogger<OrderVisitDomainService> logger, IRepository<Order> orderRepository, ISystemDicDataCacheManager systemDicDataCacheManager, IOrderVisitRepository orderVisitRepository, ICapPublisher capPublisher, Publisher publisher)
|
|
{
|
|
{
|
|
_orderVisitDetailRepository = orderVisitDetailRepository;
|
|
_orderVisitDetailRepository = orderVisitDetailRepository;
|
|
_logger = logger;
|
|
_logger = logger;
|
|
@@ -41,6 +32,7 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
|
|
_systemDicDataCacheManager = systemDicDataCacheManager;
|
|
_systemDicDataCacheManager = systemDicDataCacheManager;
|
|
_orderVisitRepository = orderVisitRepository;
|
|
_orderVisitRepository = orderVisitRepository;
|
|
_capPublisher = capPublisher;
|
|
_capPublisher = capPublisher;
|
|
|
|
+ _publisher = publisher;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -122,6 +114,7 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
|
|
public async Task UpdateSmsReplyDefaultAsync(MessageDto dto)
|
|
public async Task UpdateSmsReplyDefaultAsync(MessageDto dto)
|
|
{
|
|
{
|
|
await _orderVisitRepository.Queryable()
|
|
await _orderVisitRepository.Queryable()
|
|
|
|
+ .Includes(m => m.Order)
|
|
.Where(m => m.Id == dto.ExternalId)
|
|
.Where(m => m.Id == dto.ExternalId)
|
|
.Where(m => m.VisitState == EVisitState.SMSVisiting)
|
|
.Where(m => m.VisitState == EVisitState.SMSVisiting)
|
|
.FirstAsync()
|
|
.FirstAsync()
|
|
@@ -140,8 +133,9 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
private async Task UpdateSmsReplyAsync(OrderVisit orderVisit, string replyTxt)
|
|
private async Task UpdateSmsReplyAsync(OrderVisit orderVisit, string replyTxt)
|
|
{
|
|
{
|
|
|
|
+ orderVisit.Order ??= await _orderRepository.GetAsync(orderVisit.OrderId);
|
|
orderVisit.VisitType = EVisitType.SmsVisit;
|
|
orderVisit.VisitType = EVisitType.SmsVisit;
|
|
- if (new string[] { "4", "5" }.Contains(replyTxt))
|
|
|
|
|
|
+ if (new string[] { "4", "5" , "不满意", "非常不满意" }.Contains(replyTxt))
|
|
{
|
|
{
|
|
// “短信不满意待回访”状态下,由其他方式再次进行回访,回访方式需更新为最新的回访方式
|
|
// “短信不满意待回访”状态下,由其他方式再次进行回访,回访方式需更新为最新的回访方式
|
|
// 故在此置为空
|
|
// 故在此置为空
|
|
@@ -178,21 +172,19 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
|
|
.FirstAsync()
|
|
.FirstAsync()
|
|
.Then(async detailSeat =>
|
|
.Then(async detailSeat =>
|
|
{
|
|
{
|
|
- detailSeat.ReplyBackfill(
|
|
|
|
- GetVisitEvaluateByReplyTxt<ESeatEvaluate>(replyTxt),
|
|
|
|
- GetVisitEvaluateByReplyTxt<EVoiceEvaluate>(replyTxt)
|
|
|
|
- );
|
|
|
|
|
|
+ detailSeat.ReplyBackfill(GetVisitEvaluateByReplyTxt<ESeatEvaluate>(replyTxt));
|
|
await _orderVisitDetailRepository.UpdateAsync(detailSeat);
|
|
await _orderVisitDetailRepository.UpdateAsync(detailSeat);
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ await _publisher.PublishAsync(new UpdateOrderVisitNotify(orderVisit.Adapt<OrderVisitNotifyDto>()), cancellationToken: CancellationToken.None);
|
|
|
|
|
|
if (orderVisit.VisitState != EVisitState.Visited) return;
|
|
if (orderVisit.VisitState != EVisitState.Visited) return;
|
|
-
|
|
|
|
|
|
+ orderVisit.Order.Visited(visitSatisfactionKv.Key, visitSatisfactionKv.Value);
|
|
|
|
+ await _orderRepository.UpdateAsync(orderVisit.Order);
|
|
var orderDto = orderVisit.Order.Adapt<OrderDto>();
|
|
var orderDto = orderVisit.Order.Adapt<OrderDto>();
|
|
var first = detailOrg.First();
|
|
var first = detailOrg.First();
|
|
- if (visitSatisfactionKv != null)
|
|
|
|
|
|
+ if (visitSatisfactionKv.Key != null && visitSatisfactionKv.Value != null)
|
|
{
|
|
{
|
|
- orderVisit.Order.Visited(visitSatisfactionKv.Key, visitSatisfactionKv.Value);
|
|
|
|
//推省上
|
|
//推省上
|
|
await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisited,
|
|
await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisited,
|
|
new PublishVisitDto()
|
|
new PublishVisitDto()
|
|
@@ -211,11 +203,5 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- //if (first != null)
|
|
|
|
- //{
|
|
|
|
- // //写入质检
|
|
|
|
- // await _qualityApplication.AddQualityAsync(EQualitySource.Visit, orderVisit.Order.Id, orderVisit.Id,
|
|
|
|
- // CancellationToken.None);
|
|
|
|
- //}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|