diff --git a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXGameController.java b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXGameController.java index ce5b81f..8de058a 100644 --- a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXGameController.java +++ b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXGameController.java @@ -239,6 +239,28 @@ public class EXGameController extends GameController { String roomId = params.getString("roomid"); int groupId = params.getInt("groupid"); + //检查机器人是否已经在房间中 + RobotUser existingUser = getRobotRoomInfo(String.valueOf(robotId)); + if (existingUser != null && existingUser.getCurrentRoomId() > 0) { + String existingConnecId = existingUser.getCurrentRoomId() + "_" + robotId; + log.warn("机器人{}已在房间{}中,connecId: {}", robotId, existingUser.getCurrentRoomId(), existingConnecId); + + //检查现有连接状态 + TaurusClient existingClient = existingUser.getClient(); + if (existingClient == null || !existingClient.isConnected()) { + log.warn("现有连接不健康,准备清理并重新加入"); + robotConnectionManager.disconnectFromGameServer(existingConnecId); + } else { + log.info("现有连接健康,跳过重复加入"); + //返回成功响应 + ITObject response = TObject.newInstance(); + response.putString("status", "success"); + response.putString("message", "机器人已在房间中"); + MainServer.instance.sendResponse(gid, 0, response, session); + return; + } + } + //检查Redis中该房间是否真的包含当前机器人 if (!checkRobotInRoomRedis(roomId, String.valueOf(robotId))) { //Redis中不存在该机器人 清理本地可能的错误映射