Bläddra i källkod

修复通话记录逻辑错误

qinchaoyue 6 månader sedan
förälder
incheckning
eda7c9cdfb

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

@@ -71,8 +71,8 @@ public abstract class DefaultCallApplication : ICallApplication
     public virtual async Task<IReadOnlyList<TelDto>> QueryTelsAsync(CancellationToken cancellationToken)
     {
         return _mapper.Map<IReadOnlyList<TelDto>>(await _telRepository.Queryable()
-	        .Includes(x => x.Groups)
-	        .ToListAsync(cancellationToken)) ;
+            .Includes(x => x.Groups)
+            .ToListAsync(cancellationToken));
     }
 
     /// <summary>
@@ -203,7 +203,7 @@ public abstract class DefaultCallApplication : ICallApplication
     /// </summary>
     public virtual async Task<IReadOnlyList<CallNativeDto>> QueryCallsFixedAsync(QueryCallsFixedDto dto, CancellationToken cancellationToken)
     {
-        return await _callNativeRepository.Queryable(includeDeleted: true)
+        var query = _callNativeRepository.Queryable(includeDeleted: true)
             .LeftJoin<Order>((d, o) => d.Id == o.CallId)
             .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), (d, o) => o.No == dto.OrderNo)
             .WhereIF(!string.IsNullOrEmpty(dto.FromNo), d => d.FromNo == dto.FromNo)
@@ -217,16 +217,20 @@ public abstract class DefaultCallApplication : ICallApplication
             .WhereIF(dto.Direction != null, d => d.Direction == dto.Direction)
             .WhereIF(dto.WaitDurationStart != null && dto.WaitDurationStart > 0, d => d.WaitDuration >= dto.WaitDurationStart)
             .WhereIF(dto.WaitDurationEnd != null && dto.WaitDurationEnd > 0, d => d.WaitDuration <= dto.WaitDurationEnd)
-            .WhereIF(dto.IsMissOrder != null && dto.IsMissOrder.Value == true, (d, o) => o.Id == null )
-            .WhereIF(dto.IsMissOrder != null && dto.IsMissOrder.Value == false, (d, o) => o.Id != null )
-            .OrderByDescending(d => d.Id)
-            .Select((d, o) => new CallNativeDto
-            {
-                OrderId = o.Id,
-                OrderNo = o.No,
-                Title = o.Title,
-            }, true)
-            .ToFixedListAsync(dto, cancellationToken);
+            .WhereIF(dto.IsMissOrder != null && dto.IsMissOrder.Value == true, (d, o) => string.IsNullOrEmpty(o.Id) == true)
+            .WhereIF(dto.IsMissOrder != null && dto.IsMissOrder.Value == false, (d, o) => string.IsNullOrEmpty(o.Id) == false)
+            .OrderByDescending(d => d.Id);
+
+        query = query.WhereIF(dto.Type == 3, (d, o) => d.AnsweredTime == null);
+        query = query.WhereIF(dto.Type == 1, (d, o) => d.Direction == ECallDirection.In);
+        query = query.WhereIF(dto.Type == 2, (d, o) => d.Direction == ECallDirection.Out);
+        return await query.Select((d, o) => new CallNativeDto
+        {
+            OrderId = o.Id,
+            OrderNo = o.No,
+            Title = o.Title,
+        }, true)
+        .ToFixedListAsync(dto, cancellationToken);
     }
 
     /// <summary>
@@ -294,7 +298,7 @@ public abstract class DefaultCallApplication : ICallApplication
     public virtual async Task<CallNative> GetCallAsync(string callId, CancellationToken cancellationToken)
     {
         if (string.IsNullOrEmpty(callId)) return null;
-        return await _callNativeRepository.GetAsync(callId,cancellationToken);
+        return await _callNativeRepository.GetAsync(callId, cancellationToken);
     }
 
     /// <summary>
@@ -303,9 +307,9 @@ public abstract class DefaultCallApplication : ICallApplication
     /// <param name="callId"></param>
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
-    public virtual async Task<List<CallNative>> GetCallListAsync(string callId,CancellationToken cancellationToken)
+    public virtual async Task<List<CallNative>> GetCallListAsync(string callId, CancellationToken cancellationToken)
     {
-        if(string.IsNullOrEmpty(callId)) return null;
+        if (string.IsNullOrEmpty(callId)) return null;
         return await _callNativeRepository.Queryable().Where(x => x.Id == callId).ToListAsync(cancellationToken);
     }
 

+ 8 - 0
src/Hotline.Share/Dtos/CallCenter/QueryCallsFixedDto.cs

@@ -56,5 +56,13 @@ namespace Hotline.Share.Dtos.CallCenter
         /// true: 无订单; false: 有订单
         /// </summary>
         public bool? IsMissOrder { get; set; }
+
+        /// <summary>
+        /// 呼入类型
+        /// 1: 呼入
+        /// 2: 呼出
+        /// 3: 未接
+        /// </summary>
+        public int Type { get; set; }
     }
 }