Browse Source

修改:销毁房间规则

hgw 3 years ago
parent
commit
5828c565ee

+ 20 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -261,20 +261,29 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             RoomSpeakerInfo speakerInfo = speakerCache.get();
             //过期时间= 房间正式开始时间+expiredMinute 分钟
             Date expiredTime = DateUtil.addMinutes(room.getCreatedTime(), expiredMinute);
-            //当前时间 大于(创建房间时填入的开播时间 + 设置的过期分钟数)并且 主播没有进入房间
-            if (now.getTime() >= expiredTime.getTime() && Objects.isNull(speakerInfo.getJoinRoomTime())) {
-                roomDestroy(room);
-                log.info("roomDestroy not joinRoom >>>> roomId:{}", room.getId());
-                return;
-            }
+            //先决条件 当前时间 大于(创建房间时填入的开播时间 + 设置的过期分钟数)
+            if (now.getTime() >= expiredTime.getTime()) {
 
-            if (Objects.nonNull(speakerInfo.getExitRoomTime())) {
-                Date comparedTime = DateUtil.addMinutes(speakerInfo.getExitRoomTime(), expiredMinute);
-                //当前时间 大于 创建房间时填入的开播时间 并且 当前时间 大于  (主播退出时间 + 设置的过期分钟数) 并且 是直播中断状态
-                if (now.getTime() >= room.getCreatedTime().getTime() && now.getTime() >= comparedTime.getTime() && speakerInfo.getState() != 0) {
+                //1.主播没有进入房间,则直接销毁房间
+                if (Objects.isNull(speakerInfo.getJoinRoomTime())) {
                     roomDestroy(room);
-                    log.info("roomDestroy exitRoom >>>> roomId:{}", room.getId());
+                    log.info("roomDestroy not joinRoom >>>> roomId:{}", room.getId());
+                    return;
                 }
+
+                //如果主播已经进入了房间 就判断是否退出过房间
+                if (Objects.nonNull(speakerInfo.getExitRoomTime())) {
+                    //如果退出过房间 判断退出时间是否大于进入时间
+                    if (speakerInfo.getExitRoomTime().getTime() > speakerInfo.getJoinRoomTime().getTime()) {
+                        //如果退出时间大于进入时间,就将退出时间+expiredMinute分钟
+                        Date exitExpiredTime = DateUtil.addMinutes(speakerInfo.getExitRoomTime(), expiredMinute);
+                        if (now.getTime() >= exitExpiredTime.getTime()) {
+                            roomDestroy(room);
+                            log.info("roomDestroy exitExpiredTime >>>> roomId:{}", room.getId());
+                        }
+                    }
+                }
+
             }
         }
     }