perf: optimize authorization scoreline and workers

This commit is contained in:
2026-07-30 09:12:27 +08:00
parent 4bea745b79
commit bedc77bffd
52 changed files with 21911 additions and 347 deletions

View File

@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OutputCaching;
using Microsoft.EntityFrameworkCore;
using Tiku.Api.Contracts;
using Tiku.Application.Catalog;
@@ -24,6 +25,7 @@ public sealed class ScorelineController(
private static readonly string[] DynamicPrefixes = ["field.", "min.", "max."];
[HttpGet("fields")]
[OutputCache(PolicyName = "TenantPublic")]
[EndpointSummary("查询分数线字段配置")]
[ProducesResponseType<CatalogList<ScorelineFieldItem>>(StatusCodes.Status200OK)]
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
@@ -49,6 +51,20 @@ public sealed class ScorelineController(
cancellationToken));
}
[HttpGet("records/cursor")]
[EndpointSummary("游标分页查询分数线记录")]
[ProducesResponseType<ScorelineRecordCursorPage>(StatusCodes.Status200OK)]
[ProducesResponseType<ProblemDetails>(StatusCodes.Status400BadRequest)]
public async Task<ActionResult<ScorelineRecordCursorPage>> GetRecordsCursor(
[FromQuery] ScorelineQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await scorelineQueryService.GetRecordsCursorAsync(
query.ToFilter(await ResolveTenantIdAsync(query, cancellationToken), ResolveDynamicFilters()),
query.Cursor,
cancellationToken));
}
[HttpGet("trend")]
[EndpointSummary("查询历年分数线趋势")]
[ProducesResponseType<CatalogList<ScorelineRecordItem>>(StatusCodes.Status200OK)]
@@ -63,6 +79,7 @@ public sealed class ScorelineController(
}
[HttpGet("years")]
[OutputCache(PolicyName = "TenantPublic")]
[EndpointSummary("查询分数线可用年份")]
[ProducesResponseType<CatalogList<int>>(StatusCodes.Status200OK)]
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]