From fb33ef7ea01af3e59178b8437f3ecf8d76b2b32c Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期三, 23 九月 2026 14:52:45 +0800
Subject: [PATCH] fix: 修复直播时间精度问题并更新APP与H5配置
---
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveSessionAppService.java | 8 +++++---
1 files changed, 5 insertions(+), 3 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 1add5bb..8029317 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
@@ -323,8 +323,10 @@
return null;
}
+ // DATETIME 仅保存秒;写库前截断,避免进位后被误判为未来开播并立即结束。
+ LocalDateTime persistedStartTime = actualStartTime.withNano(0);
// 使用带状态条件的更新语句保证人工开播与定时开播并发时仍然幂等。
- int affected = liveSessionMapper.markLivingIfPending(session.getId(), actualStartTime);
+ int affected = liveSessionMapper.markLivingIfPending(session.getId(), persistedStartTime);
if (affected <= 0) {
if (failWhenInvalid) {
throw new IllegalArgumentException("场次状态不允许开播");
@@ -332,12 +334,12 @@
return null;
}
- reconcileCourseLivingSessions(session.getLiveCourseId(), actualStartTime);
+ reconcileCourseLivingSessions(session.getLiveCourseId(), persistedStartTime);
LiveSession startedSession = liveSessionMapper.selectById(session.getId());
if (startedSession == null) {
session.setLiveStatus(1);
if (session.getActualStartTime() == null) {
- session.setActualStartTime(actualStartTime);
+ session.setActualStartTime(persistedStartTime);
}
return new LiveSessionStatusVO(session.getId(), session.getLiveStatus(), session.getActualStartTime(), session.getActualEndTime());
}
--
Gitblit v1.7.1