Ver código fonte

修改:取消去融云查询房主是否在房间的功能,优化主动销毁房间判断逻辑

hgw 3 anos atrás
pai
commit
647aa18303

+ 3 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -256,10 +256,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         Date now = new Date();
         list.forEach(room -> {
             try {
-                //校验房间主播是否在房间 如果不在房间则进行销毁判断
-                if (imFeignService.userExistInRoom(room.getRoomUid(), room.getSpeakerId().toString())) {
-                    return;
-                }
                 destroyExpiredLiveRoom(now, room, expiredMinute);
             } catch (Exception e) {
                 log.error("roomDestroy>>>> failed roomId:{} msg:{}", room.getId(), e.getMessage());
@@ -317,6 +313,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         if (room.getLiveState() == 0) {
             throw new BizException("直播未开始");
         }
+        if (room.getLiveState() == 2) {
+            throw new BizException("直播已经结束,请刷新数据!");
+        }
         roomDestroy(room);
     }
 
@@ -740,14 +739,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     public Map<String, Object> test(String roomUid, Integer userId) {
         //test
         Map<String, Object> result = new HashMap<>();
-        //主播在房间的状态
-        try {
-            boolean existInRoom = imFeignService.userExistInRoom(roomUid, userId.toString());
-            result.put("主播在房间", existInRoom ? "在" : "不在");
-        } catch (Exception e) {
-            result.put("主播在房间", "im无法连接");
-        }
-
         //点赞数
         Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
         if (Objects.isNull(like)) {

+ 3 - 0
mec-im/src/main/java/com/ym/service/Impl/LiveRoomServiceImpl.java

@@ -186,6 +186,9 @@ public class LiveRoomServiceImpl implements LiveRoomService {
      * @param chatroomId 要查询的聊天室 ID(必传)
      * @param userId     要查询的用户 ID(必传)
      * @return true 在聊天室,false 不在聊天室
+     * <p>触发融云退出聊天室机制将用户踢出
+     * <p>聊天室中用户在离线 30 秒后有新消息产生时或离线后聊天室中产生 30 条消息时会被自动退出聊天室
+     * <p>此状态需要聊天室中有新消息时才会进行同步
      */
     public boolean userExistInRoom(String chatroomId, String userId) {
         log.info("userExistInRoom chatroomId : {}  userId : {}", chatroomId, userId);