|
@@ -101,6 +101,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
public static final String LIVE_USER_ROOM = "IM:LIVE_ROOM_USER:" + USER_ID;
|
|
public static final String LIVE_USER_ROOM = "IM:LIVE_ROOM_USER:" + USER_ID;
|
|
//记录人员最后变更的状态消息时间
|
|
//记录人员最后变更的状态消息时间
|
|
public static final String LIVE_USER_STATE_TIME = "IM:LIVE_USER_STATE_TIME:" + USER_ID;
|
|
public static final String LIVE_USER_STATE_TIME = "IM:LIVE_USER_STATE_TIME:" + USER_ID;
|
|
|
|
+ //当前房间主讲人心跳
|
|
|
|
+ public static final String LIVE_ROOM_SPEAKER_HEART_BEAT = "IM:LIVE_ROOM_SPEAKER_HEART_BEAT:" + ROOM_UID;
|
|
//房间点赞数
|
|
//房间点赞数
|
|
public static final String LIVE_ROOM_LIKE = "IM:LIVE_ROOM_LIKE:" + ROOM_UID;
|
|
public static final String LIVE_ROOM_LIKE = "IM:LIVE_ROOM_LIKE:" + ROOM_UID;
|
|
//计算人员观看时长锁
|
|
//计算人员观看时长锁
|
|
@@ -438,6 +440,18 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, room.getSpeakerId().toString()));
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, room.getSpeakerId().toString()));
|
|
if (speakerCache.isExists()) {
|
|
if (speakerCache.isExists()) {
|
|
RoomSpeakerInfo speakerInfo = speakerCache.get();
|
|
RoomSpeakerInfo speakerInfo = speakerCache.get();
|
|
|
|
+ //校验房间心跳是否过期没续租
|
|
|
|
+ RBucket<Date> lastRoomHeartbeatCache = redissonClient.getBucket(LIVE_ROOM_SPEAKER_HEART_BEAT.replace(ROOM_UID, room.getRoomUid()));
|
|
|
|
+ if(lastRoomHeartbeatCache.isExists()){
|
|
|
|
+ //获取最后一次房间心跳时间
|
|
|
|
+ Date lastDate = lastRoomHeartbeatCache.get();
|
|
|
|
+ //房间心跳过期时间 = 将房间心跳时间+过期分钟
|
|
|
|
+ Date lastRoomDateExpired = DateUtil.addMinutes(lastDate, expiredMinute);
|
|
|
|
+ //当前时间 小于 房间心跳过期时间 则不销毁
|
|
|
|
+ if (now.getTime() <= lastRoomDateExpired.getTime()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
//1.主播没有进入房间,则直接销毁房间
|
|
//1.主播没有进入房间,则直接销毁房间
|
|
if (Objects.isNull(speakerInfo.getJoinRoomTime())) {
|
|
if (Objects.isNull(speakerInfo.getJoinRoomTime())) {
|
|
log.info("roomDestroy not joinRoom >>>> cache : {}", JSONObject.toJSONString(test(room.getRoomUid())));
|
|
log.info("roomDestroy not joinRoom >>>> cache : {}", JSONObject.toJSONString(test(room.getRoomUid())));
|
|
@@ -613,6 +627,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
@Override
|
|
@Override
|
|
public void syncLike(String roomUid, Integer likeNum) {
|
|
public void syncLike(String roomUid, Integer likeNum) {
|
|
redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).set(likeNum);
|
|
redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).set(likeNum);
|
|
|
|
+ //增加房间心跳
|
|
|
|
+ redissonClient.getBucket(LIVE_ROOM_SPEAKER_HEART_BEAT.replace(ROOM_UID, roomUid))
|
|
|
|
+ .set(new Date());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|