fix: 平台端查询租户订阅与套餐不再受租户过滤影响

This commit is contained in:
2025-12-15 10:00:31 +08:00
parent f6e7fa2f4a
commit f54d4cf405
3 changed files with 19273 additions and 9 deletions

View File

@@ -170,8 +170,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep
public Task<TenantVerificationProfile?> GetVerificationProfileAsync(long tenantId, CancellationToken cancellationToken = default)
{
return context.TenantVerificationProfiles
.IgnoreQueryFilters()
.AsNoTracking()
.FirstOrDefaultAsync(x => x.TenantId == tenantId, cancellationToken);
.FirstOrDefaultAsync(x => x.DeletedAt == null && x.TenantId == tenantId, cancellationToken);
}
/// <inheritdoc />
@@ -187,8 +188,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep
// 2. 批量查询实名资料
return await context.TenantVerificationProfiles
.IgnoreQueryFilters()
.AsNoTracking()
.Where(x => tenantIds.Contains(x.TenantId))
.Where(x => x.DeletedAt == null && tenantIds.Contains(x.TenantId))
.ToListAsync(cancellationToken);
}
@@ -197,7 +199,8 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep
{
// 1. 查询现有实名资料
var existing = await context.TenantVerificationProfiles
.FirstOrDefaultAsync(x => x.TenantId == profile.TenantId, cancellationToken);
.IgnoreQueryFilters()
.FirstOrDefaultAsync(x => x.DeletedAt == null && x.TenantId == profile.TenantId, cancellationToken);
if (existing == null)
{
@@ -215,8 +218,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep
public Task<TenantSubscription?> GetActiveSubscriptionAsync(long tenantId, CancellationToken cancellationToken = default)
{
return context.TenantSubscriptions
.IgnoreQueryFilters()
.AsNoTracking()
.Where(x => x.TenantId == tenantId)
.Where(x => x.DeletedAt == null && x.TenantId == tenantId)
.OrderByDescending(x => x.EffectiveTo)
.FirstOrDefaultAsync(cancellationToken);
}
@@ -234,8 +238,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep
// 2. 批量查询订阅数据
return await context.TenantSubscriptions
.IgnoreQueryFilters()
.AsNoTracking()
.Where(x => tenantIds.Contains(x.TenantId))
.Where(x => x.DeletedAt == null && tenantIds.Contains(x.TenantId))
.OrderByDescending(x => x.EffectiveTo)
.ToListAsync(cancellationToken);
}
@@ -244,7 +249,10 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep
public Task<TenantSubscription?> FindSubscriptionByIdAsync(long tenantId, long subscriptionId, CancellationToken cancellationToken = default)
{
return context.TenantSubscriptions
.FirstOrDefaultAsync(x => x.TenantId == tenantId && x.Id == subscriptionId, cancellationToken);
.IgnoreQueryFilters()
.FirstOrDefaultAsync(
x => x.DeletedAt == null && x.TenantId == tenantId && x.Id == subscriptionId,
cancellationToken);
}
/// <inheritdoc />
@@ -270,8 +278,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep
public async Task<IReadOnlyList<TenantSubscriptionHistory>> GetSubscriptionHistoryAsync(long tenantId, CancellationToken cancellationToken = default)
{
return await context.TenantSubscriptionHistories
.IgnoreQueryFilters()
.AsNoTracking()
.Where(x => x.TenantId == tenantId)
.Where(x => x.DeletedAt == null && x.TenantId == tenantId)
.OrderByDescending(x => x.EffectiveFrom)
.ToListAsync(cancellationToken);
}
@@ -286,8 +295,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep
public async Task<IReadOnlyList<TenantAuditLog>> GetAuditLogsAsync(long tenantId, CancellationToken cancellationToken = default)
{
return await context.TenantAuditLogs
.IgnoreQueryFilters()
.AsNoTracking()
.Where(x => x.TenantId == tenantId)
.Where(x => x.DeletedAt == null && x.TenantId == tenantId)
.OrderByDescending(x => x.CreatedAt)
.ToListAsync(cancellationToken);
}