feat: add scoreline dynamic records

This commit is contained in:
xiong
2026-07-26 18:30:15 +08:00
parent fcf70db8aa
commit 5715869d29
19 changed files with 17069 additions and 13 deletions

View File

@@ -0,0 +1,60 @@
using System.Text.Json;
using Tiku.Application.Catalog;
namespace Tiku.Application.Scoreline;
public sealed record ScorelineFilter(
Guid TenantId,
Guid? RegionId = null,
Guid? SchoolId = null,
Guid? MajorId = null,
string? Keyword = null,
int? Year = null,
int? Page = null,
int? PageSize = null,
int? Limit = null,
IReadOnlyCollection<ScorelineDynamicFilter>? DynamicFilters = null);
public sealed record ScorelineDynamicFilter(string Operator, string FieldKey, string Value);
public sealed record ScorelineFieldItem(
Guid Id,
string? LegacyId,
Guid? RegionId,
string FieldKey,
string FieldName,
string FieldType,
string? Unit,
bool IsFilter,
bool IsRequired,
bool IsVisible,
bool IsTrend,
JsonElement Options,
string? Placeholder,
string? Description,
int SortOrder);
public sealed record ScorelineRecordItem(
Guid Id,
string? LegacyId,
Guid? RegionId,
Guid? SchoolId,
Guid? MajorId,
int Year,
string? SchoolName,
string? MajorName,
JsonElement FieldValues);
public sealed record ScorelineRecordPage(
int Page,
int PageSize,
int Total,
IReadOnlyCollection<ScorelineRecordItem> Items);
public interface IScorelineQueryService
{
Task<CatalogList<ScorelineFieldItem>> GetFieldsAsync(ScorelineFilter filter, CancellationToken cancellationToken = default);
Task<ScorelineRecordPage> GetRecordsAsync(ScorelineFilter filter, CancellationToken cancellationToken = default);
Task<CatalogList<ScorelineRecordItem>> GetTrendAsync(ScorelineFilter filter, CancellationToken cancellationToken = default);
Task<CatalogList<int>> GetYearsAsync(ScorelineFilter filter, CancellationToken cancellationToken = default);
}