dss 2 gadi atpakaļ
vecāks
revīzija
b5545814c2

+ 2 - 2
src/CallCenter.Api/Realtimes/RealtimeService.cs

@@ -74,7 +74,7 @@ namespace CallCenter.Api.Realtimes
         /// <param name="count"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        public async Task CallQueueAsync(CancellationToken cancellationToken)
+        public async Task CallQueueAsync(int count,CancellationToken cancellationToken)
         {
             var works = _userCacheManager.GetWorks();
             if (works!=null)
@@ -82,7 +82,7 @@ namespace CallCenter.Api.Realtimes
                 var sendlist = works.Where(x => x.SignalRId != null && x.SignalRId != "").Select(x => x.SignalRId).ToList();
                 foreach (var item in sendlist)
                 {
-                    await _hubContext.Clients.Client(item).SendAsync(RealtimeMethods.CallQueue, new { count = 1 }, cancellationToken);
+                    await _hubContext.Clients.Client(item).SendAsync(RealtimeMethods.CallQueue, new { count = count }, cancellationToken);
                 }
             }
         }

+ 11 - 1
src/CallCenter.CacheManager/CallQueueManager.cs

@@ -13,6 +13,7 @@ namespace CallCenter.CacheManager
     public class CallQueueManager : BackgroundService
     {
         private readonly IServiceScopeFactory _serviceScopeFactory;
+        private const string CallKey = "CallQueue";
 
         public CallQueueManager(IServiceScopeFactory serviceScopeFactory)
         {
@@ -26,12 +27,21 @@ namespace CallCenter.CacheManager
             var userCacheManager = _serviceScopeFactory.CreateScope().ServiceProvider.GetService<IUserCacheManager>();
             //消息通知注入
             var realtimeService = _serviceScopeFactory.CreateScope().ServiceProvider.GetService<IRealtimeService>();
+            //CallQueue缓存注入
+            var callQueueManager = _serviceScopeFactory.CreateScope().ServiceProvider.GetService<ICallCacheManager>();
 
             var time = TimeSpan.FromSeconds(1);
             while (!cancellationToken.IsCancellationRequested)
             {
+                //查询当前队列
+                var callList = callQueueManager.GetCallQueueList();
+                int count = 0;
+                if (callList!=null)
+                {
+                    count = callList.Count;
+                }
                 //通知
-                await realtimeService.CallQueueAsync(cancellationToken);
+                await realtimeService.CallQueueAsync(count, cancellationToken);
                 await Task.Delay(time, cancellationToken);
             }
 

+ 1 - 1
src/CallCenter/Realtimes/IRealtimeService.cs

@@ -15,7 +15,7 @@ namespace CallCenter.Realtimes
 
         Task ByeAsync(string userId, ByeDto dto, CancellationToken cancellationToken);
 
-        Task CallQueueAsync(CancellationToken cancellationToken);
+        Task CallQueueAsync(int count,CancellationToken cancellationToken);
 
         Task AlertAsync(string userId, AlertDto dto, CancellationToken cancellationToken);