|
@@ -130,7 +130,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
public RoomInfoCache speakerCheckRoomInfo(String roomUid) {
|
|
|
Long userId = getSysUser().getId();
|
|
|
//校验房间是否存在
|
|
|
- RBucket<RoomInfoCache> roomInfoCache = redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, roomUid));
|
|
|
+ RBucket<RoomInfoCache> roomInfoCache = getLiveRoomInfo(roomUid);
|
|
|
if (!roomInfoCache.isExists()) {
|
|
|
log.error("teacherCheckRoomInfo>>>live not start roomUid: {} userId:{}", roomUid, userId);
|
|
|
throw new BizException("直播还未开始!");
|
|
@@ -295,8 +295,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
roomCache.setCourseGroupId(room.getCourseGroupId());
|
|
|
|
|
|
//写入房间信息
|
|
|
- redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, room.getRoomUid()))
|
|
|
- .set(roomCache, 2L, TimeUnit.DAYS);
|
|
|
+ getLiveRoomInfo(room.getRoomUid()).set(roomCache, 2L, TimeUnit.DAYS);
|
|
|
//生成0点赞
|
|
|
redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, room.getRoomUid()))
|
|
|
.set(0, 2L, TimeUnit.DAYS);
|
|
@@ -396,11 +395,31 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
//修改房间状态
|
|
|
room.setLiveState(2);
|
|
|
this.updateById(room);
|
|
|
+
|
|
|
String speakerIdStr = room.getSpeakerId().toString();
|
|
|
+ String roomUid = room.getRoomUid();
|
|
|
+
|
|
|
+ //删除房间全部人员缓存
|
|
|
+ getTotalUserCache(roomUid).deleteAsync();
|
|
|
+ //获取在线人员信息
|
|
|
+ RMap<Long, String> onlineUserCache = getOnlineUserCache(roomUid);
|
|
|
+ //删除人员对应直播间编号信息
|
|
|
+ onlineUserCache.forEach((id, s) -> redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, id.toString())).deleteAsync());
|
|
|
+ //删除房间在线人员缓存
|
|
|
+ onlineUserCache.deleteAsync();
|
|
|
+ //删除房间信息
|
|
|
+ getLiveRoomInfo(room.getRoomUid()).deleteAsync();
|
|
|
+ //删除点赞数
|
|
|
+ redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, room.getRoomUid())).deleteAsync();
|
|
|
+ //删除当前主讲人最后一次进入房间的ip
|
|
|
+ redissonClient.getBucket(LIVE_USER_LAST_CLIENT_IP.replace(ROOM_UID, roomUid).replace(USER_ID, speakerIdStr)).deleteAsync();
|
|
|
+ //删除当前主讲人最后一次心跳
|
|
|
+ redissonClient.getBucket(LIVE_ROOM_HEART_BEAT.replace(ROOM_UID, roomUid)).deleteAsync();
|
|
|
+
|
|
|
//关闭直播间发送消息
|
|
|
ImRoomMessage message = new ImRoomMessage();
|
|
|
message.setFromUserId(speakerIdStr);
|
|
|
- message.setToChatroomId(room.getRoomUid());
|
|
|
+ message.setToChatroomId(roomUid);
|
|
|
message.setObjectName(ImRoomMessage.FORCED_OFFLINE);
|
|
|
message.setContent(speakerIdStr);
|
|
|
try {
|
|
@@ -468,7 +487,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
}
|
|
|
String roomUid = userRoom.get();
|
|
|
//根据房间号获取房间信息
|
|
|
- RBucket<RoomInfoCache> roomInfoCache = redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, roomUid));
|
|
|
+ RBucket<RoomInfoCache> roomInfoCache = getLiveRoomInfo(roomUid);
|
|
|
if (!roomInfoCache.isExists()) {
|
|
|
return;
|
|
|
}
|
|
@@ -689,7 +708,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
//校验学生与房间的关系
|
|
|
private RoomInfoCache checkStudentRoom(String roomUid, SysUser sysUser) {
|
|
|
//校验房间是否存在
|
|
|
- RBucket<RoomInfoCache> roomInfoCache = redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, roomUid));
|
|
|
+ RBucket<RoomInfoCache> roomInfoCache = getLiveRoomInfo(roomUid);
|
|
|
if (!roomInfoCache.isExists()) {
|
|
|
throw new BizException("直播还未开始!");
|
|
|
}
|
|
@@ -908,13 +927,22 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
.orElse(0);
|
|
|
|
|
|
/**
|
|
|
+ * 获取房间信息
|
|
|
+ *
|
|
|
+ * @param roomUid 房间编号
|
|
|
+ */
|
|
|
+ private RBucket<RoomInfoCache> getLiveRoomInfo(String roomUid) {
|
|
|
+ return redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, roomUid));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 方便测试观察房间数据的方法
|
|
|
*/
|
|
|
public Map<String, Object> test(String roomUid) {
|
|
|
//result
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
//获取房间信息
|
|
|
- RBucket<RoomInfoCache> speakerCache = redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, roomUid));
|
|
|
+ RBucket<RoomInfoCache> speakerCache = getLiveRoomInfo(roomUid);
|
|
|
if (speakerCache.isExists()) {
|
|
|
result.put("房间信息信息", speakerCache.get());
|
|
|
} else {
|