From d699da385dda6257677ee93bef47388c0635f64e Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 17 四月 2026 08:57:41 +0800
Subject: [PATCH] feat:APP个人中心
---
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/live/service/LiveSessionAppService.java | 43 +++++++++++++++++++++++++++++++++++--------
1 files changed, 35 insertions(+), 8 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 01f3633..ad28295 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
@@ -238,19 +238,22 @@
}
/**
+ * 定时任务将已到结束时间的直播中场次切换为已结束。
+ */
+ @Transactional
+ public LiveSessionStatusVO autoEnd(Long sessionId, LocalDateTime actualEndTime) {
+ LiveSession session = liveSessionMapper.selectById(sessionId);
+ LocalDateTime resolvedEndTime = actualEndTime == null ? LocalDateTime.now() : actualEndTime;
+ return markSessionEnded(session, resolvedEndTime, false);
+ }
+
+ /**
* 手动结束正在直播中的场次。
*/
@Transactional
public LiveSessionStatusVO end(Long courseId, Long sessionId) {
LiveSession s = requireSession(courseId, sessionId);
- if (s.getLiveStatus() == null || s.getLiveStatus() != 1) {
- throw new IllegalArgumentException("场次状态不允许结束");
- }
- s.setLiveStatus(2);
- s.setActualEndTime(LocalDateTime.now());
- liveSessionMapper.updateById(s);
- reconcileCourseLivingSessions(s.getLiveCourseId(), s.getActualEndTime());
- return new LiveSessionStatusVO(s.getId(), s.getLiveStatus(), null, s.getActualEndTime());
+ return markSessionEnded(s, LocalDateTime.now(), true);
}
/**
@@ -342,6 +345,30 @@
}
/**
+ * 执行直播中场次到已结束的公共状态迁移。
+ */
+ private LiveSessionStatusVO markSessionEnded(LiveSession session, LocalDateTime actualEndTime, boolean failWhenInvalid) {
+ if (session == null) {
+ if (failWhenInvalid) {
+ throw new IllegalArgumentException("场次不存在");
+ }
+ return null;
+ }
+ if (session.getLiveStatus() == null || session.getLiveStatus().intValue() != 1) {
+ if (failWhenInvalid) {
+ throw new IllegalArgumentException("场次状态不允许结束");
+ }
+ return null;
+ }
+ LocalDateTime resolvedEndTime = actualEndTime == null ? LocalDateTime.now() : actualEndTime;
+ session.setLiveStatus(2);
+ session.setActualEndTime(resolvedEndTime);
+ liveSessionMapper.updateById(session);
+ reconcileCourseLivingSessions(session.getLiveCourseId(), resolvedEndTime);
+ return new LiveSessionStatusVO(session.getId(), session.getLiveStatus(), session.getActualStartTime(), session.getActualEndTime());
+ }
+
+ /**
* 校验课程存在性。
*/
private LiveCourse requireCourse(Long courseId) {
--
Gitblit v1.7.1