|
@@ -82,64 +82,105 @@ namespace Hotline.Application.Jobs
|
|
if (!occupyCalls.Any()) return;
|
|
if (!occupyCalls.Any()) return;
|
|
try
|
|
try
|
|
{
|
|
{
|
|
- var calls = _mapper.Map<List<CallNative>>(occupyCalls);
|
|
|
|
- //填充user信息
|
|
|
|
- var staffNos = calls.Select(d => d.StaffNo).ToList();
|
|
|
|
- var users = await _userRepository.Queryable()
|
|
|
|
- .Where(d => staffNos.Contains(d.StaffNo) && d.StaffNo != "0")
|
|
|
|
- .ToListAsync(context.CancellationToken);
|
|
|
|
-
|
|
|
|
- foreach (var call in calls)
|
|
|
|
|
|
+ if (occupyCalls.Any(m => m.UserData.IsNullOrEmpty() == true))
|
|
{
|
|
{
|
|
- call.Id = await GetCallIdAsync(call.CallNo, context.CancellationToken);
|
|
|
|
- var user = users.FirstOrDefault(d => d.StaffNo == call.StaffNo && d.StaffNo != "0");
|
|
|
|
- if (user is not null)
|
|
|
|
|
|
+ var calls = _mapper.Map<List<CallNative>>(occupyCalls);
|
|
|
|
+ //填充user信息
|
|
|
|
+ var staffNos = calls.Select(d => d.StaffNo).ToList();
|
|
|
|
+ var users = await _userRepository.Queryable()
|
|
|
|
+ .Where(d => staffNos.Contains(d.StaffNo) && d.StaffNo != "0")
|
|
|
|
+ .ToListAsync(context.CancellationToken);
|
|
|
|
+
|
|
|
|
+ foreach (var call in calls)
|
|
{
|
|
{
|
|
- call.UserId = user.Id;
|
|
|
|
- call.UserName = user.Name;
|
|
|
|
- }
|
|
|
|
|
|
+ call.Id = await GetCallIdAsync(call.CallNo, context.CancellationToken);
|
|
|
|
+ var user = users.FirstOrDefault(d => d.StaffNo == call.StaffNo && d.StaffNo != "0");
|
|
|
|
+ if (user is not null)
|
|
|
|
+ {
|
|
|
|
+ call.UserId = user.Id;
|
|
|
|
+ call.UserName = user.Name;
|
|
|
|
+ }
|
|
|
|
|
|
- if (call.RingDuration == 0)
|
|
|
|
- {
|
|
|
|
- if (call.BeginRingTime != null)
|
|
|
|
|
|
+ if (call.RingDuration == 0)
|
|
{
|
|
{
|
|
- if (call.EndRingTime != null)
|
|
|
|
|
|
+ if (call.BeginRingTime != null)
|
|
{
|
|
{
|
|
- call.RingDuration = call.EndRingTime.Value.GetDifferenceSeconds(call.BeginRingTime.Value);
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- call.RingDuration = call.EndTime.GetDifferenceSeconds(call.BeginRingTime.Value);
|
|
|
|
|
|
+ if (call.EndRingTime != null)
|
|
|
|
+ {
|
|
|
|
+ call.RingDuration = call.EndRingTime.Value.GetDifferenceSeconds(call.BeginRingTime.Value);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ call.RingDuration = call.EndTime.GetDifferenceSeconds(call.BeginRingTime.Value);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if (call.GroupId == "0" && call.CallState != ECallState.IVRNoAccept)
|
|
|
|
+ {
|
|
|
|
+ call.CallState = ECallState.Invalid;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- if (call.GroupId == "0" && call.CallState != ECallState.IVRNoAccept)
|
|
|
|
|
|
+ await _callRepository.AddRangeAsync(calls, context.CancellationToken);
|
|
|
|
+
|
|
|
|
+ // 开关
|
|
|
|
+ var unPushTime = _systemSettingCacheManager.CallSyncUnPushDateTime;
|
|
|
|
+ calls = calls.Where(m => m.BeginIvrTime >= unPushTime).ToList();
|
|
|
|
+ if (calls.Any())
|
|
{
|
|
{
|
|
- call.CallState = ECallState.Invalid;
|
|
|
|
|
|
+ //推省上
|
|
|
|
+ await _capPublisher.PublishAsync(EventNames.HotlineCallAdd, calls.Adapt<List<CallNativeDto>>());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ var calls = new List<CallNative>();
|
|
|
|
|
|
- await _callRepository.AddRangeAsync(calls, context.CancellationToken);
|
|
|
|
|
|
+ foreach (var occupyCall in occupyCalls)
|
|
|
|
+ {
|
|
|
|
+ var call = occupyCall.Adapt<CallNative>();
|
|
|
|
+ call.Id = await GetCallIdAsync(call.CallNo, context.CancellationToken);
|
|
|
|
+ var userSplit = occupyCall.UserData.Split(':');
|
|
|
|
+ call.UserId = userSplit[0];
|
|
|
|
+ call.UserName = userSplit[1];
|
|
|
|
|
|
- // 开关
|
|
|
|
- var unPushTime = _systemSettingCacheManager.CallSyncUnPushDateTime;
|
|
|
|
- calls = calls.Where(m => m.BeginIvrTime >= unPushTime).ToList();
|
|
|
|
- if (calls.Any())
|
|
|
|
- {
|
|
|
|
- //推省上
|
|
|
|
- await _capPublisher.PublishAsync(EventNames.HotlineCallAdd, calls.Adapt<List<CallNativeDto>>());
|
|
|
|
|
|
+ if (call.RingDuration == 0)
|
|
|
|
+ {
|
|
|
|
+ if (call.BeginRingTime != null)
|
|
|
|
+ {
|
|
|
|
+ if (call.EndRingTime != null)
|
|
|
|
+ {
|
|
|
|
+ call.RingDuration = call.EndRingTime.Value.GetDifferenceSeconds(call.BeginRingTime.Value);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ call.RingDuration = call.EndTime.GetDifferenceSeconds(call.BeginRingTime.Value);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (call.GroupId == "0" && call.CallState != ECallState.IVRNoAccept)
|
|
|
|
+ {
|
|
|
|
+ call.CallState = ECallState.Invalid;
|
|
|
|
+ }
|
|
|
|
+ calls.Add(call);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ await _callRepository.AddRangeAsync(calls, context.CancellationToken);
|
|
|
|
+
|
|
|
|
+ // 开关
|
|
|
|
+ var unPushTime = _systemSettingCacheManager.CallSyncUnPushDateTime;
|
|
|
|
+ calls = calls.Where(m => m.BeginIvrTime >= unPushTime).ToList();
|
|
|
|
+ if (calls.Any())
|
|
|
|
+ {
|
|
|
|
+ //推省上
|
|
|
|
+ await _capPublisher.PublishAsync(EventNames.HotlineCallAdd, calls.Adapt<List<CallNativeDto>>());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- ////todo
|
|
|
|
- //var callIns = calls.Where(d => d.Direction == ECallDirection.In).ToList();
|
|
|
|
- //if (callIns.Any())
|
|
|
|
- //{
|
|
|
|
- // await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineCallAdd, callIns);
|
|
|
|
- //}
|
|
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
catch (Exception e)
|
|
{
|
|
{
|
|
- //Console.WriteLine(e);
|
|
|
|
_logger.LogError($"获取通话记录异常:{e.Message} \n {e.StackTrace}");
|
|
_logger.LogError($"获取通话记录异常:{e.Message} \n {e.StackTrace}");
|
|
foreach (var occupyCall in occupyCalls)
|
|
foreach (var occupyCall in occupyCalls)
|
|
{
|
|
{
|