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

108 lines
4.2 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 Prism.Events;
using YY.Admin.Core;
using YY.Admin.Core.Services;
using static YY.Admin.Core.SysUserEvents;
namespace YY.Admin.EventBus;
/// <summary>
/// 本地用户事件订阅器:记录本地 CRUD 操作日志。
/// 注意:本地操作不触发 mirror pull拉取会覆盖本地改动
/// 后端→桌面的实时同步由 JeecgUserSyncCoordinator 统一负责。
/// 实现 ISingletonDependency 使其由程序集扫描自动注册为单例。
/// </summary>
public class SysUserEventSubscriber : IDisposable, ISingletonDependency
{
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();
}
private void SubscribeEvents()
{
_subscriptions.Add(_eventAggregator.GetEvent<AddUserEvent>().Subscribe(OnAddUser, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<UpdateUserEvent>().Subscribe(OnUpdateUser, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<DeleteUserEvent>().Subscribe(OnDeleteUser, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<SetUserStatusEvent>().Subscribe(OnSetUserStatus, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<ChangePwdEvent>().Subscribe(OnChangePwd, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<ResetPwdEvent>().Subscribe(OnResetPwd, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<UnlockUserLoginEvent>().Subscribe(OnUnlockUserLogin, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<RegisterUserEvent>().Subscribe(OnRegisterUser, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<LoginUserEvent>().Subscribe(OnLoginUser, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<LoginOutEvent>().Subscribe(OnLoginOut, ThreadOption.BackgroundThread));
_subscriptions.Add(_eventAggregator.GetEvent<UpdateUserRoleEvent>().Subscribe(OnUpdateUserRole, ThreadOption.BackgroundThread));
}
public void OnAddUser(SysUser payload)
{
_logger.Information($"[本地] 新增用户: {payload?.Account}");
}
public void OnRegisterUser(SysUser payload)
{
_logger.Information($"[本地] 用户注册: {payload?.Account}");
}
public void OnUpdateUser((SysUser Original, SysUser Updated) payload)
{
_logger.Information($"[本地] 修改用户: {payload.Updated?.Account}");
}
public void OnDeleteUser(SysUser payload)
{
_logger.Information($"[本地] 删除用户: {payload?.Account}");
}
public void OnSetUserStatus((SysUser User, StatusEnum NewStatus) payload)
{
_logger.Information($"[本地] 设置状态: {payload.User?.Account} → {payload.NewStatus}");
}
public void OnChangePwd(SysUser payload)
{
_logger.Information($"[本地] 修改密码: {payload?.Account}");
}
public void OnResetPwd(SysUser payload)
{
_logger.Information($"[本地] 重置密码: {payload?.Account}");
}
public void OnUpdateUserRole((SysUser User, List<long> RoleIds) payload)
{
_logger.Information($"[本地] 更新角色: {payload.User?.Account}");
}
public void OnUnlockUserLogin(SysUser payload)
{
_logger.Information($"[本地] 解除锁定: {payload?.Account}");
}
public void OnLoginUser(SysUser payload)
{
_logger.Information($"[本地] 登录成功: {payload?.Account ?? "<null>"}");
}
public void OnLoginOut(SysUser payload)
{
// 勿抛异常Prism 事件总线上若此处抛错,可能影响同事件其它订阅者
_logger.Information($"[本地] 用户登出: {payload?.Account ?? "<null>"}");
}
public void Dispose()
{
foreach (var token in _subscriptions)
{
token.Dispose();
}
}
}