Eric 2 anos atrás
pai
commit
87883eb6f7

+ 23 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -32,6 +32,7 @@ import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomData;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
 import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
+import com.ym.mec.biz.dal.entity.ImLiveRoomVideo;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.*;
@@ -108,7 +109,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     private ImLiveRoomReservationService imLiveRoomReservationService;
     @Autowired
     private ImLiveRoomBlackService imLiveRoomBlackService;
-
+    @Autowired
+    private ImLiveRoomVideoService imLiveRoomVideoService;
     @Autowired
     private LivePluginContext livePluginContext;
 
@@ -659,8 +661,20 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
             pluginService.sendChatRoomMessage(message);
             log.info("roomDestroy>>>> FORCED_OFFLINE {}", JSONObject.toJSONString(message));
-            //销毁直播间
-            pluginService.chatRoomDestroy(roomUid);
+
+            if (room.getServiceProvider().equals(TencentCloudLivePlugin.PLUGIN_NAME)) {
+
+                // 录制任务Id
+                List<String> collect = imLiveRoomVideoService.lambdaQuery()
+                        .eq(ImLiveRoomVideo::getRoomUid, roomUid).list().stream()
+                        .map(ImLiveRoomVideo::getRecordId).distinct().collect(Collectors.toList());
+
+                for (String taskId : collect) {
+                    //销毁直播间
+                    pluginService.chatRoomDestroy(taskId);
+                }
+            }
+
 //            imFeignService.destroyLiveRoom(roomUid);
             log.info("roomDestroy>>>> destroyLiveRoom {}", JSONObject.toJSONString(message));
         } catch (Exception e) {
@@ -1500,11 +1514,16 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             // 腾讯云直播,提前生成录制规则
             if (room.getServiceProvider().equals(TencentCloudLivePlugin.PLUGIN_NAME)) {
 
+                DateTime now = DateTime.now();
+
                 RTCRequest.RecordStart recordStart = RTCRequest.RecordStart.builder()
                         .streamName(MessageFormat.format("{0}_{1}", room.getRoomUid(), room.getSpeakerId().toString()))
+                        .extra("")
+                        .startTime(now.toDateTime().getMillis())
+                        .endTime(now.plusDays(1).toDateTime().getMillis())
                         .build();
 
-                // 生成录制规则
+                // 生成录制任务
                 pluginService.rtcRoomRecordStart(recordStart);
             }