dss 2 年之前
父節點
當前提交
deba9cbefc

+ 8 - 2
src/CallCenter.Application/Handlers/FlowControl/ByeVisitorOffNotificationHandler.cs

@@ -1,4 +1,5 @@
-using CallCenter.Calls;
+using CallCenter.Caches;
+using CallCenter.Calls;
 using CallCenter.Share.Enums;
 using CallCenter.Share.Notifications;
 using MediatR;
@@ -9,11 +10,13 @@ namespace CallCenter.Application.Handlers
     {
         private readonly ICallRepository _callRepository;
         private readonly ICallDetailRepository _callDetailRepository;
+        private readonly ICallCacheManager _callCacheManager;
 
-        public ByeVisitorOffNotificationHandler(ICallRepository callRepository, ICallDetailRepository callDetailRepository)
+        public ByeVisitorOffNotificationHandler(ICallRepository callRepository, ICallDetailRepository callDetailRepository,ICallCacheManager callCacheManager)
         {
             _callRepository = callRepository;
             _callDetailRepository = callDetailRepository;
+            _callCacheManager = callCacheManager;
         }
 
         public async Task Handle(ByeVisitorOffNotification notification, CancellationToken cancellationToken)
@@ -39,6 +42,9 @@ namespace CallCenter.Application.Handlers
                     Recording = notification.Recording,
                 };
                 await _callDetailRepository.AddAsync(detail, cancellationToken);
+
+                //处理队列记录
+                _callCacheManager.RemoveCallCache(model.Id);
             }
         }
     }

+ 3 - 3
src/CallCenter.Application/Handlers/FlowControl/CdrNotificationHandler.cs

@@ -66,7 +66,7 @@ namespace CallCenter.Application.Handlers
 
                 await _callRecordRepository.AddAsync(model,cancellationToken);
 
-                var ishave = await _callDetailRepository.AnyAsync(x => x.EventName == "ALERT" && x.OMCallId == notification.CallId && x.FromNo == notification.CPN && x.ToNo == notification.CDPN);
+                var ishave = await _callDetailRepository.AnyAsync(x => x.EventName == "INCOMING" && x.OMCallId == notification.CallId && x.FromNo == notification.CPN && x.ToNo == notification.CDPN);
 
                 if (ishave)
                 {
@@ -87,7 +87,7 @@ namespace CallCenter.Application.Handlers
                         if (callDto.Direction == ECallDirection.In)
                         {
                             callDto.Answered = call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWER")?.AnswerNo ?? call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWERED")?.AnswerNo ?? "";
-                            callDto.OnTime = call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWER")?.CreationTime ?? call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWERED")?.CreationTime;
+                            callDto.OnTime = call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWER")?.CreationTime ?? call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWERED")?.CreationTime ?? null;
                             callDto.OnState = call.CallDetails?.Any(x => x.EventName == "ANSWER" || x.EventName == "ANSWERED") == true ? EOnState.On : EOnState.NoOn;
                         }
                         else
@@ -96,7 +96,7 @@ namespace CallCenter.Application.Handlers
                             //callDto.OnTime = call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWERED")?.CreationTime;
                             //callDto.OnState = call.CallDetails?.Any(x => x.EventName == "ANSWERED") == true ? EOnState.On : EOnState.NoOn;
                             callDto.Answered = call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWER")?.AnswerNo ?? call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWERED")?.AnswerNo ?? "";
-                            callDto.OnTime = call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWER")?.CreationTime ?? call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWERED")?.CreationTime;
+                            callDto.OnTime = call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWER")?.CreationTime ?? call.CallDetails?.FirstOrDefault(x => x.EventName == "ANSWERED")?.CreationTime ?? null;
                             callDto.OnState = call.CallDetails?.Any(x => x.EventName == "ANSWER" || x.EventName == "ANSWERED") == true ? EOnState.On : EOnState.NoOn;
                         }
                         callDto.BeginTime = call.CreationTime;