清理代码
Some checks failed
ci / release-gate (push) Has been cancelled

This commit is contained in:
2026-08-03 12:31:39 +08:00
parent caea0062b0
commit c497a3ca8d
537 changed files with 14171 additions and 12503 deletions

View File

@@ -29,25 +29,26 @@ public sealed class QuestionBankQueryService(
var tenantItems = filter.Source == QuestionSource.Platform
? []
: await dbContext.QuestionBanks
.AsNoTracking()
.Where(bank =>
bank.TenantId == filter.TenantId &&
bank.Status == QuestionBankStatus.Active &&
(!filter.RegionId.HasValue || bank.RegionId == filter.RegionId.Value || bank.RegionId == null) &&
(string.IsNullOrWhiteSpace(filter.Keyword) || bank.Name.Contains(filter.Keyword.Trim())))
.OrderBy(bank => bank.Name)
.ThenBy(bank => bank.CreatedAt)
.Take(limit)
.Select(bank => new QuestionBankCatalogItem(
bank.Id,
bank.RegionId,
bank.Name,
QuestionSource.Tenant,
bank.Status,
bank.Metadata))
.ToArrayAsync(cancellationToken);
.AsNoTracking()
.Where(bank =>
bank.TenantId == filter.TenantId &&
bank.Status == QuestionBankStatus.Active &&
(!filter.RegionId.HasValue || bank.RegionId == filter.RegionId.Value || bank.RegionId == null) &&
(string.IsNullOrWhiteSpace(filter.Keyword) || bank.Name.Contains(filter.Keyword.Trim())))
.OrderBy(bank => bank.Name)
.ThenBy(bank => bank.CreatedAt)
.Take(limit)
.Select(bank => new QuestionBankCatalogItem(
bank.Id,
bank.RegionId,
bank.Name,
QuestionSource.Tenant,
bank.Status,
bank.Metadata))
.ToArrayAsync(cancellationToken);
var platformItems = filter.Source == QuestionSource.Tenant || !await CanAccessPlatformAsync(filter.TenantId, cancellationToken)
var platformItems = filter.Source == QuestionSource.Tenant ||
!await CanAccessPlatformAsync(filter.TenantId, cancellationToken)
? []
: await tenantExecutionScope.ExecuteAsync(
new SystemScopeRequest(
@@ -58,13 +59,15 @@ public sealed class QuestionBankQueryService(
var systemDbContext = provider.GetRequiredService<TikuDbContext>();
return await systemDbContext.QuestionBanks.AsNoTracking()
.Join(
systemDbContext.Tenants.AsNoTracking().Where(tenant => tenant.Mode == TenantMode.PlatformOwned),
systemDbContext.Tenants.AsNoTracking()
.Where(tenant => tenant.Mode == TenantMode.PlatformOwned),
bank => bank.TenantId,
tenant => tenant.Id,
(bank, tenant) => bank)
.Where(bank =>
bank.Status == QuestionBankStatus.Active &&
(!filter.RegionId.HasValue || bank.RegionId == filter.RegionId.Value || bank.RegionId == null) &&
(!filter.RegionId.HasValue || bank.RegionId == filter.RegionId.Value ||
bank.RegionId == null) &&
(string.IsNullOrWhiteSpace(filter.Keyword) || bank.Name.Contains(filter.Keyword.Trim())))
.OrderBy(bank => bank.Name)
.Take(limit)
@@ -100,7 +103,8 @@ public sealed class QuestionBankQueryService(
.Take(limit),
QuestionSource.Tenant)
.ToArrayAsync(cancellationToken);
var platformItems = filter.Source == QuestionSource.Tenant || !await CanAccessPlatformAsync(filter.TenantId, cancellationToken)
var platformItems = filter.Source == QuestionSource.Tenant ||
!await CanAccessPlatformAsync(filter.TenantId, cancellationToken)
? []
: await GetPlatformQuestionsAsync(filter, limit, cancellationToken);
return new CatalogList<QuestionCatalogItem>(tenantItems.Concat(platformItems).Take(limit).ToArray());
@@ -110,10 +114,7 @@ public sealed class QuestionBankQueryService(
QuestionBankFilter filter,
CancellationToken cancellationToken = default)
{
if (!filter.QuestionId.HasValue)
{
throw new QuestionBankRequiredFieldException("questionId is required.");
}
if (!filter.QuestionId.HasValue) throw new QuestionBankRequiredFieldException("questionId is required.");
var result = await GetQuestionsAsync(filter with { Limit = 2 }, cancellationToken);
return result.Items.SingleOrDefault()
@@ -124,15 +125,13 @@ public sealed class QuestionBankQueryService(
QuestionBankFilter filter,
CancellationToken cancellationToken = default)
{
if (!filter.QuestionId.HasValue)
{
throw new QuestionBankRequiredFieldException("questionId is required.");
}
if (!filter.QuestionId.HasValue) throw new QuestionBankRequiredFieldException("questionId is required.");
if (filter.Source == QuestionSource.Platform)
{
await accessPolicy.EnsureCanStartAsync(filter.TenantId, cancellationToken);
var platformItems = await GetPlatformVersionsAsync(filter.QuestionId.Value, filter.TenantId, cancellationToken);
var platformItems =
await GetPlatformVersionsAsync(filter.QuestionId.Value, filter.TenantId, cancellationToken);
return new CatalogList<QuestionVersionCatalogItem>(platformItems);
}
@@ -145,10 +144,7 @@ public sealed class QuestionBankQueryService(
question.Status == QuestionStatus.Published,
cancellationToken);
if (!questionExists)
{
throw new QuestionBankNotFoundException("Question was not found.");
}
if (!questionExists) throw new QuestionBankNotFoundException("Question was not found.");
var items = await dbContext.QuestionVersions
.AsNoTracking()
@@ -189,49 +185,28 @@ public sealed class QuestionBankQueryService(
query = query.Where(question => question.TenantId == filter.TenantId);
if (filter.QuestionBankId.HasValue)
{
query = query.Where(question => question.QuestionBankId == filter.QuestionBankId.Value);
}
if (filter.SubjectId.HasValue)
{
query = query.Where(question => question.SubjectId == filter.SubjectId.Value);
}
if (filter.SubjectId.HasValue) query = query.Where(question => question.SubjectId == filter.SubjectId.Value);
if (filter.CategoryId.HasValue)
{
query = query.Where(question => question.CategoryId == filter.CategoryId.Value);
}
if (filter.CategoryId.HasValue) query = query.Where(question => question.CategoryId == filter.CategoryId.Value);
if (filter.NodeId.HasValue)
{
query = query.Where(question => question.NodeId == filter.NodeId.Value);
}
if (filter.NodeId.HasValue) query = query.Where(question => question.NodeId == filter.NodeId.Value);
if (filter.EntryId.HasValue)
{
query = query.Where(question => question.EntryId == filter.EntryId.Value);
}
if (filter.EntryId.HasValue) query = query.Where(question => question.EntryId == filter.EntryId.Value);
if (filter.ContentNodeId.HasValue)
{
query = query.Where(question => question.ContentNodeId == filter.ContentNodeId.Value);
}
if (filter.CollectionId.HasValue)
{
query = query.Where(question =>
question.PrimaryCollectionId == filter.CollectionId.Value ||
dbContext.QuestionCollectionItems.Any(item =>
item.TenantId == question.TenantId &&
item.QuestionId == question.Id &&
item.CollectionId == filter.CollectionId.Value));
}
if (filter.QuestionIds?.Count > 0)
{
query = query.Where(question => filter.QuestionIds.Contains(question.Id));
}
if (filter.QuestionIds?.Count > 0) query = query.Where(question => filter.QuestionIds.Contains(question.Id));
if (!string.IsNullOrWhiteSpace(filter.Type))
{
@@ -259,10 +234,7 @@ public sealed class QuestionBankQueryService(
private static IQueryable<T> ApplyKeyword<T>(IQueryable<T> query, string? keyword)
where T : class
{
if (string.IsNullOrWhiteSpace(keyword))
{
return query;
}
if (string.IsNullOrWhiteSpace(keyword)) return query;
var trimmed = keyword.Trim();
return query.Where(entity => EF.Property<string>(entity, nameof(QuestionBank.Name)).Contains(trimmed));
@@ -357,7 +329,8 @@ public sealed class QuestionBankQueryService(
(!filter.NodeId.HasValue || question.NodeId == filter.NodeId.Value) &&
(!filter.EntryId.HasValue || question.EntryId == filter.EntryId.Value) &&
(!filter.ContentNodeId.HasValue || question.ContentNodeId == filter.ContentNodeId.Value) &&
(filter.QuestionIds == null || filter.QuestionIds.Count == 0 || filter.QuestionIds.Contains(question.Id)) &&
(filter.QuestionIds == null || filter.QuestionIds.Count == 0 ||
filter.QuestionIds.Contains(question.Id)) &&
(string.IsNullOrWhiteSpace(filter.Type) || question.Type == filter.Type.Trim()));
if (!string.IsNullOrWhiteSpace(filter.Keyword))
{
@@ -396,10 +369,7 @@ public sealed class QuestionBankQueryService(
tenant => tenant.Id,
(question, tenant) => new { question.TenantId, question.Id })
.SingleOrDefaultAsync(token);
if (platformQuestion is null)
{
throw new QuestionBankNotFoundException("Question was not found.");
}
if (platformQuestion is null) throw new QuestionBankNotFoundException("Question was not found.");
return await systemDbContext.QuestionVersions.AsNoTracking()
.Where(version =>
@@ -429,4 +399,4 @@ public sealed class QuestionBankQueryService(
{
return Math.Clamp(limit ?? defaultLimit, 1, maxLimit);
}
}
}