新增MES模块,包含供应商、客户、车辆和地磅数据记录管理功能,支持免密接口和数据同步。更新相关控制器、实体、服务和数据库配置,优化权限管理和数据字典支持,确保系统的灵活性和可扩展性。

This commit is contained in:
geht
2026-04-30 15:28:20 +08:00
parent 142a0bdaba
commit b03cbeff9b
121 changed files with 10540 additions and 424 deletions

View File

@@ -1,163 +1,107 @@
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
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
{
public class SysUserEventSubscriber : IDisposable
private readonly IEventAggregator _eventAggregator;
private readonly ILoggerService _logger;
private readonly List<SubscriptionToken> _subscriptions = new();
public SysUserEventSubscriber(
IEventAggregator eventAggregator,
ILoggerService logger)
{
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);
}
_eventAggregator = eventAggregator;
_logger = logger;
SubscribeEvents();
}
public void OnAddUser(SysUser payload)
{
try
{
_logger.Information($"添加新用户: {payload.Account}");
}
catch (Exception ex)
{
_logger.Error($"添加用户事件处理失败: {ex.Message}", ex);
}
}
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 OnRegisterUser(SysUser payload)
{
try
{
Task.Run(() => {
});
_logger.Information($"用户注册");
}
catch (Exception ex)
{
_logger.Error($"注册用户事件处理失败: {ex.Message}", ex);
}
}
public void OnAddUser(SysUser payload)
{
_logger.Information($"[本地] 新增用户: {payload?.Account}");
}
public void OnUpdateUser((SysUser Original, SysUser Updated) payload)
{
try
{
_logger.Information($"更新用户");
}
catch (Exception ex)
{
_logger.Error($"更新用户事件处理失败: {ex.Message}", ex);
}
}
public void OnRegisterUser(SysUser payload)
{
_logger.Information($"[本地] 用户注册: {payload?.Account}");
}
public void OnDeleteUser(SysUser payload)
{
try
{
}
catch (Exception ex)
{
_logger.Error($"删除用户事件处理失败: {ex.Message}", ex);
}
}
public void OnUpdateUser((SysUser Original, SysUser Updated) payload)
{
_logger.Information($"[本地] 修改用户: {payload.Updated?.Account}");
}
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 OnDeleteUser(SysUser payload)
{
_logger.Information($"[本地] 删除用户: {payload?.Account}");
}
public void OnUnlockUserLogin(SysUser payload)
{
try
{
}
catch (Exception ex)
{
_logger.Error($"解除登录锁定事件处理失败: {ex.Message}", ex);
}
}
public void OnSetUserStatus((SysUser User, StatusEnum NewStatus) payload)
{
_logger.Information($"[本地] 设置状态: {payload.User?.Account} → {payload.NewStatus}");
}
public void OnResetPwd(SysUser payload)
{
throw new NotImplementedException();
}
public void OnChangePwd(SysUser payload)
{
_logger.Information($"[本地] 修改密码: {payload?.Account}");
}
public void OnLoginUser(SysUser payload)
{
try
{
_logger.Information($"登录成功");
}
catch (Exception ex)
{
_logger.Error($"登录处理失败: {ex.Message}", ex);
}
}
public void OnResetPwd(SysUser payload)
{
_logger.Information($"[本地] 重置密码: {payload?.Account}");
}
public void OnLoginOut(SysUser payload)
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)
{
// 勿抛异常Prism 事件总线上若此处抛错,可能影响同事件其它订阅者(如主窗口释放与 WS 停止)
_logger.Information($"用户登出事件: {payload?.Account ?? "<null>"}");
}
public void Dispose()
{
// 显式取消所有订阅
foreach (var token in _subscriptions)
{
token.Dispose();
}
token.Dispose();
}
}
}