Bladeren bron

Merge remote-tracking branch 'origin/master'

liweifan 3 jaren geleden
bovenliggende
commit
20a2284970

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImRoomMessage.java

@@ -8,8 +8,10 @@ public class ImRoomMessage extends BaseMessage {
 
     //objectName 类型-观看者退出房间
     public static final String RC_CHATROOM_LEAVE = "RC:Chatroom:Leave";
-    //objectName 类型-观看者数量-该消息只有主播端接
+    //objectName 类型-观看者数量
     public static final String MEMBER_COUNT = "RC:Chatroom:MemberCountUp";
+    //objectName 类型-将所有人强制踢出房间
+    public static final String FORCED_OFFLINE = "RC:ForcedOffline";
 
     /**
      * 消息类型

+ 30 - 17
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -253,7 +253,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         this.save(room);
         log.info("createTempLiveRoom>>>>>>room:{}", room.getRoomUid());
         //去融云创建房间及创建房间缓存信息
-        createLiveRoomInfo(room, sysUser);
+        this.createLiveRoomInfo(room, sysUser);
         return roomUid;
     }
 
@@ -263,15 +263,15 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
     private void createLiveRoomInfo(LiveRoom room) {
         //查询主讲人信息
         SysUser sysUser = getSysUser(room.getSpeakerId());
-        createLiveRoomInfo(room, sysUser);
+        this.createLiveRoomInfo(room, sysUser);
     }
 
     private void createLiveRoomInfo(LiveRoom room, SysUser sysUser) {
         try {
             //生成主讲人信息
-            createRoomInfoCache(room, sysUser);
+            this.createRoomInfoCache(room, sysUser);
             //去融云创建房间
-            createLiveRoom(room.getRoomUid(), room.getRoomTitle());
+            this.createLiveRoom(room.getRoomUid(), room.getRoomTitle());
         } catch (Exception e) {
             throw new BizException("创建直播间失败!", e.getCause());
         }
@@ -352,7 +352,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             }
             //当前时间 大于 直播间过期时间
             if (now.getTime() >= expiredDate.getTime()) {
-                destroyLiveRoom(room);
+                this.destroyLiveRoom(room);
             }
         });
     }
@@ -366,7 +366,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
     @Transactional(rollbackFor = Exception.class)
     public void destroyLiveRoom(String roomUId) {
         LiveRoom liveRoom = this.getOne(Wrappers.<LiveRoom>lambdaQuery().eq(LiveRoom::getRoomUid, roomUId));
-        destroyLiveRoom(liveRoom);
+        this.destroyLiveRoom(liveRoom);
     }
 
     /**
@@ -394,10 +394,23 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             });
         }
         //删除房间
-        ImDestroyLiveRoom(room.getRoomUid());
+        this.ImDestroyLiveRoom(room.getRoomUid());
         //修改房间状态
         room.setLiveState(2);
         this.updateById(room);
+        String speakerIdStr = room.getSpeakerId().toString();
+        //关闭直播间发送消息
+        ImRoomMessage message = new ImRoomMessage();
+        message.setFromUserId(speakerIdStr);
+        message.setToChatroomId(room.getRoomUid());
+        message.setObjectName(ImRoomMessage.FORCED_OFFLINE);
+        message.setContent(speakerIdStr);
+        try {
+            this.publishRoomMessage(message);
+            log.info("destroyLiveRoom>>>> FORCED_OFFLINE : {}", speakerIdStr);
+        } catch (Exception e) {
+            log.error("destroyLiveRoom>>>>  FORCED_OFFLINE {}", e.getMessage());
+        }
     }
 
     /**
@@ -507,7 +520,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             message.setObjectName(ImRoomMessage.RC_CHATROOM_LEAVE);
             message.setContent(userId);
             try {
-                publishRoomMessage(message);
+                this.publishRoomMessage(message);
                 log.info("opsRoom>>>> looker RC_CHATROOM_LEAVE : {}", userJsonStr);
             } catch (Exception e) {
                 log.error("opsRoom>>>>  looker error RC_CHATROOM_LEAVE {}", e.getMessage());
@@ -542,7 +555,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             }
             //查询老师是否有进入过放假,没有则写老师考勤表的进入时间
             if (Objects.isNull(teacherAttendance)) {
-                setTeacherAttendance(Long.parseLong(userIdStr), roomInfo.getCourseGroupId(), roomInfo.getCourseId());
+                this.setTeacherAttendance(Long.parseLong(userIdStr), roomInfo.getCourseGroupId(), roomInfo.getCourseId());
             }
             roomInfoCache.set(roomInfo);
             log.info("opsRoom>>>> join speakerCache {}", JSONObject.toJSONString(roomInfo));
@@ -616,12 +629,12 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
      * @param roomUid 房间uid
      */
     public RoomInfoCache speakerJoinRoom(String roomUid) {
-        RoomInfoCache roomInfo = speakerCheckRoomInfo(roomUid);
+        RoomInfoCache roomInfo = this.speakerCheckRoomInfo(roomUid);
         Date now = new Date();
         roomInfo.setSpeakerState(0);
         roomInfo.setJoinRoomTime(now);
         //查询老师是否有进入过,没有则写老师考勤表的进入时间
-        setTeacherAttendance(roomInfo.getSpeakerId(), roomInfo.getCourseGroupId(), roomInfo.getCourseId());
+        this.setTeacherAttendance(roomInfo.getSpeakerId(), roomInfo.getCourseGroupId(), roomInfo.getCourseId());
         //记录当前用户对应的房间uid
         redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, roomInfo.getSpeakerId().toString())).set(roomUid, 2L, TimeUnit.DAYS);
         return roomInfo;
