ソースを参照

Merge branch 'feature/0803-im' into develop

liujc 1 年間 前
コミット
8c5d93108b

+ 23 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -2360,9 +2360,31 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             return;
         }
         RoomSpeakerInfo roomSpeakerInfo = speakerCache.get();
+        // 设置推流状态房间信息
+        // 查询房间信息
+        LiveRoom imLiveBroadcastRoomVo = getByRoomUid(roomSpeakerInfo.getRoomUid());
 
+        if (imLiveBroadcastRoomVo == null) {
+            log.warn("closeLive imLiveBroadcastRoomVo is null");
+            return;
+        }
         //关闭直播
-        if (StringUtils.isNotBlank(sequence) && sequence.equals(roomSpeakerInfo.getSequence())) {
+        LivePluginService pluginService = livePluginContext.getPluginService(imLiveBroadcastRoomVo.getServiceProvider());
+        if (StringUtils.isBlank(sequence)) {
+            try {
+                TencentWrapper.LiveStreamState liveStreamState = pluginService.liveStreamState(getStreamId(imLiveBroadcastRoomVo.getRoomUid(), imLiveBroadcastRoomVo.getSpeakerId()));
+                if (liveStreamState == null) {
+                    log.error("查询直播间流失败,返回结果为空");
+                } else {
+                    log.info("查询直播间流状态:{},roomUid:{}", JSON.toJSONString(liveStreamState), imLiveBroadcastRoomVo.getRoomUid());
+                    if (!"active".equals(liveStreamState.getStreamState())) {
+                        setPushStatus(roomSpeakerInfo.getRoomUid(), 0);
+                    }
+                }
+            } catch (Exception e) {
+                log.error("查询直播间流失败,roomUid:{}", imLiveBroadcastRoomVo.getRoomUid(), e);
+            }
+        } else if (sequence.equals(roomSpeakerInfo.getSequence())) {
             setPushStatus(roomSpeakerInfo.getRoomUid(), 0);
         }