|
@@ -1,4 +1,5 @@
|
|
|
-using Hotline.Article;
|
|
|
+using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
+using Hotline.Article;
|
|
|
using Hotline.Caching.Interfaces;
|
|
|
using Hotline.Caching.Services;
|
|
|
using Hotline.Realtimes;
|
|
@@ -18,17 +19,20 @@ public class RealtimeService : IRealtimeService, IScopeDependency
|
|
|
private readonly IRealtimeCacheManager _realtimeCacheManager;
|
|
|
private readonly IRepository<CircularRecord> _circularRecordRepository;
|
|
|
private readonly IRepository<User> _userRepository;
|
|
|
+ private readonly IRepository<NotificationWaitSend> _notificationWaitSendRepository;
|
|
|
|
|
|
public RealtimeService(
|
|
|
IHubContext<HotlineHub> hubContext,
|
|
|
IRealtimeCacheManager realtimeCacheManager,
|
|
|
IRepository<CircularRecord> circularRecordRepository,
|
|
|
- IRepository<User> userRepository)
|
|
|
+ IRepository<User> userRepository,
|
|
|
+ IRepository<NotificationWaitSend> notificationWaitSendRepository)
|
|
|
{
|
|
|
_hubContext = hubContext;
|
|
|
_realtimeCacheManager = realtimeCacheManager;
|
|
|
_circularRecordRepository = circularRecordRepository;
|
|
|
_userRepository = userRepository;
|
|
|
+ _notificationWaitSendRepository = notificationWaitSendRepository;
|
|
|
}
|
|
|
|
|
|
#region 通讯通知
|
|
@@ -123,14 +127,34 @@ public class RealtimeService : IRealtimeService, IScopeDependency
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 工单补充消息通知
|
|
|
+ /// 工单补充消息通知
|
|
|
/// </summary>
|
|
|
/// <param name="userId"></param>
|
|
|
/// <param name="msg"></param>
|
|
|
/// <param name="cancellationToken"></param>
|
|
|
/// <returns></returns>
|
|
|
- public Task OrderComplementAsync(string userId, string msg, CancellationToken cancellationToken) =>
|
|
|
- SendToUserAsync(userId, RealtimeMethods.OrderComplementRecord, msg, cancellationToken);
|
|
|
+ public async Task OrderComplementAsync(string userId, string msg, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+ var connection = await _realtimeCacheManager.GetConnectionOtherAsync(userId, cancellationToken);
|
|
|
+ if (connection == null)
|
|
|
+ {
|
|
|
+ //如果没有建立链接,写入数据库
|
|
|
+ NotificationWaitSend notificationWait = new NotificationWaitSend()
|
|
|
+ {
|
|
|
+ UserId = userId,
|
|
|
+ Msg = msg,
|
|
|
+ Method = RealtimeMethods.OrderComplementRecord,
|
|
|
+ State = "0"
|
|
|
+ };
|
|
|
+ await _notificationWaitSendRepository.AddAsync(notificationWait, cancellationToken);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //如果建立了链接直接发消息
|
|
|
+ await _hubContext.Clients.Client(connection.ConnectionId).SendAsync(RealtimeMethods.OrderComplementRecord, msg, cancellationToken);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
#region 系统信息通知
|
|
|
|
|
@@ -162,7 +186,7 @@ public class RealtimeService : IRealtimeService, IScopeDependency
|
|
|
{
|
|
|
await SendToUserAsync(user.Id, RealtimeMethods.CircularRecord,
|
|
|
new CircularRecoordDto()
|
|
|
- { CircularType = Share.Enums.Article.ECircularType.Org, Count = record.RecordCount },
|
|
|
+ { CircularType = Share.Enums.Article.ECircularType.Org, Count = record.RecordCount },
|
|
|
cancellationToken);
|
|
|
}
|
|
|
catch
|
|
@@ -176,37 +200,37 @@ public class RealtimeService : IRealtimeService, IScopeDependency
|
|
|
|
|
|
#region 大屏.数据展示
|
|
|
|
|
|
- public Task BsDataShowChanged1Async(object obj, CancellationToken cancellationToken) =>
|
|
|
+ public Task BsDataShowChanged1Async(object obj, CancellationToken cancellationToken) =>
|
|
|
SendToGroupAsync(RealtimeGroupNames.BigScreenDataShow, RealtimeMethods.BsDataShowArea1, obj, cancellationToken);
|
|
|
- public Task BsDataShowChanged2Async(object obj, CancellationToken cancellationToken) =>
|
|
|
+ public Task BsDataShowChanged2Async(object obj, CancellationToken cancellationToken) =>
|
|
|
SendToGroupAsync(RealtimeGroupNames.BigScreenDataShow, RealtimeMethods.BsDataShowArea2, obj, cancellationToken);
|
|
|
- public Task BsDataShowChanged3Async(object obj, CancellationToken cancellationToken) =>
|
|
|
+ public Task BsDataShowChanged3Async(object obj, CancellationToken cancellationToken) =>
|
|
|
SendToGroupAsync(RealtimeGroupNames.BigScreenDataShow, RealtimeMethods.BsDataShowArea3, obj, cancellationToken);
|
|
|
- public Task BsDataShowChanged4Async(object obj, CancellationToken cancellationToken) =>
|
|
|
+ public Task BsDataShowChanged4Async(object obj, CancellationToken cancellationToken) =>
|
|
|
SendToGroupAsync(RealtimeGroupNames.BigScreenDataShow, RealtimeMethods.BsDataShowArea4, obj, cancellationToken);
|
|
|
- public Task BsDataShowChanged5Async(object obj, CancellationToken cancellationToken) =>
|
|
|
+ public Task BsDataShowChanged5Async(object obj, CancellationToken cancellationToken) =>
|
|
|
SendToGroupAsync(RealtimeGroupNames.BigScreenDataShow, RealtimeMethods.BsDataShowArea5, obj, cancellationToken);
|
|
|
- public Task BsDataShowChanged6Async(object obj, CancellationToken cancellationToken) =>
|
|
|
+ public Task BsDataShowChanged6Async(object obj, CancellationToken cancellationToken) =>
|
|
|
SendToGroupAsync(RealtimeGroupNames.BigScreenDataShow, RealtimeMethods.BsDataShowArea6, obj, cancellationToken);
|
|
|
- public Task BsDataShowChanged7Async(object obj, CancellationToken cancellationToken) =>
|
|
|
+ public Task BsDataShowChanged7Async(object obj, CancellationToken cancellationToken) =>
|
|
|
SendToGroupAsync(RealtimeGroupNames.BigScreenDataShow, RealtimeMethods.BsDataShowArea7, obj, cancellationToken);
|
|
|
- public Task BsDataShowChanged8Async(object obj, CancellationToken cancellationToken) =>
|
|
|
+ public Task BsDataShowChanged8Async(object obj, CancellationToken cancellationToken) =>
|
|
|
SendToGroupAsync(RealtimeGroupNames.BigScreenDataShow, RealtimeMethods.BsDataShowArea8, obj, cancellationToken);
|
|
|
|
|
|
- #endregion
|
|
|
+ #endregion
|
|
|
|
|
|
- #region 大屏坐席数据
|
|
|
- public Task BsSeatStateDataShowChangedAsync1(object obj, CancellationToken cancellationToken) =>
|
|
|
- SendToGroupAsync(RealtimeGroupNames.BigScreenSeatState, RealtimeMethods.BsSeatStateDataShowArea1, obj, cancellationToken);
|
|
|
+ #region 大屏坐席数据
|
|
|
+ public Task BsSeatStateDataShowChangedAsync1(object obj, CancellationToken cancellationToken) =>
|
|
|
+ SendToGroupAsync(RealtimeGroupNames.BigScreenSeatState, RealtimeMethods.BsSeatStateDataShowArea1, obj, cancellationToken);
|
|
|
|
|
|
- public Task BsSeatStateDataShowChangedAsync2(object obj, CancellationToken cancellationToken) =>
|
|
|
- SendToGroupAsync(RealtimeGroupNames.BigScreenSeatState, RealtimeMethods.BsSeatStateDataShowArea2, obj, cancellationToken);
|
|
|
+ public Task BsSeatStateDataShowChangedAsync2(object obj, CancellationToken cancellationToken) =>
|
|
|
+ SendToGroupAsync(RealtimeGroupNames.BigScreenSeatState, RealtimeMethods.BsSeatStateDataShowArea2, obj, cancellationToken);
|
|
|
|
|
|
- public Task BsSeatStateDataShowChangedAsync3(object obj, CancellationToken cancellationToken) =>
|
|
|
- SendToGroupAsync(RealtimeGroupNames.BigScreenSeatState, RealtimeMethods.BsSeatStateDataShowArea3, obj, cancellationToken);
|
|
|
+ public Task BsSeatStateDataShowChangedAsync3(object obj, CancellationToken cancellationToken) =>
|
|
|
+ SendToGroupAsync(RealtimeGroupNames.BigScreenSeatState, RealtimeMethods.BsSeatStateDataShowArea3, obj, cancellationToken);
|
|
|
|
|
|
- public Task BsSeatStateDataShowChangedAsync4(object obj, CancellationToken cancellationToken) =>
|
|
|
- SendToGroupAsync(RealtimeGroupNames.BigScreenSeatState, RealtimeMethods.BsSeatStateDataShowArea4, obj, cancellationToken);
|
|
|
+ public Task BsSeatStateDataShowChangedAsync4(object obj, CancellationToken cancellationToken) =>
|
|
|
+ SendToGroupAsync(RealtimeGroupNames.BigScreenSeatState, RealtimeMethods.BsSeatStateDataShowArea4, obj, cancellationToken);
|
|
|
#endregion
|
|
|
|
|
|
#region 数据大屏
|
|
@@ -227,7 +251,7 @@ public class RealtimeService : IRealtimeService, IScopeDependency
|
|
|
/// <param name="cancellationToken"></param>
|
|
|
/// <returns></returns>
|
|
|
public Task OrderHandlingDetailAsync(object obj, CancellationToken cancellationToken) =>
|
|
|
- SendToGroupAsync(RealtimeGroupNames.BigDataScreen, RealtimeMethods.OrderHandlingDetail,obj, cancellationToken);
|
|
|
+ SendToGroupAsync(RealtimeGroupNames.BigDataScreen, RealtimeMethods.OrderHandlingDetail, obj, cancellationToken);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 推送二次办理中工单概览
|
|
@@ -292,6 +316,6 @@ public class RealtimeService : IRealtimeService, IScopeDependency
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
}
|