浏览代码

增加主播登录验证接口

hgw 3 年之前
父节点
当前提交
c604e9907a

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java

@@ -37,6 +37,8 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
 
     void quitRoom(List<ImUserState> userState);
 
+    void speakerJoinRoom(String roomUid);
+
     void joinRoom(String roomUid, Integer userId);
 
     void startLive(String roomUid,Integer userId);

+ 22 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -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);

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java

@@ -109,6 +109,13 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation("主讲人进入房间")
+    @GetMapping("/speakerJoinRoom")
+    public HttpResponseResult speakerJoinRoom(String roomUid) {
+        imLiveBroadcastRoomService.speakerJoinRoom(roomUid);
+        return succeed();
+    }
+
     @ApiOperation("进入房间")
     @GetMapping("/joinRoom")
     public HttpResponseResult joinRoom(String roomUid, Integer userId) {