Pārlūkot izejas kodu

增加MIC preMicUser上一mic拥有者

gemercheung 3 gadi atpakaļ
vecāks
revīzija
cfa3abecf5
2 mainītis faili ar 63 papildinājumiem un 56 dzēšanām
  1. 6 1
      src/controller/room/assistant.js
  2. 57 55
      src/controller/room/notify.js

+ 6 - 1
src/controller/room/assistant.js

@@ -147,15 +147,20 @@ export class RoomAssistant {
       const AllRoomUsers = await getAllRoomUsers(roomId);
       // 已存在的设置为false
 
+      let preMicUser = null;
+
       const resetOther = Array.from(AllRoomUsers)
         .filter((i) => i.role !== "leader" && i.userId !== userObj.userId)
         .map((roomer) => {
+          if (Number(roomer.isAllowMic) === 1) {
+            preMicUser = roomer.userId;
+          }
           const userKey = `user:${roomer.userId}`;
           const unsetUserObj = Object.assign({}, roomer, { isAllowMic: 0 });
           return updateRoomUser(roomId, userKey, unsetUserObj);
         });
       Promise.all(resetOther).then(() => {
-        this.room.notify.notifyBeHasMic(roomId, userObj, this.room.userId);
+        this.room.notify.notifyBeHasMic(roomId, userObj, this.room.userId, preMicUser);
       });
     } catch (error) {
       this.room.logger.error("setMicRight::error", error);

+ 57 - 55
src/controller/room/notify.js

@@ -1,55 +1,57 @@
-// 房间拦截行为助手
-import { EVENT, CODEMEG } from "../../enum/index.js";
-import { updateUser, removeRoomAllUsers, getAllRoomUsers, updateRoomUser } from "../../service/userService.js";
-import { setRoomConfig, getRoomConfig } from "../../service/roomConfigService.js";
-import { subClient } from "../../connection/redis.js";
-
-export class Notify {
-  constructor(socket, redis, room) {
-    this.socket = socket;
-    this.redis = redis;
-    this.roomId = null;
-    this.room = room;
-  }
-
-  async notifyBeAssistant(roomId, user, operator) {
-    try {
-      const AllRoomUsers = await getAllRoomUsers(roomId);
-      // console.log("AllRoomUsers", AllRoomUsers);
-      const realOperator = String(operator).split(":")[1];
-      console.log("notifyBeAssistant", realOperator);
-      this.socket.emit(EVENT.beAssistant, {
-        user: user,
-        roomPersons: AllRoomUsers,
-        operator: realOperator,
-      });
-      this.socket.broadcast.to(roomId).emit(EVENT.beAssistant, {
-        user: user,
-        roomPersons: AllRoomUsers,
-        operator: realOperator,
-      });
-    } catch (error) {
-      this.room.logger.error("notifyBeAssistant::error", error);
-    }
-  }
-
-  async notifyBeHasMic(roomId, user, operator) {
-    try {
-      const AllRoomUsers = await getAllRoomUsers(roomId);
-      const realOperator = String(operator).split(":")[1];
-      console.log("beHasMic", realOperator);
-      this.socket.emit(EVENT.beHasMic, {
-        user: user,
-        roomPersons: AllRoomUsers,
-        operator: realOperator,
-      });
-      this.socket.broadcast.to(roomId).emit(EVENT.beHasMic, {
-        user: user,
-        roomPersons: AllRoomUsers,
-        operator: realOperator,
-      });
-    } catch (error) {
-      this.room.logger.error("notifyBeHasMic::error", error);
-    }
-  }
-}
+// 房间拦截行为助手
+import { EVENT, CODEMEG } from "../../enum/index.js";
+import { updateUser, removeRoomAllUsers, getAllRoomUsers, updateRoomUser } from "../../service/userService.js";
+import { setRoomConfig, getRoomConfig } from "../../service/roomConfigService.js";
+import { subClient } from "../../connection/redis.js";
+
+export class Notify {
+  constructor(socket, redis, room) {
+    this.socket = socket;
+    this.redis = redis;
+    this.roomId = null;
+    this.room = room;
+  }
+
+  async notifyBeAssistant(roomId, user, operator) {
+    try {
+      const AllRoomUsers = await getAllRoomUsers(roomId);
+      // console.log("AllRoomUsers", AllRoomUsers);
+      const realOperator = String(operator).split(":")[1];
+      console.log("notifyBeAssistant", realOperator);
+      this.socket.emit(EVENT.beAssistant, {
+        user: user,
+        roomPersons: AllRoomUsers,
+        operator: realOperator,
+      });
+      this.socket.broadcast.to(roomId).emit(EVENT.beAssistant, {
+        user: user,
+        roomPersons: AllRoomUsers,
+        operator: realOperator,
+      });
+    } catch (error) {
+      this.room.logger.error("notifyBeAssistant::error", error);
+    }
+  }
+
+  async notifyBeHasMic(roomId, user, operator, preMicUser) {
+    try {
+      const AllRoomUsers = await getAllRoomUsers(roomId);
+      const realOperator = String(operator).split(":")[1];
+      console.log("beHasMic", realOperator);
+      this.socket.emit(EVENT.beHasMic, {
+        user: user,
+        roomPersons: AllRoomUsers,
+        operator: realOperator,
+        preMicUser: preMicUser,
+      });
+      this.socket.broadcast.to(roomId).emit(EVENT.beHasMic, {
+        user: user,
+        roomPersons: AllRoomUsers,
+        operator: realOperator,
+        preMicUser: preMicUser,
+      });
+    } catch (error) {
+      this.room.logger.error("notifyBeHasMic::error", error);
+    }
+  }
+}