using Abp; using Abp.Dependency; using Abp.Notifications; using VberZero.BaseSystem.Users; using VberZero.DomainService.Notifications.Data; namespace VberZero.DomainService.Notifications; public class AppNotifier : IAppNotifier, ITransientDependency { protected INotificationPublisher NotificationPublisher { get; } protected INotificationSubscriptionManager NotificationSubscriptionManager { get; } public AppNotifier(INotificationPublisher notificationPublisher, INotificationSubscriptionManager notificationSubscriptionManager) { NotificationPublisher = notificationPublisher; NotificationSubscriptionManager = notificationSubscriptionManager; } public async Task WelcomeToSystemAsync(User user) { await NotificationPublisher.PublishAsync( VzNotificationNames.WelcomeMsg, new MessageNotificationData("欢迎登陆"), severity: NotificationSeverity.Success, userIds: new[] { user.ToUserIdentifier() }); } /// /// 发送给指定用户消息(info) /// /// /// /// public async Task SendMsgAsync(User user, string message) { await SendMsgAsync(user, message, NotificationSeverity.Info); } /// /// 发送给指定用户消息 /// /// /// /// /// public async Task SendMsgAsync(User user, string message, NotificationSeverity severity) { await NotificationPublisher.PublishAsync( VzNotificationNames.SystemMessage, new MessageNotificationData(message), severity: severity, userIds: new[] { user.ToUserIdentifier() }); } /// /// 发送某种消息给订阅用户(Info) /// /// 消息唯一名称 /// /// public async Task SendMsgAsync(string msgName, string message) { await SendMsgAsync(msgName, message, NotificationSeverity.Info); } /// /// 发送某种消息给订阅用户 /// /// 消息唯一名称 /// /// /// public async Task SendMsgAsync(string msgName, string message, NotificationSeverity severity) { await NotificationPublisher.PublishAsync(msgName, new MessageNotificationData(message), severity: severity); } /// /// 发送某种消息给指定用户(带发送人) /// /// /// /// /// /// public async Task SendMessageAsync(User user, string msgName, SendMsgNotificationData data, NotificationSeverity severity) { await NotificationPublisher.PublishAsync(msgName, data, severity: severity, userIds: new[] { user.ToUserIdentifier() }); } /// /// 发送某种消息给订阅用户(带发送人) /// /// /// /// /// public async Task SendMessageAsync(string msgName, SendMsgNotificationData data, NotificationSeverity severity) { await NotificationPublisher.PublishAsync(msgName, data, severity: severity); } /// /// 订阅消息 /// /// /// public async Task SubscriptionNotifications(User user) { foreach (var name in VzNotificationNames.CanBeSubscriptionName) { await NotificationSubscriptionManager.SubscribeAsync(user.ToUserIdentifier(), name); } } public async Task SendMessageAsync(UserIdentifier user, string message, NotificationSeverity severity = NotificationSeverity.Info) { await NotificationPublisher.PublishAsync( VzNotificationNames.SystemMessage, new MessageNotificationData(message), severity: severity, userIds: new[] { user }); } /// /// 发送日程消息给订阅用户 /// /// /// /// /// public async Task SendCalendarNotifyAsync(User user, CalendarNotificationData data, NotificationSeverity severity = NotificationSeverity.Info) { await NotificationPublisher.PublishAsync("CalendarNotification", data, severity: severity, userIds: new[] { user.ToUserIdentifier() }); } /// /// 发送流程审批通知 /// /// /// /// /// public async Task SendWorkflowAuditNotifyAsync(User user, WorkflowAuditNotificationData data, NotificationSeverity severity = NotificationSeverity.Info) { await SendWorkflowAuditNotifyAsync(user.Id, user.TenantId, data, severity); } /// /// 发送流程审批通知 /// /// /// /// /// /// public async Task SendWorkflowAuditNotifyAsync(long userId, int? tenantId, WorkflowAuditNotificationData data, NotificationSeverity severity = NotificationSeverity.Info) { await NotificationPublisher.PublishAsync("WorkflowAuditNotification", data, severity: severity, userIds: new[] { new UserIdentifier(tenantId, userId) }); } }