|  | @@ -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);
 | 
	
	
		
			
				|  | @@ -393,16 +392,34 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalaryService.updateById(salary);
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        //删除房间
 | 
	
		
			
				|  |  | -        this.ImDestroyLiveRoom(room.getRoomUid());
 | 
	
		
			
				|  |  |          //修改房间状态
 | 
	
		
			
				|  |  |          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 {
 | 
	
	
		
			
				|  | @@ -411,6 +428,8 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
 | 
	
		
			
				|  |  |          } catch (Exception e) {
 | 
	
		
			
				|  |  |              log.error("destroyLiveRoom>>>>  FORCED_OFFLINE {}", e.getMessage());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        //删除房间
 | 
	
		
			
				|  |  | +//        this.ImDestroyLiveRoom(room.getRoomUid());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -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 {
 |