From e429c291995f3f20184079e480031533ae5c03e6 Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期五, 18 九月 2026 17:24:28 +0800
Subject: [PATCH] refactor(全项目): 综合优化全端业务与修复各类问题
---
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveSessionAppService.java | 35 ++++++++++++++++++++++++++---------
1 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveSessionAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveSessionAppService.java
index b6f4aec..1add5bb 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveSessionAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveSessionAppService.java
@@ -388,26 +388,30 @@
* 解析同课程时间线下当前有效的直播中场次。
*/
private LiveSession resolveEffectiveLivingSession(List<LiveSession> sessions, LocalDateTime now) {
- LiveSession latestStartedSession = null;
+ LiveSession latestLivingSession = null;
for (LiveSession session : sessions) {
- if (session == null || session.getStartTime() == null || session.getStartTime().isAfter(now)) {
+ if (session == null || safeInt(session.getLiveStatus()) != 1) {
continue;
}
- if (latestStartedSession == null || compareTimelineSession(latestStartedSession, session) < 0) {
- latestStartedSession = session;
+ LocalDateTime timelineTime = resolveLivingTimelineTime(session);
+ if (timelineTime == null || timelineTime.isAfter(now)) {
+ continue;
+ }
+ if (latestLivingSession == null || compareTimelineSession(latestLivingSession, session) < 0) {
+ latestLivingSession = session;
}
}
- if (latestStartedSession == null || safeInt(latestStartedSession.getLiveStatus()) != 1) {
- return null;
- }
- return latestStartedSession;
+ return latestLivingSession;
}
/**
* 比较两场已开始场次在课程时间线中的先后,开始时间更晚者优先。
*/
private int compareTimelineSession(LiveSession left, LiveSession right) {
- int startTimeCompare = compareSessionTime(left == null ? null : left.getStartTime(), right == null ? null : right.getStartTime());
+ int startTimeCompare = compareSessionTime(
+ left == null ? null : resolveLivingTimelineTime(left),
+ right == null ? null : resolveLivingTimelineTime(right)
+ );
if (startTimeCompare != 0) {
return startTimeCompare;
}
@@ -426,6 +430,19 @@
}
/**
+ * 直播中场次优先按实际开播时间参与收敛,手动提前开播时不会再被计划开播时间误伤。
+ */
+ private LocalDateTime resolveLivingTimelineTime(LiveSession session) {
+ if (session == null) {
+ return null;
+ }
+ if (session.getActualStartTime() != null) {
+ return session.getActualStartTime();
+ }
+ return session.getStartTime();
+ }
+
+ /**
* 比较两个时间值,null 视为更早的时间。
*/
private int compareSessionTime(LocalDateTime left, LocalDateTime right) {
--
Gitblit v1.7.1