perf: 调整公告加载与排序逻辑,优化有效公告优先级展示
This commit is contained in:
@@ -53,13 +53,23 @@ public class AnnouncementService : ApplicationService, IAnnouncementService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private async Task<AnnouncementCacheDto> LoadAnnouncementDataAsync()
|
private async Task<AnnouncementCacheDto> LoadAnnouncementDataAsync()
|
||||||
{
|
{
|
||||||
// 查询所有公告日志,按日期降序排列
|
// 1️⃣ 一次性查出全部公告(不排序)
|
||||||
var logs = await _announcementRepository._DbQueryable
|
var logs = await _announcementRepository._DbQueryable
|
||||||
.OrderByDescending(x => x.StartTime)
|
|
||||||
.ToListAsync();
|
.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
|
// 转换为 DTO
|
||||||
var logDtos = logs.Adapt<List<AnnouncementLogDto>>();
|
var logDtos = orderedLogs.Adapt<List<AnnouncementLogDto>>();
|
||||||
return new AnnouncementCacheDto
|
return new AnnouncementCacheDto
|
||||||
{
|
{
|
||||||
Logs = logDtos
|
Logs = logDtos
|
||||||
|
|||||||
Reference in New Issue
Block a user