perf: 调整公告加载与排序逻辑,优化有效公告优先级展示
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user