|
@@ -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>
|