From 32dfab453cca4a3f8dc95039a727e71b934e1161 Mon Sep 17 00:00:00 2001 From: zhouwei <849588297@qq.com> Date: Fri, 10 Jul 2026 00:41:09 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AA=8C=E8=AF=81=E6=98=AF=E5=90=A6=E6=89=93?= =?UTF-8?q?=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/controller/GroupRoomController.java | 25 ---- .../com/group/service/GroupRoomService.java | 109 +++++++++++------- 2 files changed, 66 insertions(+), 68 deletions(-) diff --git a/web_group/src/main/java/com/group/controller/GroupRoomController.java b/web_group/src/main/java/com/group/controller/GroupRoomController.java index 178ed19..f5c55ef 100644 --- a/web_group/src/main/java/com/group/controller/GroupRoomController.java +++ b/web_group/src/main/java/com/group/controller/GroupRoomController.java @@ -43,10 +43,6 @@ public class GroupRoomController extends Controller { throw new WebException(ErrorCode.GROUP_MEMBER_BAN); } - - //检查玩家今天是否已经与机器人对打过 - isPlayerRobotToday(acc.id); - ITObject resData = GroupRoomService.matchRoom(groupId, pid, session, platform, is_null); this.sendResponse(0, resData); } @@ -89,26 +85,5 @@ public class GroupRoomController extends Controller { ITObject obj = GroupRoomService.delRoom(groupId, roomId); this.sendResponse(0, obj); } - - /** - * 检查玩家今天是否已经与机器人对打过 - * @param playerId 玩家ID - */ - private void isPlayerRobotToday(int playerId) { - Jedis jedis = Redis.use("group1_db3").getJedis(); - try { - String redisKey = "player_user:" + playerId; - String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); - String matchedDate = jedis.get(redisKey); - - if (matchedDate != null && matchedDate.equals(today)) { - logger.info("玩家{" + playerId + "}当天已与机器人对打"); - } - } catch (Exception e) { - logger.error("检查玩家对打记录时发生异常", e); - } finally { - jedis.close(); - } - } } diff --git a/web_group/src/main/java/com/group/service/GroupRoomService.java b/web_group/src/main/java/com/group/service/GroupRoomService.java index c34de38..a923cc4 100644 --- a/web_group/src/main/java/com/group/service/GroupRoomService.java +++ b/web_group/src/main/java/com/group/service/GroupRoomService.java @@ -6,12 +6,8 @@ import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.concurrent.CompletableFuture; import com.data.bean.AccountBean; @@ -1086,62 +1082,89 @@ public class GroupRoomService { resData = publicJoinRoom(groupId, session, key, platform); } - //匹配 - Jedis jedis11 = Redis.use("group1_db11").getJedis(); - Jedis jedis0 = Redis.use("group1_db0").getJedis(); - try { - jedis11.zremrangeByScore(grooms_key, 0, 0); - //通知 机器人 - String gameId1 = jedis11.hget("g{383709}:play:"+pid,"gameId"); - String robot_host = null; - if(StringUtil.isNotEmpty(gameId1)) { - if (Integer.parseInt(gameId1) == 17) { - robot_host = "8.138.120.132:8917"; - } - if (Integer.parseInt(gameId1) == 22) { - robot_host = "8.138.120.132:8722"; - } + //检查玩家今天是否已经与机器人对打过 + if (!isPlayerRobotToday(acc.id)) { + log.info("matchRoom() ==> 玩家今天和机器人对打过了isPlayerRobotToday = " + isPlayerRobotToday(acc.id)); + //匹配 + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + jedis11.zremrangeByScore(grooms_key, 0, 0); + + //通知 机器人 + String gameId1 = jedis11.hget("g{383709}:play:"+pid,"gameId"); + String robot_host = null; + if(StringUtil.isNotEmpty(gameId1)) { + if (Integer.parseInt(gameId1) == 17) { + robot_host = "8.138.120.132:8917"; + } + if (Integer.parseInt(gameId1) == 22) { + robot_host = "8.138.120.132:8722"; + } - if (StringUtil.isNotEmpty(gameId1)) { - String roomid = resData.getString("room_id"); - String playersStr = jedis0.hget("room:" + roomid, "players"); - //String players = playersStr.substring(1, playersStr.length() - 1); - //判断是否有开机器人 - if (StringUtil.isNotEmpty(playersStr)) { - ITArray players = TArray.newFromJsonData(playersStr); - System.out.println("players:" + playersStr); - if (players.size() == 2) { - System.out.println("******************房间是2个人空的:" + roomid); - sendRoboJointData(roomid, groupId,robot_host,Integer.parseInt(gameId1)); - } else if (players.size() == 1) { - System.out.println("******************房间是有人的:" + roomid); - if (Integer.parseInt(players.get(0).toString()) != acc.id) { + if (StringUtil.isNotEmpty(gameId1)) { + String roomid = resData.getString("room_id"); + String playersStr = jedis0.hget("room:" + roomid, "players"); + //String players = playersStr.substring(1, playersStr.length() - 1); + //判断是否有开机器人 + if (StringUtil.isNotEmpty(playersStr)) { + ITArray players = TArray.newFromJsonData(playersStr); + System.out.println("players:" + playersStr); + if (players.size() == 2) { + System.out.println("******************房间是2个人空的:" + roomid); sendRoboJointData(roomid, groupId,robot_host,Integer.parseInt(gameId1)); + } else if (players.size() == 1) { + System.out.println("******************房间是有人的:" + roomid); + if (Integer.parseInt(players.get(0).toString()) != acc.id) { + sendRoboJointData(roomid, groupId,robot_host,Integer.parseInt(gameId1)); + } else { + sendRobotData(roomid, groupId,robot_host,Integer.parseInt(gameId1)); + } } else { + System.out.println("******************房间没有人的:" + roomid); sendRobotData(roomid, groupId,robot_host,Integer.parseInt(gameId1)); } } else { - System.out.println("******************房间没有人的:" + roomid); sendRobotData(roomid, groupId,robot_host,Integer.parseInt(gameId1)); } - } else { - sendRobotData(roomid, groupId,robot_host,Integer.parseInt(gameId1)); } + } + } finally { + jedis11.close(); + jedis0.close(); } - - } finally { - jedis11.close(); - jedis0.close(); } - return resData; } + /** + * 检查玩家今天是否已经与机器人对打过 + * @param playerId 玩家ID + */ + private static boolean isPlayerRobotToday(int playerId) { + Jedis jedis = Redis.use("group1_db3").getJedis(); + try { + String redisKey = "player_user:" + playerId; + String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + String matchedDate = jedis.get(redisKey); + + if (matchedDate != null && matchedDate.equals(today)) { + log.info("玩家{" + playerId + "}当天已与机器人对打"); + return true; + } + } catch (Exception e) { + log.error("检查玩家对打记录时发生异常", e); + } finally { + jedis.close(); + } + return false; + } + /** * //发起机器人请求(HTTP 同步方式,替代原 TCP 异步多线程方式) *