perf: 调整公告加载与排序逻辑,优化有效公告优先级展示

This commit is contained in:
ccnetcore
2026-01-07 20:10:42 +08:00
parent 55c17211d8
commit 00a9bd00e5

View File

@@ -53,13 +53,23 @@ public class AnnouncementService : ApplicationService, IAnnouncementService
/// </summary>
private async Task<AnnouncementCacheDto> LoadAnnouncementDataAsync()
{
// 查询所有公告日志,按日期降序排列
// 1⃣ 一次性查出全部公告(不排序)
var logs = await _announcementRepository._DbQueryable
.OrderByDescending(x => x.StartTime)
.ToListAsync();
var now = DateTime.Now;
// 2⃣ 内存中处理排序
var orderedLogs = logs
.OrderByDescending(x =>
x.StartTime <= now &&
(x.EndTime == null || x.EndTime >= now)
)
.ThenByDescending(x => x.StartTime)
.ToList();
// 转换为 DTO
var logDtos = logs.Adapt<List<AnnouncementLogDto>>();
var logDtos = orderedLogs.Adapt<List<AnnouncementLogDto>>();
return new AnnouncementCacheDto
{
Logs = logDtos