fix: 优化首页活动排序

This commit is contained in:
2026-09-11 15:18:20 +08:00
parent 52d5591d11
commit ccc29fee66
@@ -204,23 +204,24 @@ public class SysHomeController {
FROM sys_home_activity FROM sys_home_activity
WHERE enable = 1 WHERE enable = 1
ORDER BY ORDER BY
-- 第一优先级:活动状态分组(进行中 → 未开始 → 已结束) -- 第一优先级:活动状态分组(未开始 → 进行中 → 已结束)
CASE CASE
WHEN startDate <= NOW() AND NOW() <= endDate THEN 0 -- 进行中 WHEN startDate <= NOW() AND NOW() <= endDate THEN 1 -- 进行中
WHEN startDate > NOW() THEN 1 -- 未开始 WHEN startDate > NOW() THEN 0 -- 未开始
ELSE 2 -- 已结束 ELSE 2 -- 已结束
END ASC, END ASC,
-- 第二优先级:置顶(如果需要置顶在各自分组内生效) -- 第二优先级:进行中、未开始按开始时间升序,已结束按结束时间降序
top DESC,
-- 第三优先级:每组内按时间排序
-- 进行中:按开始时间升序(越早开始的越靠前)
-- 未开始:按开始时间升序(快开始的靠前)
-- 已结束:按结束时间降序(最近结束的靠前)或开始时间降序
CASE CASE
WHEN startDate <= NOW() AND NOW() <= endDate THEN startDate WHEN startDate <= NOW() AND NOW() <= endDate THEN startDate
WHEN startDate > NOW() THEN startDate WHEN startDate > NOW() THEN startDate
ELSE endDate ELSE NULL
END ASC; END ASC,
CASE
WHEN endDate < NOW() THEN endDate
ELSE NULL
END DESC,
-- 时间相同时置顶优先
top DESC;
"""); """);
List<NutMap> listMap = sysUserService.listMap(activitySql); List<NutMap> listMap = sysUserService.listMap(activitySql);
List<Sys_home_activity> list = listMap.stream() List<Sys_home_activity> list = listMap.stream()