|
@@ -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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|