75 lines
2.6 KiB
C#
75 lines
2.6 KiB
C#
using YY.Admin.Core.Services;
|
||
using YY.Admin.Core.Sync;
|
||
|
||
namespace YY.Admin.Infrastructure.Sync;
|
||
|
||
/// <summary>
|
||
/// 将桌面用户 CRUD 写入 Outbox,通过 /sys/sync/batch 反同步到 Jeecg 后端。
|
||
/// 断网时自动持久化,联网后续传。
|
||
/// </summary>
|
||
public sealed class UserSyncOutbox : IUserSyncOutbox
|
||
{
|
||
private readonly OutboxProcessor _outboxProcessor;
|
||
|
||
public UserSyncOutbox(OutboxProcessor outboxProcessor)
|
||
{
|
||
_outboxProcessor = outboxProcessor;
|
||
}
|
||
|
||
public Task EnqueueCreateAsync(
|
||
string userId, string account, string? realName, int? sex, DateTime? birthday, string? phone, string? email, int status, string? updateBy,
|
||
CancellationToken cancellationToken = default)
|
||
{
|
||
return _outboxProcessor.EnqueueAsync(
|
||
SysUserSyncOutbox.AggregateType,
|
||
userId,
|
||
SysUserSyncOutbox.EventCreate,
|
||
new { userId, account, realName, sex, birthday, phone, email, status, updateBy },
|
||
cancellationToken);
|
||
}
|
||
|
||
public Task EnqueueUpdateAsync(
|
||
string userId, string account, string? realName, int? sex, DateTime? birthday, string? phone, string? email, int status, string? updateBy,
|
||
CancellationToken cancellationToken = default)
|
||
{
|
||
return _outboxProcessor.EnqueueAsync(
|
||
SysUserSyncOutbox.AggregateType,
|
||
userId,
|
||
SysUserSyncOutbox.EventUpdate,
|
||
new { userId, account, realName, sex, birthday, phone, email, status, updateBy },
|
||
cancellationToken);
|
||
}
|
||
|
||
public Task EnqueueToggleStatusAsync(
|
||
string userId, int status, string? updateBy,
|
||
CancellationToken cancellationToken = default)
|
||
{
|
||
return _outboxProcessor.EnqueueAsync(
|
||
SysUserSyncOutbox.AggregateType,
|
||
userId,
|
||
SysUserSyncOutbox.EventToggleStatus,
|
||
new { userId, status, updateBy },
|
||
cancellationToken);
|
||
}
|
||
|
||
public Task EnqueueDeleteAsync(string userId, CancellationToken cancellationToken = default)
|
||
{
|
||
return _outboxProcessor.EnqueueAsync(
|
||
SysUserSyncOutbox.AggregateType,
|
||
userId,
|
||
SysUserSyncOutbox.EventDelete,
|
||
new { userId },
|
||
cancellationToken);
|
||
}
|
||
|
||
public Task EnqueueBatchDeleteAsync(IReadOnlyList<string> userIds, CancellationToken cancellationToken = default)
|
||
{
|
||
return _outboxProcessor.EnqueueAsync(
|
||
SysUserSyncOutbox.AggregateType,
|
||
string.Join(",", userIds),
|
||
SysUserSyncOutbox.EventBatchDelete,
|
||
new { userIds },
|
||
cancellationToken);
|
||
}
|
||
}
|