视频保存

This commit is contained in:
duoaohui
2026-05-19 11:41:06 +08:00
parent b088865d40
commit 651443cdc4

View File

@@ -370,7 +370,29 @@ func (s *MeetingRecordingService) ForceStopByAdmin(ctx context.Context, recordin
logs.Info(ctx, funcName, "管理员强制结束录制", logs.Info(ctx, funcName, "管理员强制结束录制",
zap.Int64("recording_id", rec.ID), zap.String("room_code", rec.RoomCode)) zap.Int64("recording_id", rec.ID), zap.String("room_code", rec.RoomCode))
return s.StopRecording(ctx, room.HostID, rec.RoomCode, rec.ID) stopped, stopErr := s.StopRecording(ctx, room.HostID, rec.RoomCode, rec.ID)
if stopErr == nil {
return stopped, nil
}
// admin 强制结束的语义是"让录制脱离 recording 状态",而 StopRecording 内部
// 在 media-server stop / MinIO 上传失败时已经调过 markFailedAndBroadcast
// DB 此刻多半已经是 failed或 ready极端竞态。这种情况下应吞掉错误返回最新记录
// 否则 admin 会看到 500 但 UI 刷新发现录制已成终态,体验割裂。
latest, lookupErr := s.recordingDAO.GetByID(ctx, recordingID)
if lookupErr != nil {
logs.Warn(ctx, funcName, "StopRecording 失败后回查录制记录失败,原始错误透传",
zap.Int64("recording_id", recordingID), zap.Error(lookupErr))
return nil, stopErr
}
if latest != nil && latest.Status != model.MeetingRecordingStatusRecording {
logs.Warn(ctx, funcName, "StopRecording 报错但录制已进入终态,按成功返回",
zap.Int64("recording_id", recordingID),
zap.String("status", string(latest.Status)),
zap.Error(stopErr))
return latest, nil
}
return nil, stopErr
} }
// StopActiveForEndRoom 在 EndRoom / EmptyTTL 路径上由系统强制停止当前活跃录制 // StopActiveForEndRoom 在 EndRoom / EmptyTTL 路径上由系统强制停止当前活跃录制