feat: 租户审核领单与强制接管
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Tenants.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 租户入驻审核领取记录(防止多管理员并发审核)。
|
||||
/// </summary>
|
||||
public sealed class TenantReviewClaim : AuditableEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 被领取的租户 ID。
|
||||
/// </summary>
|
||||
public long TenantId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 领取人用户 ID。
|
||||
/// </summary>
|
||||
public long ClaimedBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 领取人名称(展示用快照)。
|
||||
/// </summary>
|
||||
public string ClaimedByName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 领取时间(UTC)。
|
||||
/// </summary>
|
||||
public DateTime ClaimedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 释放时间(UTC),未释放时为 null。
|
||||
/// </summary>
|
||||
public DateTime? ReleasedAt { get; set; }
|
||||
}
|
||||
@@ -38,5 +38,20 @@ public enum TenantAuditAction
|
||||
/// <summary>
|
||||
/// 租户状态变更(启用/停用/到期等)。
|
||||
/// </summary>
|
||||
StatusChanged = 7
|
||||
StatusChanged = 7,
|
||||
|
||||
/// <summary>
|
||||
/// 领取入驻审核。
|
||||
/// </summary>
|
||||
ReviewClaimed = 8,
|
||||
|
||||
/// <summary>
|
||||
/// 强制接管入驻审核。
|
||||
/// </summary>
|
||||
ReviewForceClaimed = 9,
|
||||
|
||||
/// <summary>
|
||||
/// 释放入驻审核(审核完成或手动释放)。
|
||||
/// </summary>
|
||||
ReviewClaimReleased = 10
|
||||
}
|
||||
|
||||
@@ -118,6 +118,38 @@ public interface ITenantRepository
|
||||
/// <returns>异步任务。</returns>
|
||||
Task UpsertVerificationProfileAsync(TenantVerificationProfile profile, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前审核领取信息(仅返回未释放的记录)。
|
||||
/// </summary>
|
||||
/// <param name="tenantId">租户 ID(雪花算法)。</param>
|
||||
/// <param name="cancellationToken">取消标记。</param>
|
||||
/// <returns>领取记录,未领取返回 null。</returns>
|
||||
Task<TenantReviewClaim?> GetActiveReviewClaimAsync(long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 查询当前审核领取信息(用于更新,返回可跟踪实体)。
|
||||
/// </summary>
|
||||
/// <param name="tenantId">租户 ID(雪花算法)。</param>
|
||||
/// <param name="cancellationToken">取消标记。</param>
|
||||
/// <returns>领取记录,未领取返回 null。</returns>
|
||||
Task<TenantReviewClaim?> FindActiveReviewClaimAsync(long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 新增审核领取记录。
|
||||
/// </summary>
|
||||
/// <param name="claim">领取记录。</param>
|
||||
/// <param name="auditLog">领取动作审计日志。</param>
|
||||
/// <param name="cancellationToken">取消标记。</param>
|
||||
/// <returns>新增成功返回 true;若已被其他人领取导致冲突则返回 false。</returns>
|
||||
Task<bool> TryAddReviewClaimAsync(TenantReviewClaim claim, TenantAuditLog auditLog, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 更新审核领取记录。
|
||||
/// </summary>
|
||||
/// <param name="claim">领取记录。</param>
|
||||
/// <param name="cancellationToken">取消标记。</param>
|
||||
Task UpdateReviewClaimAsync(TenantReviewClaim claim, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前订阅。
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user