using System.ComponentModel.DataAnnotations; using Tiku.Application.Scoreline; namespace Tiku.Api.Contracts; /// /// 分数线查询参数。 /// public sealed class ScorelineQueryDto { /// /// 租户编码。 /// [StringLength(100)] public string? TenantCode { get; set; } /// /// 地区 ID。 /// public Guid? RegionId { get; set; } /// /// 院校 ID。 /// public Guid? SchoolId { get; set; } /// /// 专业 ID。 /// public Guid? MajorId { get; set; } /// /// 关键字。 /// [StringLength(100)] public string? Keyword { get; set; } /// /// 年份。 /// [Range(1900, 3000)] public int? Year { get; set; } /// /// 页码。 /// [Range(1, 10000)] public int? Page { get; set; } /// /// 每页数量。 /// [Range(1, 200)] public int? PageSize { get; set; } /// /// 返回数量上限。 /// [Range(1, 2000)] public int? Limit { get; set; } /// /// 版本化的不透明游标,仅用于游标分页接口。 /// [StringLength(2000)] public string? Cursor { get; set; } public ScorelineFilter ToFilter( Guid tenantId, IReadOnlyCollection? dynamicFilters = null) { return new ScorelineFilter( tenantId, RegionId, SchoolId, MajorId, Keyword, Year, Page, PageSize, Limit, dynamicFilters); } }