Ver código fonte

修复延迟处理工单和通话记录外网报错

qinchaoyue 5 meses atrás
pai
commit
4477523b2b

+ 12 - 20
src/Hotline.Application/CallCenter/DefaultCallApplication.cs

@@ -499,29 +499,21 @@ public abstract class DefaultCallApplication : ICallApplication
     /// <returns></returns>
     public virtual async Task OrderRelateCallHandlerAsync(string orderId, CancellationToken cancellationToken)
     {
-        var callId = await _orderRepository.Queryable()
-            .Where(m => m.Id == orderId)
-            .Select(m => m.CallId)
-            .FirstAsync(cancellationToken);
-        if (callId.IsNullOrEmpty()) return;
-
-        var callNo = await _callNativeRepository.Queryable()
-            .Where(m => m.Id == callId)
-            .Select(m => m.CallNo)
+        var orderCall = await _orderRepository.Queryable()
+            .LeftJoin<CallNative>((o, c) => o.CallId == c.Id)
+            .Where((o, c) => o.Id == orderId)
+            .Select((o, c) => new { o.CallId, c.CallNo })
             .FirstAsync(cancellationToken);
-        if (callNo.IsNullOrEmpty()) return;
+        if (orderCall is null || orderCall.CallNo.IsNullOrEmpty()) return;
 
-        var callNative = await _callNativeRepository.Queryable()
-            .Where(m => m.CallNo == callNo)
-            .ToListAsync(cancellationToken);
-
-        var call = callNative.Where(m => m.Direction == ECallDirection.In)
+        var call = await _callNativeRepository.Queryable()
+            .Where(m => m.CallNo == orderCall.CallNo && m.Direction == ECallDirection.In)
             .OrderByDescending(m => m.Duration)
-            .First();
+            .FirstAsync(cancellationToken);
+        if (call == null) return;
 
-        // 只有一条通话记录, 不处理
         // 需要更新的callId 和 order.callId 相同, 不处理
-        if (callNative.Count < 2 || callId == call.Id)
+        if (orderCall.CallId == call.Id)
         {
             // 推省上
             await _capPublisher.PublishAsync(EventNames.HotlineCallConnectWithOrder, new PublishCallRecrodDto()
@@ -539,7 +531,7 @@ public abstract class DefaultCallApplication : ICallApplication
 
         await _callIdRelationRepository.Updateable()
             .SetColumns(m => m.CallId == call.Id)
-            .Where(m => m.Id == callNo)
+            .Where(m => m.Id == orderCall.CallId)
             .ExecuteCommandAsync(cancellationToken);
 
         // 推省上
@@ -548,7 +540,7 @@ public abstract class DefaultCallApplication : ICallApplication
             Order = _orderRepository.GetAsync(orderId, cancellationToken).Adapt<OrderDto>(),
             TrCallRecordDto = call.Adapt<TrCallDto>()
         }, cancellationToken: cancellationToken);
-        _systemLogRepository.Add("延迟更新工单通话", orderId, $"原CallId: {callId}, 更新CallId: {call.Id}", status: 1);
+        _systemLogRepository.Add("延迟更新工单通话", orderId, $"原CallId: {orderCall.CallId}, 更新CallId: {call.Id}", status: 1);
     }
 
     /// <summary>

+ 1 - 2
src/Hotline/Orders/OrderVisitDomainService.cs

@@ -43,7 +43,6 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
     /// <returns></returns>
     public async Task UpdateSmsReplyAsync(MessageDto data)
     {
-        _logger.LogInformation($"UpdateSmsReplyAsync 收到通知: {data.ToJson()}");
         if (data.IsSmsReply == false || data.SmsReplyContent.IsNullOrEmpty()) return;
 
         var orderVisits = await _orderVisitRepository.Queryable()
@@ -51,7 +50,7 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
             .Where(m => m.Order.Contact == data.TelNumber)
             .Where(m => m.VisitState == EVisitState.SMSVisiting)
             .ToListAsync();
-
+            
         foreach (var orderVisit in orderVisits)
         {
             await UpdateSmsReplyAsync(orderVisit, data.SmsReplyContent!.Trim());

+ 1 - 2
src/Hotline/Push/FWMessage/PushDomainService.cs

@@ -130,7 +130,6 @@ public class PushDomainService : IPushDomainService, IScopeDependency
     /// <returns></returns>
     public async Task PushMsgUpdateStateAsync(PushReceiveMessageDto dto, CancellationToken cancellation)
     {
-        _logger.LogInformation("收到短信通知 PushMsgUpdateStateAsync");
         var data = await _messageRepository.GetAsync(p => p.Id == dto.ExternalId, cancellation);
         if (data != null)
         {
@@ -192,4 +191,4 @@ public class PushDomainService : IPushDomainService, IScopeDependency
         }
     }
     
-}
+}