Files
qhmes/yy-admin-master/YY.Admin/Subscriber/SysUserEventSubscriber.cs

164 lines
5.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YY.Admin.Core;
using static YY.Admin.Core.SysUserEvents;
using Prism.Events;
namespace YY.Admin.EventBus
{
public class SysUserEventSubscriber : IDisposable
{
private readonly IEventAggregator _eventAggregator;
private readonly ILoggerService _logger;
private readonly List<SubscriptionToken> _subscriptions = new();
public SysUserEventSubscriber(
IEventAggregator eventAggregator,
ILoggerService logger)
{
_eventAggregator = eventAggregator;
_logger = logger;
SubscribeEvents();
}
public void SubscribeEvents()
{
_eventAggregator.GetEvent<AddUserEvent>().Subscribe(OnAddUser, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<UpdateUserEvent>().Subscribe(OnUpdateUser, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<DeleteUserEvent>().Subscribe(OnDeleteUser, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<SetUserStatusEvent>().Subscribe(OnSetUserStatus, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<ChangePwdEvent>().Subscribe(OnChangePwd, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<ResetPwdEvent>().Subscribe(OnResetPwd, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<UnlockUserLoginEvent>().Subscribe(OnUnlockUserLogin, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<RegisterUserEvent>().Subscribe(OnRegisterUser, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<LoginUserEvent>().Subscribe(OnLoginUser, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<LoginOutEvent>().Subscribe(OnLoginOut, ThreadOption.BackgroundThread);
_eventAggregator.GetEvent<UpdateUserRoleEvent>().Subscribe(OnUpdateUserRole, ThreadOption.BackgroundThread);
}
public void OnAddUser(SysUser payload)
{
try
{
_logger.Information($"添加新用户: {payload.Account}");
}
catch (Exception ex)
{
_logger.Error($"添加用户事件处理失败: {ex.Message}", ex);
}
}
public void OnRegisterUser(SysUser payload)
{
try
{
Task.Run(() => {
});
_logger.Information($"用户注册");
}
catch (Exception ex)
{
_logger.Error($"注册用户事件处理失败: {ex.Message}", ex);
}
}
public void OnUpdateUser((SysUser Original, SysUser Updated) payload)
{
try
{
_logger.Information($"更新用户");
}
catch (Exception ex)
{
_logger.Error($"更新用户事件处理失败: {ex.Message}", ex);
}
}
public void OnDeleteUser(SysUser payload)
{
try
{
}
catch (Exception ex)
{
_logger.Error($"删除用户事件处理失败: {ex.Message}", ex);
}
}
public void OnSetUserStatus((SysUser User, StatusEnum NewStatus) payload)
{
try
{
}
catch (Exception ex)
{
_logger.Error($"设置用户状态事件处理失败: {ex.Message}", ex);
}
}
public void OnChangePwd(SysUser payload)
{
try
{
}
catch (Exception ex)
{
_logger.Error($"设置用户状态事件处理失败: {ex.Message}", ex);
}
}
public void OnUpdateUserRole((SysUser User, List<long> RoleIds) payload)
{
try
{
}
catch (Exception ex)
{
_logger.Error($"更新用户角色事件处理失败: {ex.Message}", ex);
}
}
public void OnUnlockUserLogin(SysUser payload)
{
try
{
}
catch (Exception ex)
{
_logger.Error($"解除登录锁定事件处理失败: {ex.Message}", ex);
}
}
public void OnResetPwd(SysUser payload)
{
throw new NotImplementedException();
}
public void OnLoginUser(SysUser payload)
{
try
{
_logger.Information($"登录成功");
}
catch (Exception ex)
{
_logger.Error($"登录处理失败: {ex.Message}", ex);
}
}
public void OnLoginOut(SysUser payload)
{
// 勿抛异常Prism 事件总线上若此处抛错,可能影响同事件其它订阅者(如主窗口释放与 WS 停止)
_logger.Information($"用户登出事件: {payload?.Account ?? "<null>"}");
}
public void Dispose()
{
// 显式取消所有订阅
foreach (var token in _subscriptions)
{
token.Dispose();
}
}
}
}