Files
qhmes/yy-admin-master/YY.Admin/Infrastructure/Sync/UserSyncOutbox.cs

75 lines
2.6 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 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);
}
}