视频会议保存

This commit is contained in:
duoaohui
2026-05-18 19:42:55 +08:00
parent 315884685f
commit ac8ec4c903
41 changed files with 5069 additions and 39 deletions

View File

@@ -42,6 +42,7 @@ type App struct {
ContactManageController *adminController.ContactManageController // 管理端好友关系管理控制器
GroupManageController *adminController.GroupManageController // 管理端群组管理控制器
MessageManageController *adminController.MessageManageController // 管理端消息管理控制器
MeetingManageController *adminController.MeetingManageController // 管理端会议管理控制器Phase B
WSHandler *wsApp.Handler // WebSocket 连接处理器
Hub *ws.Hub // WebSocket Hub 连接管理
PubSub *ws.PubSub // Redis Pub/Sub 消息路由
@@ -59,6 +60,8 @@ type App struct {
MeetingSignalService *meetingService.MeetingSignalService // 会议 WS 信令业务服务Task 6 落地)
MeetingLifecycleSvc *meetingService.MeetingLifecycleService // 会议生命周期状态机Task 8 落地)
MeetingController *meetingController.MeetingController // 会议 REST 控制器
MeetingRecordingController *meetingController.MeetingRecordingController // 会议录制 REST 控制器Phase B 新增)
MeetingRecordingService *meetingService.MeetingRecordingService // 会议录制业务服务Phase B 新增)
MeetingWSHandler *meetingController.MeetingWSHandler // 会议 WS 事件 Handler构造时自动注册路由到 Hub
MeetingCleanupTask *meetingTask.MeetingCleanupTask // 会议生命周期兜底定时任务Task 8 落地)
}
@@ -77,6 +80,7 @@ func NewApp(
contactManageCtrl *adminController.ContactManageController,
groupManageCtrl *adminController.GroupManageController,
msgManageCtrl *adminController.MessageManageController,
meetingManageCtrl *adminController.MeetingManageController,
wsHandler *wsApp.Handler,
hub *ws.Hub,
pubsub *ws.PubSub,
@@ -94,12 +98,16 @@ func NewApp(
meetingSignalSvc *meetingService.MeetingSignalService,
meetingLifecycleSvc *meetingService.MeetingLifecycleService,
meetingCtrl *meetingController.MeetingController,
meetingRecordingCtrl *meetingController.MeetingRecordingController,
meetingRecordingSvc *meetingService.MeetingRecordingService,
meetingWSHandler *meetingController.MeetingWSHandler,
meetingCleanup *meetingTask.MeetingCleanupTask,
) *App {
wsHandler.SetOfflinePusher(offlinePusher)
wsHandler.SetNotifyConnectHook(notifySvc)
wsHandler.SetMeetingDisconnectHook(meetingSignalSvc)
// Phase B通过 setter 注入录制停止钩子,避免 MeetingService ↔ MeetingRecordingService 构造期循环依赖
meetingSvc.SetRecordingStopper(meetingRecordingSvc)
return &App{
Config: cfg,
@@ -114,6 +122,7 @@ func NewApp(
ContactManageController: contactManageCtrl,
GroupManageController: groupManageCtrl,
MessageManageController: msgManageCtrl,
MeetingManageController: meetingManageCtrl,
WSHandler: wsHandler,
Hub: hub,
PubSub: pubsub,
@@ -130,9 +139,11 @@ func NewApp(
MeetingService: meetingSvc,
MeetingSignalService: meetingSignalSvc,
MeetingLifecycleSvc: meetingLifecycleSvc,
MeetingController: meetingCtrl,
MeetingWSHandler: meetingWSHandler,
MeetingCleanupTask: meetingCleanup,
MeetingController: meetingCtrl,
MeetingRecordingController: meetingRecordingCtrl,
MeetingRecordingService: meetingRecordingSvc,
MeetingWSHandler: meetingWSHandler,
MeetingCleanupTask: meetingCleanup,
}
}

View File

@@ -80,6 +80,9 @@ func InitializeApp(cfg *config.Config) (*App, error) {
conversationDAO := im.ProvideConversationDAO(gormDB)
messageManageService := service2.NewMessageManageService(messageManageDAO, userDAO, conversationDAO, pubSub)
messageManageController := controller2.NewMessageManageController(messageManageService)
meetingManageDAO := dao2.NewMeetingManageDAO(gormDB)
meetingManageService := service2.NewMeetingManageService(meetingManageDAO)
meetingManageController := controller2.NewMeetingManageController(meetingManageService)
serverConfig := provideServerConfig(cfg)
handler := ws.ProvideWSHandler(hub, pubSub, jwtConfig, serverConfig, onlineService, authService)
friendGroupDAO := dao3.NewFriendGroupDAO(gormDB)
@@ -103,14 +106,17 @@ func InitializeApp(cfg *config.Config) (*App, error) {
meetingRoomDAO := dao6.NewMeetingRoomDAO(gormDB)
meetingParticipantDAO := dao6.NewMeetingParticipantDAO(gormDB)
meetingChatDAO := dao6.NewMeetingChatDAO(gormDB)
meetingRecordingDAO := dao6.NewMeetingRecordingDAO(gormDB)
meetingBroadcaster := service7.NewMeetingBroadcaster(meetingParticipantDAO, pubSub)
httpMediaOrchestrator := service7.NewHTTPMediaOrchestrator(cfg)
meetingLifecycleService := service7.NewMeetingLifecycleService(meetingRoomDAO, meetingParticipantDAO, client, meetingBroadcaster, httpMediaOrchestrator, cfg)
meetingService := service7.NewMeetingService(meetingRoomDAO, meetingParticipantDAO, meetingChatDAO, gormDB, client, meetingBroadcaster, notifyService, friendshipDAO, onlineService, httpMediaOrchestrator, meetingLifecycleService)
meetingSignalService := service7.NewMeetingSignalService(meetingRoomDAO, meetingParticipantDAO, client, meetingBroadcaster, httpMediaOrchestrator, meetingLifecycleService)
meetingRecordingService := service7.NewMeetingRecordingService(meetingRoomDAO, meetingParticipantDAO, meetingRecordingDAO, client, meetingBroadcaster, httpMediaOrchestrator, minioClient, minioConfig)
meetingController := controller7.NewMeetingController(meetingService)
meetingRecordingController := controller7.NewMeetingRecordingController(meetingRecordingService)
meetingWSHandler := controller7.NewMeetingWSHandler(meetingSignalService, hub)
meetingCleanupTask := task2.NewMeetingCleanupTask(meetingLifecycleService, meetingRoomDAO, meetingChatDAO)
app := NewApp(cfg, gormDB, client, minioClient, authService, authController, adminAuthController, userManageController, onlineController, contactManageController, groupManageController, messageManageController, handler, hub, pubSub, onlineService, contactController, imController, eventHandler, offlinePusher, fileController, groupController, notifyService, notificationController, cleanupTask, meetingService, meetingSignalService, meetingLifecycleService, meetingController, meetingWSHandler, meetingCleanupTask)
app := NewApp(cfg, gormDB, client, minioClient, authService, authController, adminAuthController, userManageController, onlineController, contactManageController, groupManageController, messageManageController, meetingManageController, handler, hub, pubSub, onlineService, contactController, imController, eventHandler, offlinePusher, fileController, groupController, notifyService, notificationController, cleanupTask, meetingService, meetingSignalService, meetingLifecycleService, meetingController, meetingRecordingController, meetingRecordingService, meetingWSHandler, meetingCleanupTask)
return app, nil
}