2026-04-30 15:28:20 +08:00
|
|
|
|
using Prism.Events;
|
2026-04-28 10:23:58 +08:00
|
|
|
|
using YY.Admin.Core;
|
2026-04-30 15:28:20 +08:00
|
|
|
|
using YY.Admin.Core.Services;
|
2026-04-28 10:23:58 +08:00
|
|
|
|
using static YY.Admin.Core.SysUserEvents;
|
2026-04-30 15:28:20 +08:00
|
|
|
|
|
|
|
|
|
|
namespace YY.Admin.EventBus;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 本地用户事件订阅器:记录本地 CRUD 操作日志。
|
|
|
|
|
|
/// 注意:本地操作不触发 mirror pull(拉取会覆盖本地改动),
|
|
|
|
|
|
/// 后端→桌面的实时同步由 JeecgUserSyncCoordinator 统一负责。
|
|
|
|
|
|
/// 实现 ISingletonDependency 使其由程序集扫描自动注册为单例。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class SysUserEventSubscriber : IDisposable, ISingletonDependency
|
2026-04-28 10:23:58 +08:00
|
|
|
|
{
|
2026-04-30 15:28:20 +08:00
|
|
|
|
private readonly IEventAggregator _eventAggregator;
|
|
|
|
|
|
private readonly ILoggerService _logger;
|
|
|
|
|
|
private readonly List<SubscriptionToken> _subscriptions = new();
|
|
|
|
|
|
|
|
|
|
|
|
public SysUserEventSubscriber(
|
|
|
|
|
|
IEventAggregator eventAggregator,
|
|
|
|
|
|
ILoggerService logger)
|
2026-04-28 10:23:58 +08:00
|
|
|
|
{
|
2026-04-30 15:28:20 +08:00
|
|
|
|
_eventAggregator = eventAggregator;
|
|
|
|
|
|
_logger = logger;
|
|
|
|
|
|
SubscribeEvents();
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
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));
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
public void OnAddUser(SysUser payload)
|
|
|
|
|
|
{
|
|
|
|
|
|
_logger.Information($"[本地] 新增用户: {payload?.Account}");
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
public void OnRegisterUser(SysUser payload)
|
|
|
|
|
|
{
|
|
|
|
|
|
_logger.Information($"[本地] 用户注册: {payload?.Account}");
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
public void OnUpdateUser((SysUser Original, SysUser Updated) payload)
|
|
|
|
|
|
{
|
|
|
|
|
|
_logger.Information($"[本地] 修改用户: {payload.Updated?.Account}");
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
public void OnDeleteUser(SysUser payload)
|
|
|
|
|
|
{
|
|
|
|
|
|
_logger.Information($"[本地] 删除用户: {payload?.Account}");
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
public void OnSetUserStatus((SysUser User, StatusEnum NewStatus) payload)
|
|
|
|
|
|
{
|
|
|
|
|
|
_logger.Information($"[本地] 设置状态: {payload.User?.Account} → {payload.NewStatus}");
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
public void OnChangePwd(SysUser payload)
|
|
|
|
|
|
{
|
|
|
|
|
|
_logger.Information($"[本地] 修改密码: {payload?.Account}");
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
public void OnResetPwd(SysUser payload)
|
|
|
|
|
|
{
|
|
|
|
|
|
_logger.Information($"[本地] 重置密码: {payload?.Account}");
|
|
|
|
|
|
}
|
2026-04-28 10:23:58 +08:00
|
|
|
|
|
2026-04-30 15:28:20 +08:00
|
|
|
|
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)
|
2026-04-28 10:23:58 +08:00
|
|
|
|
{
|
2026-04-30 15:28:20 +08:00
|
|
|
|
token.Dispose();
|
2026-04-28 10:23:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|