|
@@ -355,13 +355,19 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
- * 进入房间-修改用户对应的房间号信息
|
|
|
- *
|
|
|
- * @param roomUid 房间uid
|
|
|
- * @param userId 用户id
|
|
|
+ * 主讲人登录专用
|
|
|
+ * @param roomUid
|
|
|
*/
|
|
|
- public void joinRoom(String roomUid, Integer userId) {
|
|
|
+ public void speakerJoinRoom(String roomUid){
|
|
|
+ ImLiveBroadcastRoomVo roomVo = Optional.ofNullable(roomUid)
|
|
|
+ .map(this::queryRoomInfo)
|
|
|
+ .orElseThrow(() -> new BizException("直播间不存在"));
|
|
|
+ Integer userId = getSysUser().getId();
|
|
|
+ if(!userId.equals(roomVo.getSpeakerId())){
|
|
|
+ throw new BizException("您不算是该直播间的主讲人");
|
|
|
+ }
|
|
|
Date now = new Date();
|
|
|
//获取直播间信息
|
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, userId.toString()));
|
|
@@ -371,10 +377,19 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
if (roomUid.equals(speakerInfo.getRoomUid())) {
|
|
|
speakerInfo.setJoinRoomTime(now);
|
|
|
speakerCache.set(speakerInfo);
|
|
|
- return;
|
|
|
}
|
|
|
+ } else {
|
|
|
+ throw new BizException("还未开启直播间");
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 进入房间-修改用户对应的房间号信息
|
|
|
+ *
|
|
|
+ * @param roomUid 房间uid
|
|
|
+ * @param userId 用户id
|
|
|
+ */
|
|
|
+ public void joinRoom(String roomUid, Integer userId) {
|
|
|
//记录用户当前房间uid
|
|
|
redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userId.toString())).set(roomUid);
|
|
|
//房间累计用户信息-指只要进入到该房间的用户都要记录
|
|
@@ -383,6 +398,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
RList<RoomUserInfoVo> roomUserCacheList = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
//判断是否第一次进房间
|
|
|
RoomUserInfoVo userInfo;
|
|
|
+ Date now = new Date();
|
|
|
if (roomTotalUser.containsKey(userId)) {
|
|
|
//多次进入更新动态进入时间
|
|
|
userInfo = roomTotalUser.get(userId);
|