gemercheung %!s(int64=3) %!d(string=hai) anos
pai
achega
9261343d50
Modificáronse 2 ficheiros con 15 adicións e 3 borrados
  1. 6 1
      src/controller/room/assistant.js
  2. 9 2
      src/controller/room/index.js

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

@@ -84,7 +84,7 @@ export class RoomAssistant {
       const role = cancel ? "customer" : "assistant";
       //  assistant是助手,customer是普通角色,操作role会好些
       const userObj = Object.assign({}, user, { role: role, order: 1 });
-      const roomObj = Object.assign({}, roomConfigRes, { assistantId:  user.userId });
+      const roomObj = Object.assign({}, roomConfigRes, { assistantId: user.userId });
       // console.log("setAssistant", userObj, roomObj);
       // console.error("roomObj", roomObj);
       await updateRoomUser(roomId, userId, userObj);
@@ -363,6 +363,11 @@ export class RoomAssistant {
     await this.redis.del(getInKey(roomSessionId));
   }
 
+  async getOpenidInRoom(roomId, oid) {
+    const AllRoomUsers = await getAllRoomUsers(roomId);
+    const user = AllRoomUsers.find((item) => item.oid === oid);
+    return user;
+  }
   // 主动断开
   async disconnect() {
     try {

+ 9 - 2
src/controller/room/index.js

@@ -1,5 +1,5 @@
 import { ROLES, CODEMEG, EVENT, FROMTYPE } from "../../enum/index.js";
-import { getCurrentUser, updateUser, removeRoomAllUsers, getAllRoomUsers, updateRoomUser } from "../../service/userService.js";
+import { getCurrentUser, updateUser, removeRoomAllUsers, getAllRoomUsers, updateRoomUser, removeRoomUser } from "../../service/userService.js";
 // import { watchRoomService } from "../../service/watchRoomService.js";
 import { setRoomConfig, getRoomConfig, updateRoomConfigByKey, isRoomMaster } from "../../service/roomConfigService.js";
 
@@ -34,6 +34,7 @@ export class RoomController extends BasicController {
       onlineStatus: 0,
       voiceStatus: 0,
       enableTalk: null,
+      oid: null, // openid
     };
   }
   // 以小程序user信息作为主要信息
@@ -101,7 +102,13 @@ export class RoomController extends BasicController {
           userObj.role = "customer";
         }
       }
-
+      if (user.oid) {
+        const hasDuplicateUser = this.roomAssistant.getOpenidInRoom(this.roomId, user.oid);
+        if (hasDuplicateUser) {
+          this.logger.info("hasDuplicateUser", hasDuplicateUser);
+          await removeRoomUser(this.roomId, hasDuplicateUser.userId);
+        }
+      }
       // if (assistantId && Number(this.userId) !== Number(assistantId) && !this.isHoster(this.user.role)) {
       //   userObj.role = "customer";
       // }