feat: 新增租户审核领取和审核日志接口
- 新增 TenantReviewClaim 和 TenantAuditLog 实体 - 新增 TenantAuditAction 枚举 - 新增审核领取相关接口:GET/POST /review/claim, /review/force-claim, /review/release - 新增审核日志接口:GET /audits - 更新 ITenantRepository 和 EfTenantRepository - 更新 TakeoutAppDbContext 添加 DbSet Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -69,6 +69,14 @@ public class TakeoutAppDbContext(
|
||||
/// </summary>
|
||||
public DbSet<TenantPayment> TenantPayments => Set<TenantPayment>();
|
||||
/// <summary>
|
||||
/// 租户审核领取记录。
|
||||
/// </summary>
|
||||
public DbSet<TenantReviewClaim> TenantReviewClaims => Set<TenantReviewClaim>();
|
||||
/// <summary>
|
||||
/// 租户审核日志。
|
||||
/// </summary>
|
||||
public DbSet<TenantAuditLog> TenantAuditLogs => Set<TenantAuditLog>();
|
||||
/// <summary>
|
||||
/// 商户实体。
|
||||
/// </summary>
|
||||
public DbSet<Merchant> Merchants => Set<Merchant>();
|
||||
|
||||
@@ -236,4 +236,54 @@ public sealed class EfTenantRepository(TakeoutAdminDbContext context) : ITenantR
|
||||
// 1. 保存变更
|
||||
return context.SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<TenantReviewClaim?> GetActiveReviewClaimAsync(long tenantId, CancellationToken cancellationToken = default)
|
||||
{
|
||||
// 1. 查询当前有效的审核领取记录(未释放的)
|
||||
return context.TenantReviewClaims
|
||||
.Where(c => c.TenantId == tenantId && c.ReleasedAt == null && c.DeletedAt == null)
|
||||
.OrderByDescending(c => c.ClaimedAt)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task AddReviewClaimAsync(TenantReviewClaim claim, CancellationToken cancellationToken = default)
|
||||
{
|
||||
// 1. 新增审核领取记录
|
||||
await context.TenantReviewClaims.AddAsync(claim, cancellationToken);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task AddAuditLogAsync(TenantAuditLog auditLog, CancellationToken cancellationToken = default)
|
||||
{
|
||||
// 1. 新增审核日志
|
||||
await context.TenantAuditLogs.AddAsync(auditLog, cancellationToken);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task<(IReadOnlyList<TenantAuditLog> Items, int TotalCount)> GetAuditLogsAsync(
|
||||
long tenantId,
|
||||
int page,
|
||||
int pageSize,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
// 1. 构建基础查询
|
||||
var query = context.TenantAuditLogs
|
||||
.AsNoTracking()
|
||||
.Where(a => a.TenantId == tenantId && a.DeletedAt == null);
|
||||
|
||||
// 2. 获取总数
|
||||
var totalCount = await query.CountAsync(cancellationToken);
|
||||
|
||||
// 3. 分页查询(按创建时间倒序)
|
||||
var items = await query
|
||||
.OrderByDescending(a => a.CreatedAt)
|
||||
.Skip((page - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
.ToListAsync(cancellationToken);
|
||||
|
||||
// 4. 返回结果
|
||||
return (items, totalCount);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user