@@ -635,12 +648,12 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
      */
     public RoomInfoCache joinRoom(String roomUid, Long userId) {
         //获取进入房间人员信息
-        SysUser sysUser = getSysUser(userId);
+        SysUser sysUser = this.getSysUser(userId);
         //校验信息
-        RoomInfoCache roomInfo = checkStudentRoom(roomUid, sysUser);
+        RoomInfoCache roomInfo = this.checkStudentRoom(roomUid, sysUser);
         Date now = new Date();
         //房间累计用户信息-指只要进入到该房间的用户都要记录
-        RMap<Long, String> roomTotalUser = getTotalUserCache(roomUid);
+        RMap<Long, String> roomTotalUser = this.getTotalUserCache(roomUid);
         //判断是否第一次进房间
         RoomUserInfoCache userInfo;
         if (roomTotalUser.containsKey(userId)) {
@@ -653,7 +666,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             userInfo.setUserName(sysUser.getRealName());
             userInfo.setFirstJoinTime(now);
             //查询学生是否有进入过,没有则写学生考勤表的进入时间
-            setStudentAttendance(userId, roomInfo.getCourseGroupId(), roomInfo.getCourseId());
+            this.setStudentAttendance(userId, roomInfo.getCourseGroupId(), roomInfo.getCourseId());
         }
         userInfo.setDynamicJoinTime(now);
         //用户json信息
@@ -661,7 +674,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         //写入人员缓存
         roomTotalUser.fastPut(userId, userJsonStr);
         //写入在线人员缓存
-        RMap<Long, String> onlineUserCache = getOnlineUserCache(roomUid);
+        RMap<Long, String> onlineUserCache = this.getOnlineUserCache(roomUid);
         onlineUserCache.fastPut(userId, userJsonStr);
         log.info("joinRoom>>>> userInfo: {}", userJsonStr);
         //向直播间发送当前在线人数消息
@@ -782,7 +795,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         message.setContent(sendMap);
         //发送消息
         try {
-            publishRoomMessage(message);
+            this.publishRoomMessage(message);
             log.info("sendOnlineUserCount>>>> message: {}", JSONObject.toJSONString(message));
         } catch (Exception e) {
             log.error("sendOnlineUserCount>>>> error {}", e.getMessage());