AppNotifier.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. using Abp;
  2. using Abp.Dependency;
  3. using Abp.Notifications;
  4. using VberZero.BaseSystem.Users;
  5. using VberZero.DomainService.Notifications.Data;
  6. namespace VberZero.DomainService.Notifications;
  7. public class AppNotifier : IAppNotifier, ITransientDependency
  8. {
  9. protected INotificationPublisher NotificationPublisher { get; }
  10. protected INotificationSubscriptionManager NotificationSubscriptionManager { get; }
  11. public AppNotifier(INotificationPublisher notificationPublisher, INotificationSubscriptionManager notificationSubscriptionManager)
  12. {
  13. NotificationPublisher = notificationPublisher;
  14. NotificationSubscriptionManager = notificationSubscriptionManager;
  15. }
  16. public async Task WelcomeToSystemAsync(User user)
  17. {
  18. await NotificationPublisher.PublishAsync(
  19. VzNotificationNames.WelcomeMsg, new MessageNotificationData("欢迎登陆"), severity: NotificationSeverity.Success,
  20. userIds: new[] { user.ToUserIdentifier() });
  21. }
  22. /// <summary>
  23. /// 发送给指定用户消息(info)
  24. /// </summary>
  25. /// <param name="user"></param>
  26. /// <param name="message"></param>
  27. /// <returns></returns>
  28. public async Task SendMsgAsync(User user, string message)
  29. {
  30. await SendMsgAsync(user, message, NotificationSeverity.Info);
  31. }
  32. /// <summary>
  33. /// 发送给指定用户消息
  34. /// </summary>
  35. /// <param name="user"></param>
  36. /// <param name="message"></param>
  37. /// <param name="severity"></param>
  38. /// <returns></returns>
  39. public async Task SendMsgAsync(User user, string message, NotificationSeverity severity)
  40. {
  41. await NotificationPublisher.PublishAsync(
  42. VzNotificationNames.SystemMessage,
  43. new MessageNotificationData(message), severity: severity, userIds: new[] { user.ToUserIdentifier() });
  44. }
  45. /// <summary>
  46. /// 发送某种消息给订阅用户(Info)
  47. /// </summary>
  48. /// <param name="msgName">消息唯一名称</param>
  49. /// <param name="message"></param>
  50. /// <returns></returns>
  51. public async Task SendMsgAsync(string msgName, string message)
  52. {
  53. await SendMsgAsync(msgName, message, NotificationSeverity.Info);
  54. }
  55. /// <summary>
  56. /// 发送某种消息给订阅用户
  57. /// </summary>
  58. /// <param name="msgName">消息唯一名称</param>
  59. /// <param name="message"></param>
  60. /// <param name="severity"></param>
  61. /// <returns></returns>
  62. public async Task SendMsgAsync(string msgName, string message, NotificationSeverity severity)
  63. {
  64. await NotificationPublisher.PublishAsync(msgName, new MessageNotificationData(message), severity: severity);
  65. }
  66. /// <summary>
  67. /// 发送某种消息给指定用户(带发送人)
  68. /// </summary>
  69. /// <param name="user"></param>
  70. /// <param name="msgName"></param>
  71. /// <param name="data"></param>
  72. /// <param name="severity"></param>
  73. /// <returns></returns>
  74. public async Task SendMessageAsync(User user, string msgName, SendMsgNotificationData data,
  75. NotificationSeverity severity)
  76. {
  77. await NotificationPublisher.PublishAsync(msgName, data, severity: severity, userIds: new[] { user.ToUserIdentifier() });
  78. }
  79. /// <summary>
  80. /// 发送某种消息给订阅用户(带发送人)
  81. /// </summary>
  82. /// <param name="msgName"></param>
  83. /// <param name="data"></param>
  84. /// <param name="severity"></param>
  85. /// <returns></returns>
  86. public async Task SendMessageAsync(string msgName, SendMsgNotificationData data, NotificationSeverity severity)
  87. {
  88. await NotificationPublisher.PublishAsync(msgName, data, severity: severity);
  89. }
  90. /// <summary>
  91. /// 订阅消息
  92. /// </summary>
  93. /// <param name="user"></param>
  94. /// <returns></returns>
  95. public async Task SubscriptionNotifications(User user)
  96. {
  97. foreach (var name in VzNotificationNames.CanBeSubscriptionName)
  98. {
  99. await NotificationSubscriptionManager.SubscribeAsync(user.ToUserIdentifier(), name);
  100. }
  101. }
  102. public async Task SendMessageAsync(UserIdentifier user, string message, NotificationSeverity severity = NotificationSeverity.Info)
  103. {
  104. await NotificationPublisher.PublishAsync(
  105. VzNotificationNames.SystemMessage,
  106. new MessageNotificationData(message),
  107. severity: severity,
  108. userIds: new[] { user });
  109. }
  110. /// <summary>
  111. /// 发送日程消息给订阅用户
  112. /// </summary>
  113. /// <param name="user"></param>
  114. /// <param name="data"></param>
  115. /// <param name="severity"></param>
  116. /// <returns></returns>
  117. public async Task SendCalendarNotifyAsync(User user, CalendarNotificationData data, NotificationSeverity severity = NotificationSeverity.Info)
  118. {
  119. await NotificationPublisher.PublishAsync("CalendarNotification", data, severity: severity, userIds: new[] { user.ToUserIdentifier() });
  120. }
  121. /// <summary>
  122. /// 发送流程审批通知
  123. /// </summary>
  124. /// <param name="user"></param>
  125. /// <param name="data"></param>
  126. /// <param name="severity"></param>
  127. /// <returns></returns>
  128. public async Task SendWorkflowAuditNotifyAsync(User user, WorkflowAuditNotificationData data, NotificationSeverity severity = NotificationSeverity.Info)
  129. {
  130. await SendWorkflowAuditNotifyAsync(user.Id, user.TenantId, data, severity);
  131. }
  132. /// <summary>
  133. /// 发送流程审批通知
  134. /// </summary>
  135. /// <param name="tenantId"></param>
  136. /// <param name="data"></param>
  137. /// <param name="severity"></param>
  138. /// <param name="userId"></param>
  139. /// <returns></returns>
  140. public async Task SendWorkflowAuditNotifyAsync(long userId, int? tenantId, WorkflowAuditNotificationData data, NotificationSeverity severity = NotificationSeverity.Info)
  141. {
  142. await NotificationPublisher.PublishAsync("WorkflowAuditNotification", data, severity: severity, userIds: new[] { new UserIdentifier(tenantId, userId) });
  143. }
  144. }