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) });
}
}