diff --git a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java index 7dea3d5..02d5e1f 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java @@ -204,23 +204,24 @@ public class SysHomeController { FROM sys_home_activity WHERE enable = 1 ORDER BY - -- 第一优先级:活动状态分组(进行中 → 未开始 → 已结束) + -- 第一优先级:活动状态分组(未开始 → 进行中 → 已结束) CASE - WHEN startDate <= NOW() AND NOW() <= endDate THEN 0 -- 进行中 - WHEN startDate > NOW() THEN 1 -- 未开始 + WHEN startDate <= NOW() AND NOW() <= endDate THEN 1 -- 进行中 + WHEN startDate > NOW() THEN 0 -- 未开始 ELSE 2 -- 已结束 END ASC, - -- 第二优先级:置顶(如果需要置顶在各自分组内生效) - top DESC, - -- 第三优先级:每组内按时间排序 - -- 进行中:按开始时间升序(越早开始的越靠前) - -- 未开始:按开始时间升序(快开始的靠前) - -- 已结束:按结束时间降序(最近结束的靠前)或开始时间降序 + -- 第二优先级:进行中、未开始按开始时间升序,已结束按结束时间降序 CASE WHEN startDate <= NOW() AND NOW() <= endDate THEN startDate WHEN startDate > NOW() THEN startDate - ELSE endDate - END ASC; + ELSE NULL + END ASC, + CASE + WHEN endDate < NOW() THEN endDate + ELSE NULL + END DESC, + -- 时间相同时置顶优先 + top DESC; """); List listMap = sysUserService.listMap(activitySql); List list = listMap.stream()