feat: 租户审核领单与强制接管

This commit is contained in:
2025-12-15 10:40:50 +08:00
parent f54d4cf405
commit 2339775fcb
21 changed files with 7519 additions and 2 deletions

View File

@@ -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; }
}

View File

@@ -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
}

View File

@@ -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>