diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 96b8f6b..3f96325 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -10,13 +10,14 @@ + - + diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 35eb7b6..c62a54e 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -9,6 +9,8 @@ + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 5c8b87e..1522fa1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -31,6 +31,7 @@ diff --git a/game_web/event_mgr/event_mgr.iml b/game_web/event_mgr/event_mgr.iml deleted file mode 100644 index 01ab901..0000000 --- a/game_web/event_mgr/event_mgr.iml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/game_web/event_mgr/src/main/java/com/evt/mgr/job/CleanTimeOutRoomJob.java b/game_web/event_mgr/src/main/java/com/evt/mgr/job/CleanTimeOutRoomJob.java index ef67502..6e007ba 100644 --- a/game_web/event_mgr/src/main/java/com/evt/mgr/job/CleanTimeOutRoomJob.java +++ b/game_web/event_mgr/src/main/java/com/evt/mgr/job/CleanTimeOutRoomJob.java @@ -284,6 +284,7 @@ public class CleanTimeOutRoomJob implements Job{ finally { lock.unlock(); jedis0.close(); + jedis11.close(); } } catch(Exception e) { diff --git a/game_web/pack_tools/pack_tools.iml b/game_web/pack_tools/pack_tools.iml deleted file mode 100644 index d5a7b26..0000000 --- a/game_web/pack_tools/pack_tools.iml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/game_web/web_group/.idea/workspace.xml b/game_web/web_group/.idea/workspace.xml index 05e9d26..ca5472a 100644 --- a/game_web/web_group/.idea/workspace.xml +++ b/game_web/web_group/.idea/workspace.xml @@ -5,62 +5,182 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + + - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/game_web/web_group/src/main/java/com/group/MainServer.java b/game_web/web_group/src/main/java/com/group/MainServer.java index c1c5ff3..9f808b4 100644 --- a/game_web/web_group/src/main/java/com/group/MainServer.java +++ b/game_web/web_group/src/main/java/com/group/MainServer.java @@ -107,10 +107,6 @@ public class MainServer extends Extension { trigger= newTrigger().withIdentity("create_play_room_trigger", "group").withSchedule(cronSchedule("0/3 * * * * ? ")).build(); sched.scheduleJob(job, trigger); - JobDetail robot = newJob(UpdateRobotRoomJob.class).withIdentity("update_robot_room", "group").build(); - CronTrigger robottg= newTrigger().withIdentity("update_robot_room_trigger", "group").withSchedule(cronSchedule("0/5 * * * * ? ")).build(); - sched.scheduleJob(robot, robottg); - sched.start(); } catch(Exception e) { diff --git a/game_web/web_group/src/main/java/com/group/job/UpdatePlayRoomJob.java b/game_web/web_group/src/main/java/com/group/job/UpdatePlayRoomJob.java index 87154a0..5560131 100644 --- a/game_web/web_group/src/main/java/com/group/job/UpdatePlayRoomJob.java +++ b/game_web/web_group/src/main/java/com/group/job/UpdatePlayRoomJob.java @@ -354,7 +354,7 @@ public class UpdatePlayRoomJob implements Job{ Redis.use().hset(room, "status", 3 + ""); Redis.use().hincrBy(room, "cache_ver", 1); Redis.use().expire(room, 20); - logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json); + // logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json); continue; } updateRound(room, groupId, roomId, round); @@ -859,6 +859,8 @@ public class UpdatePlayRoomJob implements Job{ userData.putUtfString("password", Utils.getMD5Hash(password)); long reg_time = System.currentTimeMillis() / 1000; userData.putLong("reg_time", reg_time); + userData.putInt("jiqiren",0); + userData.putInt("start",0); logger.info("create robot account:"+userData.toJson()+" password:" + password); int result = DataBase.use().insert("account", userData); if (result == -1) { diff --git a/game_web/web_group/src/main/java/com/group/job/UpdateRobotRoomJob.java b/game_web/web_group/src/main/java/com/group/job/UpdateRobotRoomJob.java index e75d657..c8db360 100644 --- a/game_web/web_group/src/main/java/com/group/job/UpdateRobotRoomJob.java +++ b/game_web/web_group/src/main/java/com/group/job/UpdateRobotRoomJob.java @@ -25,6 +25,8 @@ import java.net.URL; import java.util.*; import java.util.concurrent.CompletableFuture; +import static com.group.service.GroupRoomService._getSvr; + public class UpdateRobotRoomJob implements Job{ private Logger logger = Logger.getLogger(UpdateRobotRoomJob.class); @@ -344,7 +346,7 @@ public class UpdateRobotRoomJob implements Job{ Redis.use().hset(room, "status", 3 + ""); Redis.use().hincrBy(room, "cache_ver", 1); Redis.use().expire(room, 20); - logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json); + //logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json); continue; } updateRound(room, groupId, roomId, round); @@ -444,33 +446,268 @@ public class UpdateRobotRoomJob implements Job{ JobKey jobKey = context.getJobDetail().getKey(); if(jobKey.getName().equals("update_robot_room") ) { - + updateRobotRoom(); }else if(jobKey.getName().equals("create_robot_room") ) { createRobotRoom(); } } + public void updateRobotRoom(){ + + Jedis js2 = Redis.use("group1_db2").getJedis(); + Jedis js0 = Redis.use("group1_db0").getJedis(); + Jedis js11 = Redis.use("group1_db11").getJedis(); + try{ + int groupId = 426149; + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + + if (pids.size() == 0) { + return; + } + GroupBean gb = GroupCache.getGroup(groupId); + if (gb == null) + { + return; + } + for (String str : pids) { + int pid = Integer.parseInt(str); + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + + + //获取所有房间 + + //Set rooms = js11.zrevrangeByScore("g{426149}:rooms", min_value, max_value); + String allrobotkeys = "{robot426149}"; + int min_value = pid * 10000; + int max_value = pid * 10000 + 9999; + String grooms_key = GroupCache.genRoomsKey(groupId); + Set rooms = js11.zrevrangeByScore(grooms_key, max_value, min_value); + long sttime = System.currentTimeMillis() / 1000; + for (String room : rooms) { + List room_list = js0.hmget(room, "robot", "status", "create_time", "id", "players","game"); + String robot = room_list.get(0); + if (robot == null) { + continue; + } + ITArray players = TArray.newFromJsonData(room_list.get(4)); + if (players.size() == 2) { + continue; + } + + String roomtime = room_list.get(2); + if (roomtime == null) { + continue; + } + String gameid = room_list.get(5); + if(gameid == null) { + continue; + } + + String roomId = room_list.get(3); + int time = Integer.parseInt(roomtime); + if (time+20 < sttime) { + js2.hset(allrobotkeys+gameid,players.get(0)+"",0+""); + //解散房间 + GroupPublisherService.delRoomEvt(groupId, roomId); + js11.zrem(grooms_key, room); + Redis.use().hset(room, "status", 3 + ""); + Redis.use().hincrBy(room, "cache_ver", 1); + Redis.use().expire(room, 20); + // logger.error("del 空 robot room:" + roomId + " player:"+room_list.get(4) + " fake_json:"); + continue; + } + + } + } + + }catch (Exception e){ + e.printStackTrace(); + }finally { + js0.close(); + js2.close(); + js11.close(); + } + } + public void createRobotRoom() { //1、获取对应的机器人id Jedis js2 = Redis.use("group1_db2").getJedis(); + Jedis js11 = Redis.use("group1_db11").getJedis(); try{ int robotid = 0; - Map jsRobot = js2.hgetAll("gallrobot"); - for (String key : jsRobot.keySet()) { - if(Integer.parseInt(jsRobot.get(key))==0){ - robotid = Integer.parseInt(key); + String allrobotkeys = "{robot426149}"; + int groupid = 426149; + //获取玩法列表 + Set pids = js11.keys("g{426149}:play:*"); + List okpids = new ArrayList<>(); + for (String pid : pids) { + String gameId = js11.hget(pid,"gameId"); + if(Integer.parseInt(gameId) == 10){ + String rpid = js11.hget(pid,"id"); + okpids.add(Integer.parseInt(rpid)); + } + if(Integer.parseInt(gameId) == 22){ + String rpid = js11.hget(pid,"id"); + okpids.add(Integer.parseInt(rpid)); + } + + } + //随机生产 + int pidindex = 0; + int pidindex2 = 0; + int pidindex3 = 0; + pidindex = new Random().nextInt(okpids.size()-1); + pidindex2 = new Random().nextInt(okpids.size()-1); + pidindex3 = new Random().nextInt(okpids.size()-1); + + List plist = new ArrayList<>(); + plist.add(okpids.get(pidindex)); + plist.add(okpids.get(pidindex2)); + //plist.add(okpids.get(pidindex3)); + + for(Integer pid : plist) { + Map jsRobot= js2.hgetAll(allrobotkeys); + + for (String key : jsRobot.keySet()) { + int tr = new Random().nextInt(60); + if(tr<20) { + String value = jsRobot.get(key); + //判断id是否工作 + if (Integer.parseInt(value) == 0) { + //可以工作 + robotid = Integer.parseInt(key); + } + } + } + if (robotid > 0){ + createGroupRoom(groupid,pid,robotid); + js2.hset(allrobotkeys,robotid+"",1+""); } } + }catch (Exception e) { e.printStackTrace(); }finally { js2.close(); + js11.close(); } } + private String createGroupRoom(int groupId, int pid,int robotid) throws Exception { + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb==null) { + throw new WebException(ErrorCode.GROUP_PLAY_EXIST); + } + + int gameId = gpb.gameId; + GameBean gb = GameCache.getGame(gameId); + + String grooms_key = GroupCache.genRoomsKey(groupId); + GroupBean group = GroupCache.getGroup(groupId); + ITObject configData = TObject.newFromJsonData(gpb.config); + int maxPlayers = gpb.maxPlayers; + + int opt = configData.getInt("opt"); + String owner_session = AccountCache.genKey(group.owner); + + int dissolve_opt = group.dissolve_opt; + int kick_opt = group.kick_opt; + + String newRoomId = Redis.use("group1_db1").rpop("free_room"); + Redis.use("group1_db1").lpush("free_room", newRoomId); + String room_key = "room:" + newRoomId; + + + + + String svr = _getSvr(jedis0,gb); + if (svr == null) { + throw new WebException(ErrorCode.NO_SERVICE); + } + + Integer pay = gb.pay.get("pay"+opt+"_"+maxPlayers); + + + long time = System.currentTimeMillis() / 1000; + Map roomMap = new HashMap(); + /** + * 玩家列表Seat映射 + */ + roomMap.put("robot", "1"); + int robot_existTime = (int)((Math.random() + 0.5) * 40); + roomMap.put("robot_existTime", robot_existTime + ""); + + roomMap.put("id", newRoomId); + roomMap.put("owner", owner_session); + roomMap.put("svr", svr); + roomMap.put("AA", "0"); + roomMap.put("pay", pay+""); + roomMap.put("agent", "1"); + roomMap.put("group", groupId+""); + roomMap.put("gpid", pid+""); + roomMap.put("payer", group.owner+""); + roomMap.put("maxPlayers", maxPlayers + ""); + roomMap.put("times", gb.opt.get(opt)+""); + roomMap.put("opt", opt + ""); + roomMap.put("status", "0"); + roomMap.put("hpOnOff", gpb.hpOnOff+""); + roomMap.put("rewardType", gpb.rewardType+""); + roomMap.put("rewardValueType", gpb.rewardValueType+""); + roomMap.put("xipai_rewardType", gpb.xipai_rewardType+""); + roomMap.put("xipai_rewardValueType", gpb.xipai_rewardValueType+""); + roomMap.put("dismiss_time", DISMISS_TIME[dissolve_opt-1]); + roomMap.put("kick_time", KICK_TIME[kick_opt-1]); + roomMap.put("hp_times",gpb.hp_times+""); + if(gpb.hpOnOff == 1) { + ITObject hpObj = TObject.newFromJsonData(gpb.hpConfig); + if (hpObj.getInt("limitInRoom") != null) { + roomMap.put("limitInRoom", hpObj.getInt("limitInRoom") + ""); + } + configData.putTObject("hpData", hpObj); + } + + configData.del("opt"); + configData.del("AA"); + roomMap.put("options", configData.toJson()); + roomMap.put("game", gameId + ""); + roomMap.put("open", "1"); + roomMap.put("round", "0"); + roomMap.put("create_time", time + ""); + roomMap.put("cache_ver", "1"); + + + + + List seat_list = new ArrayList<>(); + List player_list = new ArrayList<>(); + + seat_list.add(1); + player_list.add(robotid); + + roomMap.put("players", toTArray(player_list).toJson()); + roomMap.put("seats", toTArray(seat_list).toJson()); + + + jedis0.hmset(room_key, roomMap); + + /** + * pid open status 剩余空位 + * 11 1 1 00 + */ + Redis.use("group1_db11").zadd(grooms_key, pid*10000+1102, room_key); + GroupPublisherService.addRoomEvt(groupId, newRoomId); + //updateRedisMap(groupId, newRoomId, room_key, roomMap, maxPlayers); + return room_key; + } finally { + jedis0.close(); + } + } public int getRobot(int maxPlayers) { @@ -737,7 +974,7 @@ public class UpdateRobotRoomJob implements Job{ InputStream in = url.openStream(); String jsonStr = inputStreamToString(in); String md5 = MD5.getInstance().getHash(jsonStr); - logger.info("robot:" + id + " head:" + head + " md5:" + md5); + // logger.info("robot:" + id + " head:" + head + " md5:" + md5); if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") ) { head = null; diff --git a/game_web/web_group/src/main/java/com/group/service/GroupRoomService.java b/game_web/web_group/src/main/java/com/group/service/GroupRoomService.java index 6667939..56bd78e 100644 --- a/game_web/web_group/src/main/java/com/group/service/GroupRoomService.java +++ b/game_web/web_group/src/main/java/com/group/service/GroupRoomService.java @@ -24,6 +24,7 @@ import com.taurus.core.util.StringUtil; import com.taurus.web.WebException; import jdk.nashorn.internal.objects.Global; +import org.slf4j.helpers.Util; import redis.clients.jedis.Jedis; import static java.lang.Thread.sleep; @@ -36,7 +37,7 @@ public class GroupRoomService { /**踢出时间*/ private static final String[] KICK_TIME = {"30","60","120","180"}; - private static final String _getSvr(Jedis jedis0,GameBean gb){ + public static final String _getSvr(Jedis jedis0,GameBean gb){ String svr=null; Set gamesvrs = gb.svr_list; Integer conns = null; @@ -450,6 +451,7 @@ public class GroupRoomService { resData.putString("server_port", server_ip.get(1)); resData.putInt("groupId", groupId); resData.putInt("pid", gpid); + resData.putInt("gameId", gameId); resData.putInt("hpOnOff", hpOnOff); resData.putBoolean("ban_chat1", group_bean.ban_chat1); resData.putBoolean("ban_chat2", group_bean.ban_chat2); @@ -575,7 +577,27 @@ public class GroupRoomService { try { ITObject resData = publicJoinRoom(groupId,session, room_key,platform); - sendRobotData(resData.getString("room_id"),groupId); + + + int gameId1 = resData.getInt("gameId"); + int pid = resData.getInt("pid"); + String robot_host = null; + if(gameId1!=0) { + if (gameId1 == 10) { + robot_host = "127.0.0.1:8701"; + } + if (gameId1 == 22) { + robot_host = "127.0.0.1:8722"; + } + /*if (gameId1 == 66&&(pid==52||pid==26)) { + robot_host = "127.0.0.1:8766"; + }*/ + } + if(StringUtil.isNotEmpty(robot_host)) { + sendRoboJointData(resData.getString("room_id"),groupId,robot_host,gameId1); + } + + Jedis jedis11 = Redis.use("group1_db11").getJedis(); jedis11.zremrangeByScore(grooms_key, 0, 0); jedis11.close(); @@ -594,13 +616,98 @@ public class GroupRoomService { * //发起机器人请求 * @return */ - public static ITObject sendRobotData(String roomid,int groupid){ - - + public static ITObject sendRoboJointData(String roomid,int groupid, String robot_host,int gameId){ + System.out.println("sendRoboJointData"); + Jedis js0 = Redis.use("group1_db0").getJedis(); + Jedis js2 = Redis.use("group1_db2").getJedis(); + String robot = js0.hget("room:"+roomid,"robot"); + System.out.println(robot); + String plays = js0.hget("room:"+roomid,"players"); + System.out.println(plays); + if (StringUtil.isEmpty(plays)) { + return null; + } + System.out.println(plays); + ITArray players = TArray.newFromJsonData(plays); + if (players.size()!=1){ + return null; + } + int robotid = players.getInt(0); CompletableFuture future = CompletableFuture.supplyAsync(() -> { System.out.println("sendRobotData"); // 执行任务 - Jedis js1 = Redis.use("group1_db2").getJedis(); + try { + Thread eventThread = new Thread(() -> { + while (true) { + NetManager.processEvents(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + break; + } catch (Exception e) { + } + } + }, "tstse"+robotid); + + eventThread.setDaemon(true); // 设置为守护线程 + eventThread.start(); + // + String wokelock = "wokelock"; + if(robotid!=0){ + js2.set(wokelock+robotid, String.valueOf(1)); + js2.expire(wokelock+robotid, 900); + TaurusClient client = new TaurusClient(robot_host, "games"+robotid, TaurusClient.ConnectionProtocol.Tcp); + client.setSession("abbccccd"); + client.connect(); + sleep(1000); + ITObject params = TObject.newInstance(); + params.putString("roomid",roomid); + params.putInt("groupid",groupid); + params.putInt("robotid",robotid); + Message msg= client.send("225", params, response -> { + System.out.println("abcd"); + }); + sleep(5000); + eventThread.setDaemon(false); + client.killConnection(); + + } + eventThread.yield(); + log.info("sendRoboJointData :"+roomid+"robotid:"+robotid); + }catch (Exception e){ + + }finally { + js0.close(); + js2.close(); + } + return "执行结果"; + }); + + + + //client.killConnection(); + return null; + } + + /** + * //发起机器人请求 + * @return + */ + public static ITObject sendRobotData(String roomid,int groupid,String robot_host,int gameId){ + + Jedis js1 = Redis.use("group1_db2").getJedis(); + + String flag = js1.get("roomsend"+roomid); + if(flag!=null){ + return null; + } + + + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + // 执行任务 + //Jedis js1 = Redis.use("group1_db2").getJedis(); + js1.set("roomsend"+roomid,1+""); + js1.expire("roomsend"+roomid,5); try { Thread eventThread = new Thread(() -> { while (true) { @@ -618,41 +725,49 @@ public class GroupRoomService { eventThread.start(); int robotid = 0; // - Map jsRobot = js1.hgetAll("gallrobot"); + Map jsRobot = js1.hgetAll("{robot426149}"+gameId); + String wokelock = "wokelock"; for (String key : jsRobot.keySet()) { - if(Integer.parseInt(jsRobot.get(key))==0){ + String tmp = js1.get(wokelock+key); + if(StringUtil.isEmpty(tmp)){ robotid = Integer.parseInt(key); } } + if(robotid!=0){ - TaurusClient client = new TaurusClient("192.168.0.32:8701", "games", TaurusClient.ConnectionProtocol.Tcp); + js1.set(wokelock+robotid, String.valueOf(1)); + js1.expire(wokelock+robotid,900); + TaurusClient client = new TaurusClient(robot_host, "games"+robotid, TaurusClient.ConnectionProtocol.Tcp); client.setSession("abbccccd"); client.connect(); - sleep(2000); + sleep(1000); ITObject params = TObject.newInstance(); params.putString("roomid",roomid); params.putInt("groupid",groupid); params.putInt("robotid",robotid); System.out.println("ssss"); System.out.println(client.isConnected()); + log.info("=====================sendRobotData发送前 :"+roomid+"robotid:"+robotid); Message msg= client.send("225", params, response -> { System.out.println("abcd"); - }); + log.info("=====================sendRobotData发送了 :"+roomid+"robotid:"+robotid); sleep(10000); - eventThread.stop(); - js1.hset("g{330800}:robot",robotid+"", String.valueOf(1)); + eventThread.setDaemon(false); + client.killConnection(); } + eventThread.yield(); + log.info("sendRobotData :"+roomid+"robotid:"+robotid); }catch (Exception e){ }finally { + js1.close(); + } return "执行结果"; }); - - //client.killConnection(); return null; } @@ -673,6 +788,7 @@ public class GroupRoomService { String grooms_key = GroupCache.genRoomsKey(groupId); ITObject resData = null; Set rooms = null; + Jedis jedis0 = Redis.use("group1_db0").getJedis(); Jedis jedis = Redis.use("group1_db11").getJedis(); try { rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value); @@ -1097,12 +1213,58 @@ public class GroupRoomService { String key = createGroupRoom(session, groupId, pid); resData = publicJoinRoom(groupId,session, key,platform); } - sendRobotData(resData.getString("room_id"),groupId); + + + Jedis jedis11 = Redis.use("group1_db11").getJedis(); try { jedis11.zremrangeByScore(grooms_key, 0, 0); + String gameId1 = jedis11.hget("g{426149}:play:"+pid,"gameId"); + String robot_host = null; + if(StringUtil.isNotEmpty(gameId1)) { + if (Integer.parseInt(gameId1) == 10) { + robot_host = "127.0.0.1:8701"; + } + if (Integer.parseInt(gameId1) == 22) { + robot_host = "127.0.0.1:8722"; + } + if (Integer.parseInt(gameId1) == 66) { + robot_host = "127.0.0.1:8766"; + } + + + 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 { + sendRobotData(roomid, groupId,robot_host,Integer.parseInt(gameId1)); + } + } + + } + }finally { + jedis0.close(); jedis11.close(); } return resData; diff --git a/game_web/web_group/src/main/webapp/config/taurus-core.xml b/game_web/web_group/src/main/webapp/config/taurus-core.xml index 7f87a25..1fa76ba 100644 --- a/game_web/web_group/src/main/webapp/config/taurus-core.xml +++ b/game_web/web_group/src/main/webapp/config/taurus-core.xml @@ -43,7 +43,7 @@ db1 com.mysql.cj.jdbc.Driver - jdbc:mysql://8.138.242.190:8060/wb_game + jdbc:mysql://47.109.55.7:8060/wb_game root 6KYnXJjGhxNceF8e @@ -86,15 +86,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/game_web/web_group/src/main/webapp/logs/web_main.log b/game_web/web_group/src/main/webapp/logs/web_main.log index 43f7cc9..bc45740 100644 --- a/game_web/web_group/src/main/webapp/logs/web_main.log +++ b/game_web/web_group/src/main/webapp/logs/web_main.log @@ -1,696 +1,1662 @@ -04 二月 2026 | 14:02:16,795 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:02:16,871 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:02:36,494 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:327197 player:[520191,733468] fake_json:1 -04 二月 2026 | 14:02:53,410 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 115777 -04 二月 2026 | 14:02:53,782 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:592ms -04 二月 2026 | 14:02:55,261 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:564ms -04 二月 2026 | 14:02:58,063 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:03:00,179 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2491ms -04 二月 2026 | 14:05:22,235 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:689567 player:[870909,285195] fake_json:1 -04 二月 2026 | 14:06:08,935 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:340133 player:[990477,148839] fake_json:1 -04 二月 2026 | 14:08:46,314 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:135569 player:[108473,992179] fake_json:1 -04 二月 2026 | 14:09:21,015 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:780903 player:[658983,223369] fake_json:1 -04 二月 2026 | 14:11:41,353 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:783725 player:[395743,608562] fake_json:1 -04 二月 2026 | 14:12:50,865 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:672847 player:[505572,446021] fake_json:1 -04 二月 2026 | 14:13:40,884 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:347815 player:[277652,455295] fake_json:1 -04 二月 2026 | 14:14:40,715 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:459447 player:[232304,893772] fake_json:1 -04 二月 2026 | 14:16:05,995 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:16:06,042 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:16:11,683 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:449672 player:[316412,950997] fake_json:1 -04 二月 2026 | 14:17:24,569 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:17:24,615 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:17:30,877 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:503519 player:[516400,657879] fake_json:1 -04 二月 2026 | 14:18:01,314 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1926ms -04 二月 2026 | 14:18:13,100 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:18:13,151 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:18:24,797 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1644ms -04 二月 2026 | 14:18:36,459 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1603ms -04 二月 2026 | 14:18:42,069 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:18:42,147 | ERROR | mpnet connect thread | service.io.ISocket | | Connection error -java.net.SocketException: Socket operation on nonsocket: configureBlocking - at java.net.DualStackPlainSocketImpl.configureBlocking(Native Method) - at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:84) - at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) - at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) - at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) - at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) - at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) - at java.net.Socket.connect(Socket.java:606) - at com.group.service.io.SocketTcp.connectThread(SocketTcp.java:53) - at com.group.service.io.SocketTcp.access$000(SocketTcp.java:19) - at com.group.service.io.SocketTcp$1.run(SocketTcp.java:39) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 14:18:43,487 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2110ms -04 二月 2026 | 14:19:16,244 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:323634 player:[768647,268775] fake_json:1 -04 二月 2026 | 14:19:40,971 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:911667 player:[161367,296214] fake_json:1 -04 二月 2026 | 14:21:15,767 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:266678 player:[609966,945218] fake_json:1 -04 二月 2026 | 14:21:19,485 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:21:19,532 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:21:27,883 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:21:29,501 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2010ms -04 二月 2026 | 14:22:17,968 | ERROR | Thread-31 | service.io.ISocket | | Receiving failed.: +05 二月 2026 | 01:50:39,253 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 01:50:39,306 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 01:50:40,917 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:601854 player:[277652,689714] fake_json:1 +05 二月 2026 | 01:53:58,193 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 01:53:58,240 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 01:54:34,029 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 01:54:34,084 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 01:54:36,480 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 112233 +05 二月 2026 | 01:54:36,823 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:495ms +05 二月 2026 | 01:54:38,330 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:502ms +05 二月 2026 | 01:55:13,355 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 112233 +05 二月 2026 | 01:55:13,908 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:770ms +05 二月 2026 | 01:55:14,949 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:458ms +05 二月 2026 | 01:55:15,954 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:842ms +05 二月 2026 | 01:55:16,036 | INFO | tstse | service.io.SocketEngine | | status : Connect +05 二月 2026 | 01:55:45,362 | ERROR | Thread-31 | service.io.ISocket | | Receiving failed.: com.group.service.io.TSocketException at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 14:22:58,394 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:22:58,440 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:23:52,922 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:23:52,970 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:23:55,178 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:23:59,097 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4447ms -04 二月 2026 | 14:24:06,046 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:859644 player:[362003,977049] fake_json:1 -04 二月 2026 | 14:24:26,424 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:24:29,831 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3701ms -04 二月 2026 | 14:24:35,853 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:744437 player:[870909,157747] fake_json:1 -04 二月 2026 | 14:26:28,897 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:26:28,954 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:26:50,031 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:26:50,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:26:53,790 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:26:57,610 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4168ms -04 二月 2026 | 14:27:15,907 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:309463 player:[914143,198184] fake_json:1 -04 二月 2026 | 14:27:25,911 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:611363 player:[976274,658983] fake_json:1 -04 二月 2026 | 14:27:56,632 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:27:56,680 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:28:12,363 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:28:16,139 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4124ms -04 二月 2026 | 14:28:46,192 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:490194 player:[168199,705790] fake_json:1 -04 二月 2026 | 14:29:53,423 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:29:53,473 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:29:58,153 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:30:00,291 | ERROR | Thread-30 | group.service.HttpClient | | -java.net.MalformedURLException: no protocol: 192.168.0.32:8701225 - at java.net.URL.(URL.java:610) - at java.net.URL.(URL.java:507) - at java.net.URL.(URL.java:456) - at com.group.service.HttpClient.__requestAsync(HttpClient.java:79) - at com.group.service.HttpClient.__sendMsg(HttpClient.java:69) - at com.group.service.HttpClient.access$000(HttpClient.java:24) - at com.group.service.HttpClient$2.run(HttpClient.java:188) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 14:30:01,934 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4393ms -04 二月 2026 | 14:30:21,055 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:594197 player:[301188,957316] fake_json:1 -04 二月 2026 | 14:30:36,895 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:30:36,942 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:30:43,221 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:30:50,264 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7463ms -04 二月 2026 | 14:31:30,985 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:789114 player:[232304,689714] fake_json:1 -04 二月 2026 | 14:31:37,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:31:37,625 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:33:25,595 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:33:31,811 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6548ms -04 二月 2026 | 14:37:45,470 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:37:45,516 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:37:50,024 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:37:56,823 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7230ms -04 二月 2026 | 14:38:11,950 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:38:11,991 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:38:16,372 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:38:17,961 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2145ms -04 二月 2026 | 14:38:37,794 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:38:37,843 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:38:40,969 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:38:42,312 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1797ms -04 二月 2026 | 14:40:04,825 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:40:04,873 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:40:10,944 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:40:12,679 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2078ms -04 二月 2026 | 14:40:49,971 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:40:50,018 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:40:54,743 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:40:55,015 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:40:56,402 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2063ms -04 二月 2026 | 14:41:25,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:41:25,621 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:41:34,091 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:41:34,366 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:41:36,048 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2456ms -04 二月 2026 | 14:41:53,655 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:41:53,696 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:42:00,246 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:42:00,477 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:42:01,767 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1907ms -04 二月 2026 | 14:42:33,541 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:42:33,586 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:42:36,631 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:42:36,900 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:42:38,256 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1989ms -04 二月 2026 | 14:43:11,250 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:43:11,293 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:43:15,311 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:43:15,516 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:43:17,788 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2934ms -04 二月 2026 | 14:44:34,514 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:44:34,558 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:44:43,945 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:44:44,197 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:44:46,460 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2840ms -04 二月 2026 | 14:47:44,665 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 14:47:44,749 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 14:47:57,185 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:47:57,368 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:47:59,739 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2920ms -04 二月 2026 | 14:48:21,196 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:326ms -04 二月 2026 | 14:48:22,835 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:48:22,953 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:48:25,227 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2807ms -04 二月 2026 | 14:48:43,055 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 14:48:43,055 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 14:49:51,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:49:51,422 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:49:55,976 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:49:56,169 | INFO | games | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:49:58,527 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2856ms -04 二月 2026 | 14:51:30,625 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:51:30,669 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:51:36,495 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:51:36,730 | INFO | games | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:51:39,127 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2969ms -04 二月 2026 | 14:51:51,896 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:51:51,939 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:51:53,986 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:51:54,273 | INFO | games | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:51:56,715 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3083ms -04 二月 2026 | 14:52:26,191 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:52:26,235 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:52:32,446 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:52:32,663 | INFO | games | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:52:35,266 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3173ms -04 二月 2026 | 14:52:50,754 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:52:51,050 | INFO | games | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:52:53,185 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2741ms -04 二月 2026 | 14:52:57,065 | INFO | qtp391618063-71 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:52:57,271 | INFO | games | service.io.SocketEngine | | status : Connect -04 二月 2026 | 14:52:59,715 | INFO | qtp391618063-71 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3094ms -04 二月 2026 | 14:56:48,302 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:56:48,351 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:56:49,317 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:56:50,885 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2008ms -04 二月 2026 | 14:57:18,494 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:57:18,535 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:57:22,556 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:57:23,981 | ERROR | qtp391618063-67 | taurus.web.WebFilter | | -java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer - at com.taurus.core.entity.TObject.getInt(TObject.java:130) - at com.group.service.GroupRoomService.matchRoom(GroupRoomService.java:1074) - at com.group.controller.GroupRoomController.matchRoom(GroupRoomController.java:32) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:498) - at com.taurus.web.TWebServer.handle(TWebServer.java:166) - at com.taurus.web.WebFilter.doFilter(WebFilter.java:58) - at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1487) - at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) - at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) - at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) - at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) - at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) - at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427) - at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) - at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) - at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) - at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) - at org.eclipse.jetty.server.Server.handle(Server.java:370) - at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) - at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984) - at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045) - at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) - at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236) - at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) - at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696) - at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53) - at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) - at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 14:57:23,984 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1725ms -04 二月 2026 | 14:57:46,909 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:57:46,952 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 14:57:48,458 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 14:57:49,489 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1452ms -04 二月 2026 | 14:58:56,219 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 14:58:56,261 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 15:01:46,558 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 15:01:46,604 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 15:25:50,587 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 15:25:50,649 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 15:25:59,065 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:6011ms -04 二月 2026 | 15:26:20,493 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:26:23,973 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4180ms -04 二月 2026 | 15:26:23,981 | INFO | games | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:26:43,640 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:26:46,841 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3754ms -04 二月 2026 | 15:26:46,877 | INFO | games | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:27:05,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 15:27:05,503 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 15:27:12,010 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:27:16,423 | INFO | games2 | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:27:16,432 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:5402ms -04 二月 2026 | 15:27:27,197 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777 -04 二月 2026 | 15:27:28,246 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:1314ms -04 二月 2026 | 15:27:28,805 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:1123ms -04 二月 2026 | 15:27:33,399 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:3623ms -04 二月 2026 | 15:28:24,197 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 15:28:24,238 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 15:28:29,424 | INFO | qtp391618063-59 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:28:33,271 | INFO | games2 | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:28:33,414 | INFO | qtp391618063-59 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4824ms -04 二月 2026 | 15:28:49,649 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 15:28:49,690 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 15:29:09,405 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 15:29:09,450 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 15:29:12,556 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:29:15,810 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:29:17,845 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6034ms -04 二月 2026 | 15:30:29,984 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:30:34,002 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:30:35,991 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:8477ms -04 二月 2026 | 15:32:23,530 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:32:23,530 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:33:26,673 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:33:31,203 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:33:33,175 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7215ms -04 二月 2026 | 15:34:23,289 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 15:34:23,331 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 15:34:34,777 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:34:39,613 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:34:41,647 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7796ms -04 二月 2026 | 15:37:11,786 | ERROR | Thread-29 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:37:11,858 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:37:32,358 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:37:37,041 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:37:39,006 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7604ms -04 二月 2026 | 15:38:13,290 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:38:17,915 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:38:20,174 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7592ms -04 二月 2026 | 15:38:21,374 | ERROR | Thread-39 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:38:21,374 | ERROR | Thread-35 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:38:40,019 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:38:43,954 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:38:45,982 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6861ms -04 二月 2026 | 15:42:35,519 | ERROR | Thread-43 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:42:35,539 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:42:53,549 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:42:57,450 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:42:59,447 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7086ms -04 二月 2026 | 15:43:32,392 | ERROR | Thread-51 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:43:32,417 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:43:33,381 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:43:38,078 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:43:39,263 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6690ms -04 二月 2026 | 15:44:37,280 | ERROR | Thread-56 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:44:37,284 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:44:53,697 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:44:57,396 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:44:59,499 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6511ms -04 二月 2026 | 15:45:34,664 | ERROR | Thread-61 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:45:34,676 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:45:45,855 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:45:49,621 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:45:51,697 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6654ms -04 二月 2026 | 15:49:16,689 | ERROR | Thread-66 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:49:16,701 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:49:20,659 | INFO | qtp391618063-124 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:49:24,439 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:49:26,423 | INFO | qtp391618063-124 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6362ms -04 二月 2026 | 15:51:45,966 | INFO | qtp391618063-134 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:51:50,802 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:51:52,722 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7509ms -04 二月 2026 | 15:52:16,160 | INFO | qtp391618063-134 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 15:52:17,103 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1555ms -04 二月 2026 | 15:52:22,556 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:561ms -04 二月 2026 | 15:52:52,871 | ERROR | Thread-80 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:52:52,871 | ERROR | Thread-73 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:53:01,624 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 115777 -04 二月 2026 | 15:53:01,955 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:582ms -04 二月 2026 | 15:53:02,420 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:487ms -04 二月 2026 | 15:53:03,682 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:53:05,501 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:53:07,479 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4178ms -04 二月 2026 | 15:53:23,466 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 15:53:24,037 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:793ms -04 二月 2026 | 15:53:24,532 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:493ms -04 二月 2026 | 15:53:27,905 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 15:53:29,579 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 15:53:31,614 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3979ms -04 二月 2026 | 15:54:08,273 | ERROR | Thread-90 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:54:08,273 | ERROR | Thread-85 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 16:01:37,449 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 16:01:37,491 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 16:01:46,031 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:01:46,537 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:647ms -04 二月 2026 | 16:01:47,607 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:463ms -04 二月 2026 | 16:01:50,455 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:379ms -04 二月 2026 | 16:01:53,487 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1054ms -04 二月 2026 | 16:02:01,417 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:02:01,734 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:649ms -04 二月 2026 | 16:02:02,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:02:03,427 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:862ms -04 二月 2026 | 16:02:04,375 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:641ms -04 二月 2026 | 16:02:16,575 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:02:16,897 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:520ms -04 二月 2026 | 16:02:17,492 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:545ms -04 二月 2026 | 16:02:20,677 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:338ms -04 二月 2026 | 16:02:23,547 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:02:25,185 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:02:26,271 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:02:26,630 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:641ms -04 二月 2026 | 16:02:27,232 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:609ms -04 二月 2026 | 16:02:27,306 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4192ms -04 二月 2026 | 16:03:24,217 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:03:24,601 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:653ms -04 二月 2026 | 16:03:24,932 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:03:25,286 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:479ms -04 二月 2026 | 16:03:26,515 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:551ms -04 二月 2026 | 16:03:31,507 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:367ms -04 二月 2026 | 16:03:37,117 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:03:37,537 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:580ms -04 二月 2026 | 16:03:37,998 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:03:38,451 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:587ms -04 二月 2026 | 16:03:39,721 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:495ms -04 二月 2026 | 16:03:45,974 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:377360 player:[456982,141106] fake_json:1 -04 二月 2026 | 16:04:05,338 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 16:04:05,391 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 16:04:08,687 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:04:10,863 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:04:12,988 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4795ms -04 二月 2026 | 16:04:16,345 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:648ms -04 二月 2026 | 16:04:22,074 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 16:04:22,132 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 16:04:28,873 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:04:29,261 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:623ms -04 二月 2026 | 16:04:31,394 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:04:33,106 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:04:35,188 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4228ms -04 二月 2026 | 16:04:42,316 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:04:43,136 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1221ms -04 二月 2026 | 16:04:43,737 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:1113ms -04 二月 2026 | 16:04:57,253 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:04:57,552 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:538ms -04 二月 2026 | 16:04:58,471 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:494ms -04 二月 2026 | 16:05:00,314 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:05:00,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:05:00,769 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:805ms -04 二月 2026 | 16:05:01,106 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:500ms -04 二月 2026 | 16:05:21,168 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:500433 player:[503162,658983] fake_json:1 -04 二月 2026 | 16:05:51,193 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:376250 player:[296214,457322] fake_json:1 -04 二月 2026 | 16:06:27,138 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 16:06:27,151 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 16:07:22,616 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 16:07:22,663 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 16:07:29,364 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:07:31,479 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:07:33,507 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4640ms -04 二月 2026 | 16:08:02,000 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:616587 player:[834603,923379] fake_json:1 -04 二月 2026 | 16:08:26,452 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:224143 player:[223369,152827] fake_json:1 -04 二月 2026 | 16:09:36,205 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:882695 player:[745978,447305] fake_json:1 -04 二月 2026 | 16:09:45,998 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:09:46,542 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:726ms -04 二月 2026 | 16:10:14,431 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:10:14,893 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:813ms -04 二月 2026 | 16:10:57,827 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 16:10:57,876 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive -04 二月 2026 | 16:11:21,577 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:147802 player:[857709,689714] fake_json:1 -04 二月 2026 | 16:11:41,014 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:165651 player:[268301,608562] fake_json:1 -04 二月 2026 | 16:13:15,217 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555 -04 二月 2026 | 16:13:15,910 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:850ms -04 二月 2026 | 16:13:18,098 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:472ms -04 二月 2026 | 16:13:20,968 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555 -04 二月 2026 | 16:13:21,528 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:693ms -04 二月 2026 | 16:13:35,618 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 16:13:36,431 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:976ms -04 二月 2026 | 16:13:37,882 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:571ms -04 二月 2026 | 16:13:40,953 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:410ms -04 二月 2026 | 16:13:49,204 | INFO | qtp391618063-85 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:13:50,755 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:13:50,985 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:280253 player:[635285,923379] fake_json:1 -04 二月 2026 | 16:13:52,767 | INFO | qtp391618063-85 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3965ms -04 二月 2026 | 16:14:03,848 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:750ms -04 二月 2026 | 16:14:05,254 | INFO | qtp391618063-86 | group.controller.GroupController | | jefe_test: 102555 -04 二月 2026 | 16:14:05,728 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:653ms -04 二月 2026 | 16:14:10,836 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:14:12,682 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:14:14,745 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:4168ms -04 二月 2026 | 16:15:16,010 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:860116 player:[751231,427087] fake_json:1 -04 二月 2026 | 16:15:40,120 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 16:15:40,165 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 16:16:01,506 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:383709 player:[977049,137207] fake_json:1 -04 二月 2026 | 16:16:04,352 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1942ms -04 二月 2026 | 16:16:17,091 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1448ms -04 二月 2026 | 16:16:21,085 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:16:22,832 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:16:24,790 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3957ms -04 二月 2026 | 16:18:41,045 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:894419 player:[624684,232304] fake_json:1 -04 二月 2026 | 16:18:44,517 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057 -04 二月 2026 | 16:18:44,978 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:669ms -04 二月 2026 | 16:18:46,195 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:525057] time:514ms -04 二月 2026 | 16:18:47,452 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057 -04 二月 2026 | 16:18:47,829 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:538ms -04 二月 2026 | 16:19:02,221 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 177475 -04 二月 2026 | 16:19:02,566 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:177475] time:532ms -04 二月 2026 | 16:19:03,858 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:177475] time:518ms -04 二月 2026 | 16:19:05,761 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:19:08,164 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:19:10,217 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:4696ms -04 二月 2026 | 16:19:40,542 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 16:19:41,933 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 16:19:44,154 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:3868ms -04 二月 2026 | 16:19:46,392 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:113345 player:[380267,870909] fake_json:1 -04 二月 2026 | 16:21:15,828 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:755135 player:[992179,657879] fake_json:1 -04 二月 2026 | 16:21:25,632 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 16:21:25,714 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer -04 二月 2026 | 16:22:11,302 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:669919 player:[733468,560202] fake_json:1 -04 二月 2026 | 16:23:35,957 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:109294 player:[977049,971057] fake_json:1 -04 二月 2026 | 16:24:15,714 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 16:24:15,786 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer -04 二月 2026 | 16:24:36,017 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:728457 player:[426015,950997] fake_json:1 -04 二月 2026 | 16:24:45,763 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 16:24:45,774 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer -04 二月 2026 | 16:26:15,848 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:751474 player:[176545,909321] fake_json:1 -04 二月 2026 | 16:26:45,840 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:580977 player:[772988,380267] fake_json:1 -04 二月 2026 | 16:28:11,130 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:742665 player:[624684,287696] fake_json:1 -04 二月 2026 | 16:28:20,853 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:965585 player:[807782,153276] fake_json:1 -04 二月 2026 | 16:30:26,512 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:417703 player:[446881,745978] fake_json:1 -04 二月 2026 | 16:35:18,858 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1 -04 二月 2026 | 16:35:18,928 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1 -04 二月 2026 | 16:35:25,913 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:787124 player:[268301,426015] fake_json:1 -04 二月 2026 | 16:37:16,447 | INFO | qtp391618063-130 | group.controller.GroupController | | jefe_test: 115777 -04 二月 2026 | 16:37:16,829 | INFO | qtp391618063-130 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:761ms -04 二月 2026 | 16:37:17,400 | INFO | qtp391618063-131 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:460ms -04 二月 2026 | 16:37:18,220 | INFO | qtp391618063-120 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1273ms -04 二月 2026 | 16:38:16,070 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:578016 player:[997151,768647] fake_json:1 -04 二月 2026 | 16:38:31,060 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:133397 player:[117543,893772] fake_json:1 -04 二月 2026 | 16:40:11,144 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:372933 player:[325465,193548] fake_json:1 -04 二月 2026 | 16:41:15,999 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:142252 player:[298423,990477] fake_json:1 -04 二月 2026 | 16:42:06,416 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:451170 player:[559763,265830] fake_json:1 -04 二月 2026 | 16:43:46,318 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:400324 player:[693996,362003] fake_json:1 -04 二月 2026 | 16:44:11,453 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:992582 player:[826627,296214] fake_json:1 -04 二月 2026 | 16:46:05,988 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:940744 player:[774088,378632] fake_json:1 -04 二月 2026 | 16:47:46,149 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:740851 player:[265830,198184] fake_json:1 -04 二月 2026 | 17:47:21,143 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1 -04 二月 2026 | 17:47:21,726 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1 -04 二月 2026 | 17:47:30,880 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1 -04 二月 2026 | 17:47:31,682 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1 -04 二月 2026 | 17:48:51,277 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:840244 player:[161367,877472] fake_json:1 -04 二月 2026 | 17:49:15,965 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330433 player:[455295,771035] fake_json:1 -04 二月 2026 | 17:51:40,823 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:786319 player:[805963,582578] fake_json:1 -04 二月 2026 | 17:52:40,881 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:795690 player:[132277,733468] fake_json:1 -04 二月 2026 | 17:54:30,946 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:487446 player:[394446,772988] fake_json:1 -04 二月 2026 | 17:55:11,208 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:569922 player:[755783,893772] fake_json:1 -04 二月 2026 | 17:57:10,931 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:849837 player:[291453,987020] fake_json:1 -04 二月 2026 | 17:58:00,925 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:846448 player:[461205,909321] fake_json:1 -04 二月 2026 | 17:58:18,146 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 17:58:18,189 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 17:59:35,879 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 17:59:35,923 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 18:18:06,038 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 18:18:06,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 18:18:33,917 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 18:18:33,957 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 18:19:52,101 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 18:19:52,140 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 18:19:57,203 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:944036 player:[198184,991538] fake_json:1 -04 二月 2026 | 18:20:11,158 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 18:20:11,199 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 18:20:16,326 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:754798 player:[285195,152827] fake_json:1 -04 二月 2026 | 18:21:29,490 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 18:21:29,536 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 18:21:37,000 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 115777 -04 二月 2026 | 18:21:37,519 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:833ms -04 二月 2026 | 18:21:38,727 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:425ms -04 二月 2026 | 18:21:41,511 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 18:21:43,526 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2377ms -04 二月 2026 | 18:21:43,642 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 18:22:30,000 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 18:22:30,039 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 18:22:43,143 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777 -04 二月 2026 | 18:22:43,526 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:540ms -04 二月 2026 | 18:22:44,751 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:529ms -04 二月 2026 | 18:22:51,739 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2976ms -04 二月 2026 | 18:22:57,859 | INFO | qtp391618063-58 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:392ms -04 二月 2026 | 18:22:59,623 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:508ms -04 二月 2026 | 18:23:01,381 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 18:23:03,479 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2611ms -04 二月 2026 | 18:24:41,930 | INFO | qtp391618063-70 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:510ms -04 二月 2026 | 18:24:45,877 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2077ms -04 二月 2026 | 18:25:28,109 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 18:25:28,154 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 18:25:32,107 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 18:25:33,953 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2354ms -04 二月 2026 | 18:25:34,116 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 20:14:55,906 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 20:14:55,985 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 20:16:12,778 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 20:16:13,139 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:494ms -04 二月 2026 | 20:16:14,678 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:529ms -04 二月 2026 | 20:16:28,771 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:378ms -04 二月 2026 | 20:16:32,422 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 20:16:33,969 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1830ms -04 二月 2026 | 20:17:16,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success! -04 二月 2026 | 20:17:16,464 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! -04 二月 2026 | 20:17:26,220 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 20:17:27,241 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1328ms -04 二月 2026 | 20:19:18,588 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:256ms -04 二月 2026 | 20:19:21,209 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 20:19:22,123 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1320ms -04 二月 2026 | 20:19:22,346 | INFO | tstse | service.io.SocketEngine | | status : Connect -04 二月 2026 | 20:24:25,725 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: -com.group.service.io.TSocketException - at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) - at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) - at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) - at java.lang.Thread.run(Thread.java:750) -04 二月 2026 | 20:24:25,765 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer -04 二月 2026 | 20:29:07,054 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 112233 -04 二月 2026 | 20:29:07,410 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:496ms -04 二月 2026 | 20:29:16,413 | INFO | qtp391618063-89 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:362ms -04 二月 2026 | 20:29:21,849 | INFO | qtp391618063-78 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 -04 二月 2026 | 20:29:23,099 | INFO | qtp391618063-78 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1436ms -04 二月 2026 | 20:29:23,187 | INFO | tstse | service.io.SocketEngine | | status : Connect +05 二月 2026 | 01:56:33,714 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 01:56:33,755 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 01:57:46,690 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 +05 二月 2026 | 01:57:47,038 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:481ms +05 二月 2026 | 01:57:47,471 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:373ms +05 二月 2026 | 01:58:44,369 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 01:58:44,410 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 01:59:13,654 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 01:59:13,699 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 01:59:14,441 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 +05 二月 2026 | 01:59:14,951 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:681ms +05 二月 2026 | 01:59:17,493 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:413ms +05 二月 2026 | 01:59:51,143 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:446ms +05 二月 2026 | 02:01:37,235 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 02:01:37,283 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 02:01:51,141 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +05 二月 2026 | 02:01:51,428 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:419ms +05 二月 2026 | 02:01:51,888 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:341ms +05 二月 2026 | 02:03:36,048 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:482615 player:[989655,800751] fake_json:1 +05 二月 2026 | 02:04:05,653 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:463112 player:[176375,117543] fake_json:1 +05 二月 2026 | 02:05:00,903 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:253264 player:[834603,856463] fake_json:1 +05 二月 2026 | 03:20:26,333 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:20:26,374 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:20:34,346 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:20:34,390 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:20:50,076 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:20:50,119 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:22:56,357 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:22:56,401 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:31:37,674 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:31:37,714 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:31:53,824 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:31:53,870 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:32:12,388 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:32:12,426 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:32:22,118 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:32:22,163 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:32:31,845 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:32:31,888 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:33:03,600 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:33:03,641 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:34:07,387 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:34:07,428 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:36:36,994 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:36:37,042 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:37:00,614 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:37:00,656 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:38:09,210 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:38:09,252 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 03:41:27,017 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:819749 player:[540870,611342] fake_json:1 +05 二月 2026 | 03:44:22,700 | INFO | qtp391618063-77 | taurus.web.WebFilter | | action: get_groups[{user}:100153] time:148ms +05 二月 2026 | 03:44:29,719 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:100153] time:125ms +05 二月 2026 | 03:45:47,602 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:189168 player:[271266,274989] fake_json:1 +05 二月 2026 | 03:49:56,931 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 03:49:56,982 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:13:21,767 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:13:21,812 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:17:29,789 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:249190 player:[972135,152571] fake_json:1 +05 二月 2026 | 04:18:17,518 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:971256 player:[890306,259935] fake_json:1 +05 二月 2026 | 04:18:59,771 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:724752 player:[320128,798830] fake_json:1 +05 二月 2026 | 04:19:47,863 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:19:47,904 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:20:31,482 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:20:31,523 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:21:38,015 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:21:38,057 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:23:07,609 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:23:07,651 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:28:59,479 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:28:59,519 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:41:17,949 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:41:17,998 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:42:10,877 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:42:10,915 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:42:14,850 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:769081 player:[456351] fake_json: +05 二月 2026 | 04:42:15,351 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:597370 player:[274424] fake_json: +05 二月 2026 | 04:42:16,001 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:571175 player:[725378] fake_json: +05 二月 2026 | 04:42:16,728 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:425170 player:[249926] fake_json: +05 二月 2026 | 04:42:17,543 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:269965 player:[733813] fake_json: +05 二月 2026 | 04:42:18,333 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:381359 player:[942284] fake_json: +05 二月 2026 | 04:42:18,647 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:301762 player:[638865] fake_json: +05 二月 2026 | 04:42:18,972 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:301762 player:[638865] fake_json: +05 二月 2026 | 04:42:19,360 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:287129 player:[846812] fake_json: +05 二月 2026 | 04:42:19,634 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:287129 player:[846812] fake_json: +05 二月 2026 | 04:42:19,900 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:166452 player:[267731] fake_json: +05 二月 2026 | 04:42:20,184 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:166452 player:[267731] fake_json: +05 二月 2026 | 04:42:21,000 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:951385 player:[403768] fake_json: +05 二月 2026 | 04:42:21,260 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:945513 player:[912807] fake_json: +05 二月 2026 | 04:42:21,538 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:945513 player:[912807] fake_json: +05 二月 2026 | 04:42:21,825 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:932730 player:[818783] fake_json: +05 二月 2026 | 04:42:22,117 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:932730 player:[818783] fake_json: +05 二月 2026 | 04:42:22,425 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:770467 player:[461790] fake_json: +05 二月 2026 | 04:42:22,604 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:770467 player:[461790] fake_json: +05 二月 2026 | 04:42:22,732 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:770467 player:[461790] fake_json: +05 二月 2026 | 04:42:23,014 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:207889 player:[212822] fake_json: +05 二月 2026 | 04:42:23,177 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:207889 player:[212822] fake_json: +05 二月 2026 | 04:42:23,286 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:207889 player:[212822] fake_json: +05 二月 2026 | 04:42:24,153 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:941380 player:[477332] fake_json: +05 二月 2026 | 04:42:24,334 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:676899 player:[477332] fake_json: +05 二月 2026 | 04:42:24,438 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:676899 player:[477332] fake_json: +05 二月 2026 | 04:42:24,721 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:676899 player:[477332] fake_json: +05 二月 2026 | 04:42:24,845 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:510585 player:[179750] fake_json: +05 二月 2026 | 04:42:24,959 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:510585 player:[179750] fake_json: +05 二月 2026 | 04:42:25,308 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:510585 player:[179750] fake_json: +05 二月 2026 | 04:42:25,462 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:507783 player:[598580] fake_json: +05 二月 2026 | 04:42:25,598 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:507783 player:[598580] fake_json: +05 二月 2026 | 04:42:25,917 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:507783 player:[598580] fake_json: +05 二月 2026 | 04:42:25,980 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:275390 player:[161303] fake_json: +05 二月 2026 | 04:42:26,128 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:275390 player:[161303] fake_json: +05 二月 2026 | 04:42:26,531 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:275390 player:[161303] fake_json: +05 二月 2026 | 04:42:27,068 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:746702 player:[503059] fake_json: +05 二月 2026 | 04:42:27,202 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:746702 player:[503059] fake_json: +05 二月 2026 | 04:42:27,818 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:424907 player:[839344] fake_json: +05 二月 2026 | 04:42:27,919 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:424907 player:[839344] fake_json: +05 二月 2026 | 04:42:27,963 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:333831 player:[108914] fake_json: +05 二月 2026 | 04:42:28,375 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:333831 player:[108914] fake_json: +05 二月 2026 | 04:42:28,465 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:333831 player:[108914] fake_json: +05 二月 2026 | 04:42:39,092 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:697509 player:[807922] fake_json: +05 二月 2026 | 04:42:39,092 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:697509 player:[807922] fake_json: +05 二月 2026 | 04:42:39,183 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:697509 player:[807922] fake_json: +05 二月 2026 | 04:42:39,665 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:649600 player:[152687] fake_json: +05 二月 2026 | 04:42:39,670 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:649600 player:[152687] fake_json: +05 二月 2026 | 04:42:39,835 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:649600 player:[152687] fake_json: +05 二月 2026 | 04:42:40,418 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:613803 player:[598580] fake_json: +05 二月 2026 | 04:42:40,418 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:613803 player:[598580] fake_json: +05 二月 2026 | 04:42:40,561 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:613803 player:[598580] fake_json: +05 二月 2026 | 04:42:41,106 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:338339 player:[950058] fake_json: +05 二月 2026 | 04:42:41,106 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:338339 player:[950058] fake_json: +05 二月 2026 | 04:42:41,242 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:338339 player:[950058] fake_json: +05 二月 2026 | 04:42:41,684 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:231100 player:[199211] fake_json: +05 二月 2026 | 04:42:41,685 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:231100 player:[199211] fake_json: +05 二月 2026 | 04:42:41,846 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:231100 player:[199211] fake_json: +05 二月 2026 | 04:42:42,199 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:122423 player:[320932] fake_json: +05 二月 2026 | 04:42:42,218 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:122423 player:[320932] fake_json: +05 二月 2026 | 04:42:42,358 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:122423 player:[320932] fake_json: +05 二月 2026 | 04:42:43,246 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:922358 player:[780164] fake_json: +05 二月 2026 | 04:42:43,276 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:922358 player:[780164] fake_json: +05 二月 2026 | 04:42:43,427 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:529693 player:[598580] fake_json: +05 二月 2026 | 04:42:43,833 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:529693 player:[598580] fake_json: +05 二月 2026 | 04:42:43,835 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:529693 player:[598580] fake_json: +05 二月 2026 | 04:42:43,973 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:261655 player:[982140] fake_json: +05 二月 2026 | 04:42:44,430 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:261655 player:[982140] fake_json: +05 二月 2026 | 04:42:44,430 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:261655 player:[982140] fake_json: +05 二月 2026 | 04:42:44,812 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:937313 player:[733813] fake_json: +05 二月 2026 | 04:42:45,228 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:673656 player:[179750] fake_json: +05 二月 2026 | 04:42:45,238 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:673656 player:[179750] fake_json: +05 二月 2026 | 04:42:45,466 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:673656 player:[179750] fake_json: +05 二月 2026 | 04:42:45,883 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:320810 player:[939038] fake_json: +05 二月 2026 | 04:42:45,921 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:320810 player:[939038] fake_json: +05 二月 2026 | 04:42:46,054 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:320810 player:[939038] fake_json: +05 二月 2026 | 04:42:46,393 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:273102 player:[829038] fake_json: +05 二月 2026 | 04:42:46,454 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:273102 player:[829038] fake_json: +05 二月 2026 | 04:42:46,619 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:273102 player:[829038] fake_json: +05 二月 2026 | 04:42:46,942 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 room:190975 player:[504700] fake_json: +05 二月 2026 | 04:42:46,977 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 room:190975 player:[504700] fake_json: +05 二月 2026 | 04:42:47,171 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 room:190975 player:[504700] fake_json: +05 二月 2026 | 04:43:03,816 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:43:03,858 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:43:30,997 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:909531 player:[655994] fake_json: +05 二月 2026 | 04:43:32,634 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:945720 player:[797820] fake_json: +05 二月 2026 | 04:43:41,179 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:409365 player:[587607] fake_json: +05 二月 2026 | 04:43:49,540 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:387755 player:[764152] fake_json: +05 二月 2026 | 04:44:08,694 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:377875 player:[253896,837886] fake_json:1 +05 二月 2026 | 04:44:35,491 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 04:44:35,532 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 04:44:43,330 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:801943 player:[701609] fake_json: +05 二月 2026 | 04:44:43,927 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:291126 player:[610511] fake_json: +05 二月 2026 | 04:44:44,561 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:269797 player:[892347] fake_json: +05 二月 2026 | 04:44:56,760 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:837456 player:[837735] fake_json: +05 二月 2026 | 04:44:56,919 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:837456 player:[837735] fake_json: +05 二月 2026 | 04:45:08,747 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:904320 player:[832682] fake_json: +05 二月 2026 | 04:45:09,655 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:454726 player:[319679] fake_json: +05 二月 2026 | 04:45:10,232 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:142486 player:[517067] fake_json: +05 二月 2026 | 04:45:11,864 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:979194 player:[436813] fake_json: +05 二月 2026 | 04:45:48,738 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:599506 player:[349401] fake_json: +05 二月 2026 | 04:45:49,958 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:828530 player:[349401] fake_json: +05 二月 2026 | 04:45:51,733 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:342778 player:[458528] fake_json: +05 二月 2026 | 04:45:53,614 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:179172 player:[349401] fake_json: +05 二月 2026 | 04:46:20,334 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:694465 player:[972225] fake_json: +05 二月 2026 | 04:46:21,408 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:580199 player:[990573] fake_json: +05 二月 2026 | 04:46:30,089 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:704832 player:[121746] fake_json: +05 二月 2026 | 04:46:37,033 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:986611 player:[924606] fake_json: +05 二月 2026 | 04:46:37,884 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:539946 player:[271337] fake_json: +05 二月 2026 | 04:46:44,843 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:608969 player:[222174] fake_json: +05 二月 2026 | 04:46:54,711 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:741007 player:[729707] fake_json: +05 二月 2026 | 04:47:01,331 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:285265 player:[855893,561100] fake_json:1 +05 二月 2026 | 04:47:02,775 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:823969 player:[849110] fake_json: +05 二月 2026 | 04:47:09,055 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:524463 player:[727925] fake_json: +05 二月 2026 | 04:47:26,766 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:229678 player:[549830] fake_json: +05 二月 2026 | 04:47:44,442 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:436903 player:[317325] fake_json: +05 二月 2026 | 04:48:21,077 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:668920 player:[229402] fake_json: +05 二月 2026 | 04:48:21,755 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:408170 player:[576545] fake_json: +05 二月 2026 | 04:48:23,023 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:233794 player:[833266] fake_json: +05 二月 2026 | 04:48:31,238 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:319360 player:[533300] fake_json: +05 二月 2026 | 04:48:40,103 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:924181 player:[334838] fake_json: +05 二月 2026 | 04:48:52,375 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:454352 player:[132788] fake_json: +05 二月 2026 | 04:48:54,052 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:735739 player:[306307] fake_json: +05 二月 2026 | 04:49:01,771 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:808180 player:[136064] fake_json: +05 二月 2026 | 04:49:05,861 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:761670 player:[814489] fake_json: +05 二月 2026 | 04:49:15,114 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:748337 player:[699552] fake_json: +05 二月 2026 | 04:49:16,000 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:688650 player:[506792] fake_json: +05 二月 2026 | 04:49:42,316 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:696237 player:[268069] fake_json: +05 二月 2026 | 04:49:43,033 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:668046 player:[807820] fake_json: +05 二月 2026 | 04:49:44,395 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:119047 player:[735331] fake_json: +05 二月 2026 | 04:50:13,712 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:719610 player:[542131] fake_json: +05 二月 2026 | 04:50:23,970 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:542602 player:[633146] fake_json: +05 二月 2026 | 04:50:25,803 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:150081 player:[633146] fake_json: +05 二月 2026 | 04:50:27,937 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:816293 player:[171219] fake_json: +05 二月 2026 | 04:50:28,533 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:675661 player:[278898] fake_json: +05 二月 2026 | 04:50:29,109 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:414491 player:[318369] fake_json: +05 二月 2026 | 04:50:54,035 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:597367 player:[692518] fake_json: +05 二月 2026 | 04:50:54,094 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:597367 player:[692518] fake_json: +05 二月 2026 | 04:50:55,032 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:488126 player:[855501] fake_json: +05 二月 2026 | 04:50:55,144 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:488126 player:[855501] fake_json: +05 二月 2026 | 04:50:56,314 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:683970 player:[833434] fake_json: +05 二月 2026 | 04:50:56,362 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:683970 player:[833434] fake_json: +05 二月 2026 | 04:50:57,233 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:764851 player:[973618] fake_json: +05 二月 2026 | 04:50:57,306 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:764851 player:[973618] fake_json: +05 二月 2026 | 04:52:11,529 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:261066 player:[263443] fake_json: +05 二月 2026 | 04:52:26,056 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:241232 player:[919539] fake_json: +05 二月 2026 | 04:52:29,104 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:626962 player:[366684] fake_json: +05 二月 2026 | 04:52:31,993 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:402382 player:[875627] fake_json: +05 二月 2026 | 04:52:38,786 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:119651 player:[781985] fake_json: +05 二月 2026 | 05:03:30,623 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:03:30,665 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:03:49,995 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:862052 player:[213601] fake_json: +05 二月 2026 | 05:03:50,280 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:862052 player:[213601] fake_json: +05 二月 2026 | 05:04:01,771 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:348697 player:[503133] fake_json: +05 二月 2026 | 05:04:02,855 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:935856 player:[364881] fake_json: +05 二月 2026 | 05:04:03,692 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:729754 player:[168417] fake_json: +05 二月 2026 | 05:04:04,787 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:626685 player:[304156] fake_json: +05 二月 2026 | 05:04:12,875 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:464371 player:[503412] fake_json: +05 二月 2026 | 05:04:41,381 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:198059 player:[463246] fake_json: +05 二月 2026 | 05:04:47,499 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:128762 player:[565915] fake_json: +05 二月 2026 | 05:04:55,892 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:772466 player:[565915] fake_json: +05 二月 2026 | 05:05:04,052 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:784698 player:[116977] fake_json: +05 二月 2026 | 05:05:06,017 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:547721 player:[789855] fake_json: +05 二月 2026 | 05:06:07,910 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:483577 player:[762710] fake_json: +05 二月 2026 | 05:06:24,632 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:688037 player:[269557] fake_json: +05 二月 2026 | 05:06:33,612 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:431316 player:[188648] fake_json: +05 二月 2026 | 05:06:37,688 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:282855 player:[856264] fake_json: +05 二月 2026 | 05:06:38,731 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:319523 player:[298815] fake_json: +05 二月 2026 | 05:06:53,497 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:553543 player:[380837] fake_json: +05 二月 2026 | 05:07:03,534 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:361930 player:[350889] fake_json: +05 二月 2026 | 05:07:16,372 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:503525 player:[528242] fake_json: +05 二月 2026 | 05:07:16,898 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:236899 player:[263211] fake_json: +05 二月 2026 | 05:07:25,460 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:313863 player:[774428] fake_json: +05 二月 2026 | 05:07:41,783 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:104972 player:[298784,859168] fake_json:1 +05 二月 2026 | 05:07:44,042 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:472458 player:[885529] fake_json: +05 二月 2026 | 05:07:44,640 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:125493 player:[343850] fake_json: +05 二月 2026 | 05:08:03,185 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:432087 player:[629423] fake_json: +05 二月 2026 | 05:08:04,681 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:464522 player:[869058] fake_json: +05 二月 2026 | 05:08:13,146 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:885107 player:[665588] fake_json: +05 二月 2026 | 05:08:22,863 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:785562 player:[605890] fake_json: +05 二月 2026 | 05:08:30,571 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:152953 player:[126941] fake_json: +05 二月 2026 | 05:08:30,814 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:734676 player:[990768] fake_json: +05 二月 2026 | 05:08:48,284 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:462311 player:[223370] fake_json: +05 二月 2026 | 05:09:05,250 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:692533 player:[597575] fake_json: +05 二月 2026 | 05:09:05,761 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:333472 player:[703312] fake_json: +05 二月 2026 | 05:09:13,413 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:547094 player:[277111] fake_json: +05 二月 2026 | 05:09:40,934 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:488249 player:[365881,222606] fake_json:1 +05 二月 2026 | 05:09:49,752 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:116472 player:[109097] fake_json: +05 二月 2026 | 05:09:50,763 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:774511 player:[390577] fake_json: +05 二月 2026 | 05:09:51,449 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:418931 player:[354719] fake_json: +05 二月 2026 | 05:09:59,111 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:730550 player:[340350] fake_json: +05 二月 2026 | 05:10:13,694 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:659878 player:[181048] fake_json: +05 二月 2026 | 05:10:15,445 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:266554 player:[668586] fake_json: +05 二月 2026 | 05:10:25,934 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:662598 player:[534945] fake_json: +05 二月 2026 | 05:10:26,798 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:842568 player:[747170] fake_json: +05 二月 2026 | 05:10:36,304 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:119053 player:[534945] fake_json: +05 二月 2026 | 05:10:37,111 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:181291 player:[807594] fake_json: +05 二月 2026 | 05:10:38,476 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:941518 player:[827068] fake_json: +05 二月 2026 | 05:10:47,904 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:596057 player:[144606] fake_json: +05 二月 2026 | 05:11:37,188 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:332670 player:[510159] fake_json: +05 二月 2026 | 05:12:55,741 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:682961 player:[788479] fake_json: +05 二月 2026 | 05:13:06,404 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:525665 player:[527865] fake_json: +05 二月 2026 | 05:13:11,721 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:521285 player:[788479] fake_json: +05 二月 2026 | 05:13:54,549 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:666544 player:[233013] fake_json: +05 二月 2026 | 05:24:43,805 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:24:43,845 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:24:47,651 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:645039 player:[701637] fake_json: +05 二月 2026 | 05:25:01,854 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:618852 player:[493453] fake_json: +05 二月 2026 | 05:25:01,960 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:618852 player:[493453] fake_json: +05 二月 2026 | 05:25:08,701 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:131537 player:[358235] fake_json: +05 二月 2026 | 05:25:44,565 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:212220 player:[763945] fake_json: +05 二月 2026 | 05:25:45,627 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:902669 player:[120610] fake_json: +05 二月 2026 | 05:25:45,790 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:295081 player:[625141] fake_json: +05 二月 2026 | 05:25:46,118 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:295081 player:[625141] fake_json: +05 二月 2026 | 05:25:46,937 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:112938 player:[443088] fake_json: +05 二月 2026 | 05:26:11,565 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:951263 player:[761246] fake_json: +05 二月 2026 | 05:26:12,087 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:774801 player:[761246] fake_json: +05 二月 2026 | 05:26:13,501 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:702421 player:[536853] fake_json: +05 二月 2026 | 05:26:23,454 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:193546 player:[289406] fake_json: +05 二月 2026 | 05:26:32,894 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:256826 player:[813512] fake_json: +05 二月 2026 | 05:26:46,955 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:800491 player:[105246] fake_json: +05 二月 2026 | 05:26:58,537 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:874923 player:[885102] fake_json: +05 二月 2026 | 05:26:59,008 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:717404 player:[954097,611342] fake_json:1 +05 二月 2026 | 05:26:59,198 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:297712 player:[403102] fake_json: +05 二月 2026 | 05:27:15,679 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:105458 player:[755028] fake_json: +05 二月 2026 | 05:27:24,403 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:905573 player:[587365] fake_json: +05 二月 2026 | 05:27:32,880 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:793559 player:[979908] fake_json: +05 二月 2026 | 05:27:41,244 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:749515 player:[659053] fake_json: +05 二月 2026 | 05:27:41,371 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:995654 player:[970134] fake_json: +05 二月 2026 | 05:28:12,271 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:880087 player:[324591,926022] fake_json:1 +05 二月 2026 | 05:28:18,723 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:525771 player:[628557] fake_json: +05 二月 2026 | 05:28:19,302 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:262156 player:[697210] fake_json: +05 二月 2026 | 05:28:20,399 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:430437 player:[489370] fake_json: +05 二月 2026 | 05:28:21,283 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:986627 player:[759620] fake_json: +05 二月 2026 | 05:28:28,983 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:573605 player:[455105] fake_json: +05 二月 2026 | 05:28:30,040 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:298750 player:[885229] fake_json: +05 二月 2026 | 05:29:04,671 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:677285 player:[683715] fake_json: +05 二月 2026 | 05:29:05,371 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:160407 player:[333286] fake_json: +05 二月 2026 | 05:29:06,513 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:845445 player:[683715] fake_json: +05 二月 2026 | 05:29:07,303 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:967555 player:[393626] fake_json: +05 二月 2026 | 05:29:12,897 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:834521 player:[922717,859168] fake_json:1 +05 二月 2026 | 05:29:26,507 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:379403 player:[561100,412846] fake_json:1 +05 二月 2026 | 05:29:31,962 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:951172 player:[723787] fake_json: +05 二月 2026 | 05:29:32,916 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:770377 player:[333831] fake_json: +05 二月 2026 | 05:29:39,313 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:746365 player:[220993] fake_json: +05 二月 2026 | 05:29:53,179 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:195730 player:[228639] fake_json: +05 二月 2026 | 05:29:55,201 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:490436 player:[500248] fake_json: +05 二月 2026 | 05:30:02,693 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:258686 player:[898704] fake_json: +05 二月 2026 | 05:30:10,750 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:437643 player:[269104] fake_json: +05 二月 2026 | 05:30:23,219 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:837277 player:[135686] fake_json: +05 二月 2026 | 05:30:32,902 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:383783 player:[702682] fake_json: +05 二月 2026 | 05:30:36,432 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:383949 player:[736736] fake_json: +05 二月 2026 | 05:30:52,632 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:665745 player:[537133] fake_json: +05 二月 2026 | 05:33:43,042 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:33:43,091 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:33:53,819 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:33:53,866 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:35:33,414 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:584643 player:[561100,972526] fake_json:1 +05 二月 2026 | 05:36:26,388 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:178519 player:[907904] fake_json: +05 二月 2026 | 05:36:26,824 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:678200 player:[907904] fake_json: +05 二月 2026 | 05:36:28,769 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:495785 player:[154065] fake_json: +05 二月 2026 | 05:36:46,575 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:676939 player:[991883] fake_json: +05 二月 2026 | 05:36:47,555 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:503597 player:[828730] fake_json: +05 二月 2026 | 05:37:23,906 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:37:23,950 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:37:28,432 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:413614 player:[199211] fake_json: +05 二月 2026 | 05:37:29,915 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:164947 player:[950058] fake_json: +05 二月 2026 | 05:37:31,524 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:683521 player:[939038] fake_json: +05 二月 2026 | 05:37:43,388 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:37:43,429 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:37:48,176 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:482586 player:[274424] fake_json: +05 二月 2026 | 05:38:01,134 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:570546 player:[598580] fake_json: +05 二月 2026 | 05:38:01,149 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:570546 player:[598580] fake_json: +05 二月 2026 | 05:38:02,139 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:782680 player:[152687] fake_json: +05 二月 2026 | 05:38:02,205 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:782680 player:[152687] fake_json: +05 二月 2026 | 05:38:02,764 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:687600 player:[504700] fake_json: +05 二月 2026 | 05:38:02,821 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:687600 player:[504700] fake_json: +05 二月 2026 | 05:38:10,971 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:38:11,011 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:38:16,628 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:565356 player:[461790] fake_json: +05 二月 2026 | 05:38:19,444 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:351608 player:[503059] fake_json: +05 二月 2026 | 05:38:20,439 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:361931 player:[249926] fake_json: +05 二月 2026 | 05:38:32,284 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:668689 player:[638865] fake_json: +05 二月 2026 | 05:38:32,394 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:668689 player:[638865] fake_json: +05 二月 2026 | 05:38:44,158 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:693038 player:[818783] fake_json: +05 二月 2026 | 05:38:53,782 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:301467 player:[503059] fake_json: +05 二月 2026 | 05:38:54,717 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:894776 player:[461790] fake_json: +05 二月 2026 | 05:38:55,353 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:877372 player:[249926] fake_json: +05 二月 2026 | 05:39:11,892 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:39:11,932 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:39:40,017 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:835600 player:[991883] fake_json: +05 二月 2026 | 05:39:41,052 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:830839 player:[154065] fake_json: +05 二月 2026 | 05:39:42,662 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:875922 player:[828730] fake_json: +05 二月 2026 | 05:39:43,300 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:366960 player:[939038] fake_json: +05 二月 2026 | 05:39:51,411 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:814782 player:[907904] fake_json: +05 二月 2026 | 05:39:52,467 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:704746 player:[199211] fake_json: +05 二月 2026 | 05:40:02,425 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:895994 player:[216232,972135] fake_json:1 +05 二月 2026 | 05:40:18,813 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:40:18,854 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:40:22,741 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:220447 player:[907904] fake_json: +05 二月 2026 | 05:40:37,513 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:843193 player:[154065] fake_json: +05 二月 2026 | 05:40:56,609 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:750560 player:[907904] fake_json: +05 二月 2026 | 05:40:57,143 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:576243 player:[154065] fake_json: +05 二月 2026 | 05:40:58,085 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:950046 player:[950058] fake_json: +05 二月 2026 | 05:40:58,697 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:540029 player:[939038] fake_json: +05 二月 2026 | 05:40:59,568 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:421038 player:[828730] fake_json: +05 二月 2026 | 05:41:00,834 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:672317 player:[991883] fake_json: +05 二月 2026 | 05:41:08,470 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:159614 player:[199211] fake_json: +05 二月 2026 | 05:41:17,793 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:493875 player:[154065] fake_json: +05 二月 2026 | 05:41:22,274 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:41:22,321 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:41:29,671 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:505510 player:[152687] fake_json: +05 二月 2026 | 05:41:47,794 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:511402 player:[907904] fake_json: +05 二月 2026 | 05:42:22,820 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:887190 player:[939038] fake_json: +05 二月 2026 | 05:42:23,360 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:611429 player:[828730] fake_json: +05 二月 2026 | 05:42:23,389 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:611429 player:[828730] fake_json: +05 二月 2026 | 05:42:23,904 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:432181 player:[154065] fake_json: +05 二月 2026 | 05:42:23,904 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:432181 player:[154065] fake_json: +05 二月 2026 | 05:42:25,546 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:735492 player:[991883] fake_json: +05 二月 2026 | 05:42:32,308 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:695690 player:[907904] fake_json: +05 二月 2026 | 05:42:32,308 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:695690 player:[907904] fake_json: +05 二月 2026 | 05:42:42,022 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:621559 player:[154065] fake_json: +05 二月 2026 | 05:42:49,340 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:237679 player:[828730] fake_json: +05 二月 2026 | 05:43:05,987 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:541834 player:[907904] fake_json: +05 二月 2026 | 05:43:06,983 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:754298 player:[154065] fake_json: +05 二月 2026 | 05:43:15,511 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:250125 player:[154065] fake_json: +05 二月 2026 | 05:43:18,077 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:394138 player:[177564,978181] fake_json:1 +05 二月 2026 | 05:43:31,162 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:397324 player:[828730] fake_json: +05 二月 2026 | 05:43:40,201 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:147729 player:[907904] fake_json: +05 二月 2026 | 05:43:49,512 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:724119 player:[991883] fake_json: +05 二月 2026 | 05:43:57,767 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:992771 player:[154065] fake_json: +05 二月 2026 | 05:43:58,598 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:478690 player:[828730] fake_json: +05 二月 2026 | 05:44:12,656 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:386489 player:[907904] fake_json: +05 二月 2026 | 05:44:14,295 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:771830 player:[991883] fake_json: +05 二月 2026 | 05:44:30,171 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:868512 player:[828730] fake_json: +05 二月 2026 | 05:44:39,105 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:588893 player:[991883] fake_json: +05 二月 2026 | 05:44:39,656 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:181121 player:[154065] fake_json: +05 二月 2026 | 05:44:59,653 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:44:59,692 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:45:03,355 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:342096 player:[907904] fake_json: +05 二月 2026 | 05:45:15,502 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:614871 player:[828730] fake_json: +05 二月 2026 | 05:45:15,583 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:614871 player:[828730] fake_json: +05 二月 2026 | 05:45:47,829 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:45:47,869 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:45:51,901 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:645132 player:[939038] fake_json: +05 二月 2026 | 05:45:53,779 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:779646 player:[199211] fake_json: +05 二月 2026 | 05:45:54,809 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:795009 player:[828730] fake_json: +05 二月 2026 | 05:45:55,506 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:427049 player:[991883] fake_json: +05 二月 2026 | 05:47:00,173 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:47:00,215 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:47:07,228 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:910747 player:[154065] fake_json: +05 二月 2026 | 05:47:08,165 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:880741 player:[907904] fake_json: +05 二月 2026 | 05:47:29,433 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:47:29,472 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:47:32,275 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:185003 player:[907904] fake_json: +05 二月 2026 | 05:47:32,918 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:158936 player:[939038] fake_json: +05 二月 2026 | 05:47:34,537 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:965243 player:[154065] fake_json: +05 二月 2026 | 05:47:35,095 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:529507 player:[199211] fake_json: +05 二月 2026 | 05:47:37,247 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:703827 player:[950058] fake_json: +05 二月 2026 | 05:47:37,776 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:639308 player:[991883] fake_json: +05 二月 2026 | 05:47:48,493 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:548004 player:[939038] fake_json: +05 二月 2026 | 05:47:48,864 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:941883 player:[598580] fake_json: +05 二月 2026 | 05:47:49,025 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:941883 player:[598580] fake_json: +05 二月 2026 | 05:47:49,586 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:605432 player:[939038] fake_json: +05 二月 2026 | 05:47:49,785 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:605432 player:[939038] fake_json: +05 二月 2026 | 05:47:50,175 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:436235 player:[907904] fake_json: +05 二月 2026 | 05:47:50,340 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:436235 player:[907904] fake_json: +05 二月 2026 | 05:47:50,541 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:533510 player:[199211] fake_json: +05 二月 2026 | 05:47:50,776 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:378677 player:[991883] fake_json: +05 二月 2026 | 05:47:50,985 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:378677 player:[991883] fake_json: +05 二月 2026 | 05:47:51,526 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:145719 player:[828730] fake_json: +05 二月 2026 | 05:47:51,708 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:145719 player:[828730] fake_json: +05 二月 2026 | 05:47:52,116 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:123836 player:[154065] fake_json: +05 二月 2026 | 05:47:52,377 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:123836 player:[154065] fake_json: +05 二月 2026 | 05:47:53,539 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:409598 player:[991883] fake_json: +05 二月 2026 | 05:47:53,577 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:409598 player:[991883] fake_json: +05 二月 2026 | 05:47:54,142 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:164676 player:[152687] fake_json: +05 二月 2026 | 05:47:54,170 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:164676 player:[152687] fake_json: +05 二月 2026 | 05:47:54,773 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:114613 player:[907904] fake_json: +05 二月 2026 | 05:47:54,809 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:114613 player:[907904] fake_json: +05 二月 2026 | 05:47:58,128 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:285561 player:[991883] fake_json: +05 二月 2026 | 05:48:28,458 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:874874 player:[461790] fake_json: +05 二月 2026 | 05:48:28,937 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:761270 player:[828730] fake_json: +05 二月 2026 | 05:48:29,006 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:761270 player:[828730] fake_json: +05 二月 2026 | 05:48:29,788 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:900348 player:[274424] fake_json: +05 二月 2026 | 05:48:29,795 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:900348 player:[274424] fake_json: +05 二月 2026 | 05:48:30,343 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:287623 player:[939038] fake_json: +05 二月 2026 | 05:48:30,494 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:287623 player:[939038] fake_json: +05 二月 2026 | 05:48:31,231 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:424978 player:[154065] fake_json: +05 二月 2026 | 05:48:31,297 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:424978 player:[154065] fake_json: +05 二月 2026 | 05:48:32,014 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:505751 player:[199211] fake_json: +05 二月 2026 | 05:48:32,116 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:505751 player:[199211] fake_json: +05 二月 2026 | 05:48:32,864 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:449524 player:[638865] fake_json: +05 二月 2026 | 05:48:32,999 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:449524 player:[638865] fake_json: +05 二月 2026 | 05:48:33,408 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:373076 player:[991883] fake_json: +05 二月 2026 | 05:48:33,681 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:373076 player:[991883] fake_json: +05 二月 2026 | 05:48:34,677 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:496743 player:[950058] fake_json: +05 二月 2026 | 05:48:34,750 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:496743 player:[950058] fake_json: +05 二月 2026 | 05:48:35,289 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:455429 player:[991883] fake_json: +05 二月 2026 | 05:48:35,357 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:455429 player:[991883] fake_json: +05 二月 2026 | 05:48:36,018 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:431336 player:[504700] fake_json: +05 二月 2026 | 05:48:36,143 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:431336 player:[504700] fake_json: +05 二月 2026 | 05:48:44,133 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:642227 player:[907904] fake_json: +05 二月 2026 | 05:48:44,159 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:642227 player:[907904] fake_json: +05 二月 2026 | 05:48:44,703 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:218153 player:[154065] fake_json: +05 二月 2026 | 05:48:44,737 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:218153 player:[154065] fake_json: +05 二月 2026 | 05:48:47,742 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:994768 player:[939038] fake_json: +05 二月 2026 | 05:48:48,323 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:510582 player:[199211] fake_json: +05 二月 2026 | 05:48:48,876 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:464234 player:[991883] fake_json: +05 二月 2026 | 05:48:49,800 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:497683 player:[154065] fake_json: +05 二月 2026 | 05:48:50,753 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:385861 player:[828730] fake_json: +05 二月 2026 | 05:48:51,372 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:267519 player:[991883] fake_json: +05 二月 2026 | 05:49:01,114 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:502315 player:[152687] fake_json: +05 二月 2026 | 05:49:31,650 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:543628 player:[991883] fake_json: +05 二月 2026 | 05:49:32,620 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:709196 player:[950058] fake_json: +05 二月 2026 | 05:49:33,256 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:504748 player:[199211] fake_json: +05 二月 2026 | 05:49:34,173 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:727586 player:[939038] fake_json: +05 二月 2026 | 05:49:35,405 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:729531 player:[907904] fake_json: +05 二月 2026 | 05:49:36,057 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:375276 player:[154065] fake_json: +05 二月 2026 | 05:49:37,171 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:298032 player:[828730] fake_json: +05 二月 2026 | 05:49:52,360 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:288711 player:[907904] fake_json: +05 二月 2026 | 05:49:54,999 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:829146 player:[154065] fake_json: +05 二月 2026 | 05:49:59,296 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:652447 player:[828730] fake_json: +05 二月 2026 | 05:50:04,614 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:815212 player:[907904] fake_json: +05 二月 2026 | 05:50:07,144 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:940736 player:[154065] fake_json: +05 二月 2026 | 05:50:07,770 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:608031 player:[939038] fake_json: +05 二月 2026 | 05:50:11,513 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:649929 player:[199211] fake_json: +05 二月 2026 | 05:50:12,590 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:656945 player:[154065] fake_json: +05 二月 2026 | 05:50:12,980 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:888953 player:[828730] fake_json: +05 二月 2026 | 05:50:13,152 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:456168 player:[991883] fake_json: +05 二月 2026 | 05:50:13,999 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:720064 player:[907904] fake_json: +05 二月 2026 | 05:50:14,648 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:234996 player:[152687] fake_json: +05 二月 2026 | 05:50:15,471 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:177001 player:[950058] fake_json: +05 二月 2026 | 05:50:16,936 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:754866 player:[598580] fake_json: +05 二月 2026 | 05:50:17,603 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:342822 player:[504700] fake_json: +05 二月 2026 | 05:50:18,127 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:284878 player:[939038] fake_json: +05 二月 2026 | 05:50:18,738 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:266112 player:[950058] fake_json: +05 二月 2026 | 05:50:25,444 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:791183 player:[274424] fake_json: +05 二月 2026 | 05:50:26,092 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:112883 player:[907904] fake_json: +05 二月 2026 | 05:50:26,992 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:787426 player:[154065] fake_json: +05 二月 2026 | 05:50:27,595 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:557820 player:[939038] fake_json: +05 二月 2026 | 05:50:28,580 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:497705 player:[154065] fake_json: +05 二月 2026 | 05:50:29,365 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:291710 player:[907904] fake_json: +05 二月 2026 | 05:50:30,902 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:773985 player:[907904] fake_json: +05 二月 2026 | 05:50:32,030 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:303272 player:[828730] fake_json: +05 二月 2026 | 05:50:32,677 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:259337 player:[939038] fake_json: +05 二月 2026 | 05:50:33,702 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:879194 player:[154065] fake_json: +05 二月 2026 | 05:50:41,543 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:856077 player:[991883] fake_json: +05 二月 2026 | 05:50:56,155 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:50:56,194 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:51:02,462 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:795393 player:[154065] fake_json: +05 二月 2026 | 05:51:03,473 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:447254 player:[907904] fake_json: +05 二月 2026 | 05:51:27,256 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:437618 player:[991883] fake_json: +05 二月 2026 | 05:51:27,901 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:285749 player:[154065] fake_json: +05 二月 2026 | 05:51:28,825 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:817704 player:[638865] fake_json: +05 二月 2026 | 05:51:29,370 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:580200 player:[828730] fake_json: +05 二月 2026 | 05:51:30,260 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:995899 player:[939038] fake_json: +05 二月 2026 | 05:51:31,760 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:576178 player:[907904] fake_json: +05 二月 2026 | 05:51:32,369 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:374639 player:[598580] fake_json: +05 二月 2026 | 05:51:32,919 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:225433 player:[274424] fake_json: +05 二月 2026 | 05:51:33,770 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:788349 player:[461790] fake_json: +05 二月 2026 | 05:51:34,424 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:752936 player:[504700] fake_json: +05 二月 2026 | 05:51:35,002 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:703709 player:[199211] fake_json: +05 二月 2026 | 05:51:35,651 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:393495 player:[152687] fake_json: +05 二月 2026 | 05:51:36,915 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:378423 player:[590682,197040] fake_json:1 +05 二月 2026 | 05:51:37,592 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:378423 player:[590682,197040] fake_json:1 +05 二月 2026 | 05:51:42,646 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:128133 player:[991883] fake_json: +05 二月 2026 | 05:51:56,096 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:114167 player:[942284] fake_json: +05 二月 2026 | 05:51:57,211 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:223169 player:[950058] fake_json: +05 二月 2026 | 05:52:13,854 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:668977 player:[907904] fake_json: +05 二月 2026 | 05:52:14,935 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:821446 player:[939038] fake_json: +05 二月 2026 | 05:52:16,456 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:355917 player:[504700] fake_json: +05 二月 2026 | 05:52:17,440 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:762980 player:[828730] fake_json: +05 二月 2026 | 05:52:18,360 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:763863 player:[152687] fake_json: +05 二月 2026 | 05:52:26,334 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:740079 player:[274424] fake_json: +05 二月 2026 | 05:52:27,070 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:736650 player:[950058] fake_json: +05 二月 2026 | 05:52:28,224 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:436087 player:[199211] fake_json: +05 二月 2026 | 05:52:28,796 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:382737 player:[154065] fake_json: +05 二月 2026 | 05:52:29,490 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:272787 player:[598580] fake_json: +05 二月 2026 | 05:52:30,090 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:122114 player:[907904] fake_json: +05 二月 2026 | 05:52:38,710 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:154968 player:[249926] fake_json: +05 二月 2026 | 05:52:39,996 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:724266 player:[828730] fake_json: +05 二月 2026 | 05:52:40,623 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:488713 player:[152687] fake_json: +05 二月 2026 | 05:52:41,192 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:414105 player:[504700] fake_json: +05 二月 2026 | 05:52:42,214 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:884221 player:[991883] fake_json: +05 二月 2026 | 05:52:42,857 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:701459 player:[982140] fake_json: +05 二月 2026 | 05:52:43,446 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:376119 player:[461790] fake_json: +05 二月 2026 | 05:52:52,529 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:645849 player:[818783] fake_json: +05 二月 2026 | 05:52:59,793 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:618566 player:[907904] fake_json: +05 二月 2026 | 05:53:06,282 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:317564 player:[950058] fake_json: +05 二月 2026 | 05:53:07,229 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:291491 player:[828730] fake_json: +05 二月 2026 | 05:53:09,540 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:232759 player:[939038] fake_json: +05 二月 2026 | 05:53:10,276 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:135385 player:[154065] fake_json: +05 二月 2026 | 05:53:17,269 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:893479 player:[274424] fake_json: +05 二月 2026 | 05:53:18,468 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:781755 player:[638865] fake_json: +05 二月 2026 | 05:53:18,979 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:451731 player:[991883] fake_json: +05 二月 2026 | 05:53:19,864 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:790809 player:[152687] fake_json: +05 二月 2026 | 05:53:20,439 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:218113 player:[907904] fake_json: +05 二月 2026 | 05:53:21,672 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:460865 player:[598580] fake_json: +05 二月 2026 | 05:53:28,862 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:337241 player:[199211] fake_json: +05 二月 2026 | 05:53:35,366 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:187450 player:[154065] fake_json: +05 二月 2026 | 05:53:37,408 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:835550 player:[950058] fake_json: +05 二月 2026 | 05:53:38,282 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:488020 player:[907904] fake_json: +05 二月 2026 | 05:53:49,522 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:323143 player:[503059] fake_json: +05 二月 2026 | 05:53:50,073 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:193209 player:[152687] fake_json: +05 二月 2026 | 05:53:51,066 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:814773 player:[818783] fake_json: +05 二月 2026 | 05:53:52,390 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:905513 player:[504700] fake_json: +05 二月 2026 | 05:53:53,868 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:874115 player:[598580] fake_json: +05 二月 2026 | 05:54:00,615 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:916345 player:[249926] fake_json: +05 二月 2026 | 05:54:01,199 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:290234 player:[274424] fake_json: +05 二月 2026 | 05:54:01,951 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:142398 player:[828730] fake_json: +05 二月 2026 | 05:54:02,058 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:551670 player:[154065] fake_json: +05 二月 2026 | 05:54:03,064 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:975783 player:[907904] fake_json: +05 二月 2026 | 05:54:03,710 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:341727 player:[939038] fake_json: +05 二月 2026 | 05:54:10,002 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:215338 player:[199211] fake_json: +05 二月 2026 | 05:54:40,728 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:477881 player:[950058] fake_json: +05 二月 2026 | 05:54:41,682 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:223422 player:[991883] fake_json: +05 二月 2026 | 05:54:50,393 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:933701 player:[638865] fake_json: +05 二月 2026 | 05:54:50,854 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:361230 player:[907904] fake_json: +05 二月 2026 | 05:54:51,007 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:547256 player:[199211] fake_json: +05 二月 2026 | 05:54:51,719 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:249244 player:[154065] fake_json: +05 二月 2026 | 05:54:52,605 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:469434 player:[828730] fake_json: +05 二月 2026 | 05:54:53,619 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:726863 player:[154065] fake_json: +05 二月 2026 | 05:55:00,359 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:442737 player:[152687] fake_json: +05 二月 2026 | 05:55:01,346 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:301962 player:[939038] fake_json: +05 二月 2026 | 05:55:02,502 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:716476 player:[504700] fake_json: +05 二月 2026 | 05:55:03,974 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:874830 player:[991883] fake_json: +05 二月 2026 | 05:55:04,443 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:345987 player:[950058] fake_json: +05 二月 2026 | 05:55:04,557 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:345987 player:[950058] fake_json: +05 二月 2026 | 05:55:05,348 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:647815 player:[939038] fake_json: +05 二月 2026 | 05:55:05,432 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:647815 player:[939038] fake_json: +05 二月 2026 | 05:55:08,798 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:215057 player:[828730] fake_json: +05 二月 2026 | 05:55:10,399 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:849302 player:[907904] fake_json: +05 二月 2026 | 05:55:18,543 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:905785 player:[152687] fake_json: +05 二月 2026 | 05:55:19,222 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:513629 player:[991883] fake_json: +05 二月 2026 | 05:55:19,803 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:345578 player:[461790] fake_json: +05 二月 2026 | 05:55:21,316 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:360859 player:[991883] fake_json: +05 二月 2026 | 05:55:24,676 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:911811 player:[154065] fake_json: +05 二月 2026 | 05:55:25,270 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:335505 player:[942284] fake_json: +05 二月 2026 | 05:55:25,925 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:186935 player:[154065] fake_json: +05 二月 2026 | 05:55:27,281 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:866707 player:[939038] fake_json: +05 二月 2026 | 05:55:28,852 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:350197 player:[950058] fake_json: +05 二月 2026 | 05:55:29,845 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:456828 player:[199211] fake_json: +05 二月 2026 | 05:55:30,494 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:439913 player:[503059] fake_json: +05 二月 2026 | 05:55:37,664 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:565570 player:[274424] fake_json: +05 二月 2026 | 05:55:37,930 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:550764 player:[453908,922717] fake_json:1 +05 二月 2026 | 05:55:38,535 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:913778 player:[939038] fake_json: +05 二月 2026 | 05:55:39,345 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:836297 player:[907904] fake_json: +05 二月 2026 | 05:55:39,949 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:326656 player:[991883] fake_json: +05 二月 2026 | 05:55:48,168 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:290946 player:[461790] fake_json: +05 二月 2026 | 05:55:49,289 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:615753 player:[939038] fake_json: +05 二月 2026 | 05:55:49,540 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:445134 player:[154065] fake_json: +05 二月 2026 | 05:55:49,919 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:445134 player:[154065] fake_json: +05 二月 2026 | 05:55:50,428 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:492858 player:[152687] fake_json: +05 二月 2026 | 05:55:50,834 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:394089 player:[504700] fake_json: +05 二月 2026 | 05:55:51,041 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:394089 player:[504700] fake_json: +05 二月 2026 | 05:55:58,645 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:999872 player:[950058] fake_json: +05 二月 2026 | 05:55:58,688 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:999872 player:[950058] fake_json: +05 二月 2026 | 05:56:07,153 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:714146 player:[638865] fake_json: +05 二月 2026 | 05:56:07,935 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:392459 player:[839344] fake_json: +05 二月 2026 | 05:56:09,666 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:316055 player:[982140] fake_json: +05 二月 2026 | 05:56:22,170 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:56:22,207 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:56:26,679 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:551122 player:[991883] fake_json: +05 二月 2026 | 05:56:27,737 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:997115 player:[598580] fake_json: +05 二月 2026 | 05:56:28,856 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:969379 player:[828730] fake_json: +05 二月 2026 | 05:56:30,341 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:964016 player:[950058] fake_json: +05 二月 2026 | 05:56:31,412 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:410440 player:[939038] fake_json: +05 二月 2026 | 05:56:42,205 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:979587 player:[461790] fake_json: +05 二月 2026 | 05:56:42,245 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:979587 player:[461790] fake_json: +05 二月 2026 | 05:56:42,835 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:507816 player:[907904] fake_json: +05 二月 2026 | 05:56:42,867 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:507816 player:[907904] fake_json: +05 二月 2026 | 05:56:43,374 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:200976 player:[504700] fake_json: +05 二月 2026 | 05:56:44,321 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:998543 player:[154065] fake_json: +05 二月 2026 | 05:56:44,834 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:409119 player:[991883] fake_json: +05 二月 2026 | 05:56:45,789 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:922409 player:[638865] fake_json: +05 二月 2026 | 05:56:46,505 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:885016 player:[950058] fake_json: +05 二月 2026 | 05:56:54,297 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:382625 player:[939038] fake_json: +05 二月 2026 | 05:57:20,713 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:694443 player:[274424] fake_json: +05 二月 2026 | 05:57:21,324 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:320968 player:[991883] fake_json: +05 二月 2026 | 05:57:21,921 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:100482 player:[249926] fake_json: +05 二月 2026 | 05:57:22,882 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:640829 player:[503059] fake_json: +05 二月 2026 | 05:57:23,515 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:258199 player:[939038] fake_json: +05 二月 2026 | 05:57:24,700 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:244894 player:[950058] fake_json: +05 二月 2026 | 05:57:25,593 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:112749 player:[828730] fake_json: +05 二月 2026 | 05:57:26,378 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:188858 player:[199211] fake_json: +05 二月 2026 | 05:57:26,436 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:188858 player:[199211] fake_json: +05 二月 2026 | 05:57:27,398 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:372072 player:[907904] fake_json: +05 二月 2026 | 05:57:27,457 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:372072 player:[907904] fake_json: +05 二月 2026 | 05:57:35,632 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:703085 player:[939038] fake_json: +05 二月 2026 | 05:57:35,684 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:703085 player:[939038] fake_json: +05 二月 2026 | 05:57:36,239 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:214321 player:[152687] fake_json: +05 二月 2026 | 05:57:36,267 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:214321 player:[152687] fake_json: +05 二月 2026 | 05:57:36,855 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:114260 player:[991883] fake_json: +05 二月 2026 | 05:57:36,891 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:114260 player:[991883] fake_json: +05 二月 2026 | 05:57:37,802 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:791489 player:[154065] fake_json: +05 二月 2026 | 05:57:37,912 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:791489 player:[154065] fake_json: +05 二月 2026 | 05:57:40,169 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:668521 player:[461790] fake_json: +05 二月 2026 | 05:57:41,222 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:722617 player:[950058] fake_json: +05 二月 2026 | 05:57:42,143 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:775646 player:[991883] fake_json: +05 二月 2026 | 05:57:43,305 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:237317 player:[950058] fake_json: +05 二月 2026 | 05:57:50,811 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:569436 player:[907904] fake_json: +05 二月 2026 | 05:58:32,119 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:831596 player:[611342,622079] fake_json:1 +05 二月 2026 | 05:58:32,293 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:831596 player:[611342,622079] fake_json:1 +05 二月 2026 | 05:58:52,539 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 05:58:52,580 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 05:58:57,083 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:858879 player:[950058] fake_json: +05 二月 2026 | 05:58:57,972 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:794008 player:[274424] fake_json: +05 二月 2026 | 05:58:59,634 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:456824 player:[199211] fake_json: +05 二月 2026 | 05:59:00,823 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:612497 player:[828730] fake_json: +05 二月 2026 | 05:59:01,612 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:339578 player:[461790] fake_json: +05 二月 2026 | 05:59:03,183 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:877316 player:[907904] fake_json: +05 二月 2026 | 05:59:12,842 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:628053 player:[249926] fake_json: +05 二月 2026 | 05:59:13,932 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:437387 player:[504700] fake_json: +05 二月 2026 | 05:59:14,005 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:437387 player:[504700] fake_json: +05 二月 2026 | 05:59:14,113 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:638915 player:[154065] fake_json: +05 二月 2026 | 05:59:14,501 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:389537 player:[991883] fake_json: +05 二月 2026 | 05:59:14,611 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:389537 player:[991883] fake_json: +05 二月 2026 | 05:59:15,075 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:553391 player:[199211] fake_json: +05 二月 2026 | 05:59:15,573 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:974847 player:[939038] fake_json: +05 二月 2026 | 05:59:15,577 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:974847 player:[939038] fake_json: +05 二月 2026 | 05:59:16,215 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:846453 player:[274424] fake_json: +05 二月 2026 | 05:59:16,215 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:871495 player:[598580] fake_json: +05 二月 2026 | 05:59:16,256 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:871495 player:[598580] fake_json: +05 二月 2026 | 05:59:23,833 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:743213 player:[503059] fake_json: +05 二月 2026 | 05:59:24,648 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:668874 player:[907904] fake_json: +05 二月 2026 | 05:59:25,456 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:829252 player:[461790] fake_json: +05 二月 2026 | 05:59:33,509 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:177475] time:132ms +05 二月 2026 | 05:59:53,599 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:252764 player:[152687] fake_json: +05 二月 2026 | 05:59:54,520 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:998631 player:[154065] fake_json: +05 二月 2026 | 05:59:55,203 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:432406 player:[828730] fake_json: +05 二月 2026 | 05:59:55,896 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:419400 player:[939038] fake_json: +05 二月 2026 | 05:59:56,706 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:189566 player:[950058] fake_json: +05 二月 2026 | 05:59:56,806 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:189566 player:[950058] fake_json: +05 二月 2026 | 05:59:57,739 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:870930 player:[477332] fake_json: +05 二月 2026 | 05:59:57,774 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:870930 player:[477332] fake_json: +05 二月 2026 | 05:59:58,697 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:451053 player:[991883] fake_json: +05 二月 2026 | 05:59:58,743 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:451053 player:[991883] fake_json: +05 二月 2026 | 06:00:05,476 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:137452 player:[199211] fake_json: +05 二月 2026 | 06:00:05,749 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:137452 player:[199211] fake_json: +05 二月 2026 | 06:00:06,713 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:231467 player:[907904] fake_json: +05 二月 2026 | 06:00:12,370 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:294888 player:[939038] fake_json: +05 二月 2026 | 06:00:13,632 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:249478 player:[828730] fake_json: +05 二月 2026 | 06:00:14,491 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:604032 player:[154065] fake_json: +05 二月 2026 | 06:00:15,444 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:200006 player:[152687] fake_json: +05 二月 2026 | 06:00:16,407 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:455811 player:[154065] fake_json: +05 二月 2026 | 06:00:23,575 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:543602 player:[950058] fake_json: +05 二月 2026 | 06:00:24,388 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:367765 player:[991883] fake_json: +05 二月 2026 | 06:00:25,043 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:137206 player:[638865] fake_json: +05 二月 2026 | 06:00:36,471 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:829114 player:[598580] fake_json: +05 二月 2026 | 06:00:37,161 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:208603 player:[828730] fake_json: +05 二月 2026 | 06:00:38,516 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:630915 player:[907904] fake_json: +05 二月 2026 | 06:00:39,131 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:264068 player:[154065] fake_json: +05 二月 2026 | 06:00:39,515 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:696151 player:[622079,540870] fake_json:1 +05 二月 2026 | 06:00:40,108 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:322540 player:[152687] fake_json: +05 二月 2026 | 06:00:43,467 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:243112 player:[991883] fake_json: +05 二月 2026 | 06:00:47,912 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:725174 player:[461790] fake_json: +05 二月 2026 | 06:00:48,992 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:157602 player:[199211] fake_json: +05 二月 2026 | 06:00:49,913 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:115521 player:[274424] fake_json: +05 二月 2026 | 06:00:53,234 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:917183 player:[907904] fake_json: +05 二月 2026 | 06:01:02,345 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:264128 player:[950058] fake_json: +05 二月 2026 | 06:01:03,573 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:194103 player:[828730] fake_json: +05 二月 2026 | 06:01:04,494 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:757148 player:[942284] fake_json: +05 二月 2026 | 06:01:12,205 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:883215 player:[907904] fake_json: +05 二月 2026 | 06:01:13,176 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:564605 player:[154065] fake_json: +05 二月 2026 | 06:01:18,315 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:579986 player:[168061] fake_json: +05 二月 2026 | 06:01:20,333 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:987745 player:[939038] fake_json: +05 二月 2026 | 06:01:20,880 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:665105 player:[991883] fake_json: +05 二月 2026 | 06:01:27,360 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:270510 player:[950058] fake_json: +05 二月 2026 | 06:01:28,225 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:177855 player:[199211] fake_json: +05 二月 2026 | 06:01:28,274 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:886078 player:[154065] fake_json: +05 二月 2026 | 06:01:30,535 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:575023 player:[907904] fake_json: +05 二月 2026 | 06:01:39,321 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:547690 player:[598580] fake_json: +05 二月 2026 | 06:01:46,514 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:859788 player:[828730] fake_json: +05 二月 2026 | 06:01:47,097 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:225062 player:[991883] fake_json: +05 二月 2026 | 06:01:48,687 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:362931 player:[504700] fake_json: +05 二月 2026 | 06:01:49,411 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:245609 player:[939038] fake_json: +05 二月 2026 | 06:01:50,402 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:227437 player:[461790] fake_json: +05 二月 2026 | 06:02:02,767 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:506188 player:[939038] fake_json: +05 二月 2026 | 06:02:04,615 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:172302 player:[991883] fake_json: +05 二月 2026 | 06:02:05,493 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:895048 player:[907904] fake_json: +05 二月 2026 | 06:02:06,042 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:327132 player:[950058] fake_json: +05 二月 2026 | 06:02:07,150 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:297805 player:[154065] fake_json: +05 二月 2026 | 06:02:07,771 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:269265 player:[152687] fake_json: +05 二月 2026 | 06:02:14,406 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:331296 player:[274424] fake_json: +05 二月 2026 | 06:02:15,312 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:564478 player:[199211] fake_json: +05 二月 2026 | 06:02:15,663 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:273011 player:[939038] fake_json: +05 二月 2026 | 06:02:16,955 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:972045 player:[598580] fake_json: +05 二月 2026 | 06:02:30,712 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:703136 player:[839344] fake_json: +05 二月 2026 | 06:02:31,534 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:912243 player:[461790] fake_json: +05 二月 2026 | 06:02:32,075 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:415080 player:[950058] fake_json: +05 二月 2026 | 06:02:32,901 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:104720 player:[154065] fake_json: +05 二月 2026 | 06:02:34,304 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:312305 player:[828730] fake_json: +05 二月 2026 | 06:02:42,183 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:561120 player:[907904] fake_json: +05 二月 2026 | 06:02:45,319 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:167656 player:[152687] fake_json: +05 二月 2026 | 06:02:46,701 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:790568 player:[991883] fake_json: +05 二月 2026 | 06:02:48,092 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:529144 player:[939038] fake_json: +05 二月 2026 | 06:03:02,195 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:327992 player:[950058] fake_json: +05 二月 2026 | 06:03:02,739 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:179619 player:[818783] fake_json: +05 二月 2026 | 06:03:04,327 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:678659 player:[828730] fake_json: +05 二月 2026 | 06:03:05,186 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:191365 player:[199211] fake_json: +05 二月 2026 | 06:03:06,430 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:390770 player:[504700] fake_json: +05 二月 2026 | 06:03:14,476 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:243722 player:[991883] fake_json: +05 二月 2026 | 06:03:15,087 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:202330 player:[907904] fake_json: +05 二月 2026 | 06:03:15,871 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:378508 player:[154065] fake_json: +05 二月 2026 | 06:03:16,453 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:223453 player:[939038] fake_json: +05 二月 2026 | 06:03:16,722 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:642766 player:[461790] fake_json: +05 二月 2026 | 06:03:17,581 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:812265 player:[152687] fake_json: +05 二月 2026 | 06:03:32,631 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:753676 player:[154065] fake_json: +05 二月 2026 | 06:03:33,252 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:739058 player:[828730] fake_json: +05 二月 2026 | 06:03:33,864 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:214031 player:[199211] fake_json: +05 二月 2026 | 06:03:35,970 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:639550 player:[503059] fake_json: +05 二月 2026 | 06:03:36,563 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:488385 player:[939038] fake_json: +05 二月 2026 | 06:03:45,031 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:119642 player:[907904] fake_json: +05 二月 2026 | 06:03:45,134 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:917242 player:[598580] fake_json: +05 二月 2026 | 06:03:45,162 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:03:45,501 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:456979 player:[892185,659203] fake_json:1 +05 二月 2026 | 06:03:46,120 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:506300 player:[950058] fake_json: +05 二月 2026 | 06:03:46,249 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:280363 player:[152687] fake_json: +05 二月 2026 | 06:03:46,461 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1743ms +05 二月 2026 | 06:03:47,275 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:313392 player:[275830,121078] fake_json:1 +05 二月 2026 | 06:03:47,959 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:700842 player:[504700] fake_json: +05 二月 2026 | 06:03:48,640 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:622727 player:[828730] fake_json: +05 二月 2026 | 06:03:49,981 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1681ms +05 二月 2026 | 06:03:56,246 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:658072 player:[461790] fake_json: +05 二月 2026 | 06:03:57,870 | INFO | qtp391618063-75 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:03:58,743 | INFO | qtp391618063-75 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1382ms +05 二月 2026 | 06:04:00,897 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:787346 player:[199211] fake_json: +05 二月 2026 | 06:04:01,557 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:205102 player:[939038] fake_json: +05 二月 2026 | 06:04:02,094 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:202141 player:[991883] fake_json: +05 二月 2026 | 06:04:13,529 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:736319 player:[154065] fake_json: +05 二月 2026 | 06:04:15,221 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:353166 player:[818783] fake_json: +05 二月 2026 | 06:04:16,401 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:482849 player:[598580] fake_json: +05 二月 2026 | 06:04:30,652 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:962961 player:[152687] fake_json: +05 二月 2026 | 06:04:31,309 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:575538 player:[199211] fake_json: +05 二月 2026 | 06:04:31,942 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:167044 player:[950058] fake_json: +05 二月 2026 | 06:04:32,827 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:279028 player:[907904] fake_json: +05 二月 2026 | 06:04:33,673 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:730842 player:[991883] fake_json: +05 二月 2026 | 06:04:34,245 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:176276 player:[942284] fake_json: +05 二月 2026 | 06:04:35,157 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:661442 player:[939038] fake_json: +05 二月 2026 | 06:04:43,401 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:143214 player:[274424] fake_json: +05 二月 2026 | 06:04:43,975 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:667170 player:[154065] fake_json: +05 二月 2026 | 06:04:44,316 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:615970 player:[638865] fake_json: +05 二月 2026 | 06:04:44,895 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:356335 player:[828730] fake_json: +05 二月 2026 | 06:04:45,059 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:329216 player:[503059] fake_json: +05 二月 2026 | 06:04:46,495 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:929803 player:[504700] fake_json: +05 二月 2026 | 06:04:54,728 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:913068 player:[199211] fake_json: +05 二月 2026 | 06:04:55,135 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:04:56,636 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1983ms +05 二月 2026 | 06:04:58,857 | INFO | qtp391618063-78 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1547ms +05 二月 2026 | 06:05:08,243 | INFO | qtp391618063-78 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4398ms +05 二月 2026 | 06:05:30,941 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:425040 player:[622079,488731] fake_json:1 +05 二月 2026 | 06:05:56,978 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:304396 player:[598580] fake_json: +05 二月 2026 | 06:06:06,266 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:800142 player:[828730] fake_json: +05 二月 2026 | 06:06:16,094 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:767218 player:[152687] fake_json: +05 二月 2026 | 06:06:17,319 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:987954 player:[249926] fake_json: +05 二月 2026 | 06:06:17,876 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:431650 player:[199211] fake_json: +05 二月 2026 | 06:06:19,277 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:723873 player:[907904] fake_json: +05 二月 2026 | 06:06:19,898 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:631373 player:[199211] fake_json: +05 二月 2026 | 06:06:28,047 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:660637 player:[638865] fake_json: +05 二月 2026 | 06:06:30,442 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:939128 player:[461790] fake_json: +05 二月 2026 | 06:06:31,262 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:562473 player:[991883] fake_json: +05 二月 2026 | 06:06:31,842 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:299839 player:[939038] fake_json: +05 二月 2026 | 06:06:32,486 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:251528 player:[154065] fake_json: +05 二月 2026 | 06:06:33,442 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:837097 player:[828730] fake_json: +05 二月 2026 | 06:06:42,423 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:242880 player:[199211] fake_json: +05 二月 2026 | 06:06:43,378 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:604744 player:[274424] fake_json: +05 二月 2026 | 06:06:44,167 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:468798 player:[907904] fake_json: +05 二月 2026 | 06:06:46,176 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:238100 player:[950058] fake_json: +05 二月 2026 | 06:06:47,334 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:175251 player:[152687] fake_json: +05 二月 2026 | 06:06:52,623 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:963433 player:[154065] fake_json: +05 二月 2026 | 06:06:54,606 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:918307 player:[828730] fake_json: +05 二月 2026 | 06:06:56,098 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:246688 player:[461790] fake_json: +05 二月 2026 | 06:06:57,462 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:830724 player:[939038] fake_json: +05 二月 2026 | 06:07:10,460 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:383542 player:[907904] fake_json: +05 二月 2026 | 06:07:11,492 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:286955 player:[274424] fake_json: +05 二月 2026 | 06:07:13,409 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:347567 player:[199211] fake_json: +05 二月 2026 | 06:07:14,255 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:363569 player:[199211] fake_json: +05 二月 2026 | 06:07:15,196 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:784951 player:[991883] fake_json: +05 二月 2026 | 06:07:16,247 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:408697 player:[907904] fake_json: +05 二月 2026 | 06:07:25,088 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:944014 player:[828730] fake_json: +05 二月 2026 | 06:07:27,920 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:890769 player:[886844,725138] fake_json:1 +05 二月 2026 | 06:07:32,757 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:636529 player:[939038] fake_json: +05 二月 2026 | 06:07:33,817 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:111833 player:[598580] fake_json: +05 二月 2026 | 06:07:35,336 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:657554 player:[154065] fake_json: +05 二月 2026 | 06:07:38,202 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:876819 player:[199211] fake_json: +05 二月 2026 | 06:07:48,184 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:897164 player:[950058] fake_json: +05 二月 2026 | 06:07:48,900 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:448950 player:[152687] fake_json: +05 二月 2026 | 06:07:49,559 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:982258 player:[991883] fake_json: +05 二月 2026 | 06:07:50,318 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:927063 player:[907904] fake_json: +05 二月 2026 | 06:08:01,326 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:299847 player:[461790] fake_json: +05 二月 2026 | 06:08:02,471 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:723217 player:[818783] fake_json: +05 二月 2026 | 06:08:03,530 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:856264 player:[939038] fake_json: +05 二月 2026 | 06:08:11,167 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:713422 player:[638865] fake_json: +05 二月 2026 | 06:08:13,765 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:889562 player:[154065] fake_json: +05 二月 2026 | 06:08:14,522 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:181078 player:[199211] fake_json: +05 二月 2026 | 06:08:29,549 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:381734 player:[365881,538972] fake_json:1 +05 二月 2026 | 06:08:30,858 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:179380 player:[907904] fake_json: +05 二月 2026 | 06:08:32,142 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:714715 player:[939038] fake_json: +05 二月 2026 | 06:08:33,719 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:608901 player:[828730] fake_json: +05 二月 2026 | 06:08:34,347 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:410817 player:[950058] fake_json: +05 二月 2026 | 06:08:42,939 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:530067 player:[152687] fake_json: +05 二月 2026 | 06:08:43,824 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:946506 player:[991883] fake_json: +05 二月 2026 | 06:08:44,922 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:554362 player:[638865] fake_json: +05 二月 2026 | 06:08:45,632 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:298793 player:[274424] fake_json: +05 二月 2026 | 06:08:46,499 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:471833 player:[504700] fake_json: +05 二月 2026 | 06:08:48,228 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:777757 player:[939038] fake_json: +05 二月 2026 | 06:08:55,507 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:980494 player:[199211] fake_json: +05 二月 2026 | 06:08:56,046 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:325929 player:[152687] fake_json: +05 二月 2026 | 06:08:56,939 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:945106 player:[154065] fake_json: +05 二月 2026 | 06:08:57,482 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:323619 player:[828730] fake_json: +05 二月 2026 | 06:09:04,037 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:666371 player:[907904] fake_json: +05 二月 2026 | 06:09:14,547 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:331554 player:[828730] fake_json: +05 二月 2026 | 06:09:15,004 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:126713 player:[991883] fake_json: +05 二月 2026 | 06:09:16,263 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:772869 player:[939038] fake_json: +05 二月 2026 | 06:09:32,370 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:217242 player:[907904] fake_json: +05 二月 2026 | 06:09:33,569 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:244866 player:[828730] fake_json: +05 二月 2026 | 06:09:34,538 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:630045 player:[939038] fake_json: +05 二月 2026 | 06:09:35,163 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:493206 player:[950058] fake_json: +05 二月 2026 | 06:09:36,347 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:784477 player:[154065] fake_json: +05 二月 2026 | 06:09:44,012 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:492476 player:[503059] fake_json: +05 二月 2026 | 06:09:44,610 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:209631 player:[598580] fake_json: +05 二月 2026 | 06:09:45,676 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:733129 player:[461790] fake_json: +05 二月 2026 | 06:09:46,555 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:415492 player:[199211] fake_json: +05 二月 2026 | 06:09:50,835 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:382877 player:[991883] fake_json: +05 二月 2026 | 06:09:52,075 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:951235 player:[828730] fake_json: +05 二月 2026 | 06:10:00,709 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:123584 player:[154065] fake_json: +05 二月 2026 | 06:10:07,702 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:396469 player:[907904] fake_json: +05 二月 2026 | 06:10:08,560 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:723440 player:[950058] fake_json: +05 二月 2026 | 06:10:51,151 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:201178 player:[334272,847821] fake_json:1 +05 二月 2026 | 06:11:16,692 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:888950 player:[503059] fake_json: +05 二月 2026 | 06:11:17,803 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:721136 player:[154065] fake_json: +05 二月 2026 | 06:11:18,566 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:217962 player:[274424] fake_json: +05 二月 2026 | 06:11:19,515 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:390868 player:[907904] fake_json: +05 二月 2026 | 06:11:20,432 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:308005 player:[199211] fake_json: +05 二月 2026 | 06:11:21,048 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:283963 player:[598580] fake_json: +05 二月 2026 | 06:11:21,669 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:259821 player:[152687] fake_json: +05 二月 2026 | 06:11:22,651 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:571905 player:[950058] fake_json: +05 二月 2026 | 06:11:23,230 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:533835 player:[504700] fake_json: +05 二月 2026 | 06:11:24,028 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:964837 player:[828730] fake_json: +05 二月 2026 | 06:11:30,422 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:260427 player:[939038] fake_json: +05 二月 2026 | 06:11:31,401 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:154423 player:[942284] fake_json: +05 二月 2026 | 06:11:32,559 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:769247 player:[991883] fake_json: +05 二月 2026 | 06:11:54,614 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:322071 player:[828730] fake_json: +05 二月 2026 | 06:11:56,198 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:854355 player:[939038] fake_json: +05 二月 2026 | 06:11:56,766 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:787137 player:[950058] fake_json: +05 二月 2026 | 06:11:57,371 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:647512 player:[907904] fake_json: +05 二月 2026 | 06:12:24,308 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:916867 player:[991883] fake_json: +05 二月 2026 | 06:12:24,341 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:916867 player:[991883] fake_json: +05 二月 2026 | 06:12:25,176 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:315036 player:[598580] fake_json: +05 二月 2026 | 06:12:25,260 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:315036 player:[598580] fake_json: +05 二月 2026 | 06:12:26,974 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:567342 player:[199211] fake_json: +05 二月 2026 | 06:12:26,974 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:567342 player:[199211] fake_json: +05 二月 2026 | 06:12:29,325 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:176230 player:[504700] fake_json: +05 二月 2026 | 06:12:29,398 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:176230 player:[504700] fake_json: +05 二月 2026 | 06:12:36,829 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:844766 player:[828730] fake_json: +05 二月 2026 | 06:12:36,925 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:844766 player:[828730] fake_json: +05 二月 2026 | 06:12:37,428 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:786017 player:[152687] fake_json: +05 二月 2026 | 06:12:37,464 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:786017 player:[152687] fake_json: +05 二月 2026 | 06:12:38,715 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:370626 player:[991883] fake_json: +05 二月 2026 | 06:12:38,733 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:370626 player:[991883] fake_json: +05 二月 2026 | 06:12:39,311 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:299951 player:[154065] fake_json: +05 二月 2026 | 06:12:39,500 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:299951 player:[154065] fake_json: +05 二月 2026 | 06:12:42,030 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:651061 player:[504700] fake_json: +05 二月 2026 | 06:12:42,788 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:644007 player:[939038] fake_json: +05 二月 2026 | 06:12:50,484 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:785586 player:[199211] fake_json: +05 二月 2026 | 06:12:51,408 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:707973 player:[504700] fake_json: +05 二月 2026 | 06:12:52,455 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:792258 player:[828730] fake_json: +05 二月 2026 | 06:12:53,482 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:516922 player:[274424] fake_json: +05 二月 2026 | 06:12:54,418 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:715506 player:[907904] fake_json: +05 二月 2026 | 06:12:55,109 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:707221 player:[725378] fake_json: +05 二月 2026 | 06:12:55,751 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:191695 player:[199211] fake_json: +05 二月 2026 | 06:12:56,718 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:688897 player:[503059] fake_json: +05 二月 2026 | 06:12:57,331 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:324534 player:[598580] fake_json: +05 二月 2026 | 06:12:58,233 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:745628 player:[950058] fake_json: +05 二月 2026 | 06:13:05,880 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:307977 player:[504700] fake_json: +05 二月 2026 | 06:13:30,242 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:417158 player:[154065] fake_json: +05 二月 2026 | 06:13:31,330 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:882429 player:[152687] fake_json: +05 二月 2026 | 06:13:31,950 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:769922 player:[828730] fake_json: +05 二月 2026 | 06:13:32,504 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:172673 player:[950058] fake_json: +05 二月 2026 | 06:13:33,351 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:450766 player:[991883] fake_json: +05 二月 2026 | 06:13:33,900 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:442080 player:[152687] fake_json: +05 二月 2026 | 06:13:34,865 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:948216 player:[950058] fake_json: +05 二月 2026 | 06:13:35,581 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:310733 player:[907904] fake_json: +05 二月 2026 | 06:13:36,909 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:958498 player:[939038] fake_json: +05 二月 2026 | 06:13:37,458 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:735115 player:[274424] fake_json: +05 二月 2026 | 06:13:44,118 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:975675 player:[199211] fake_json: +05 二月 2026 | 06:13:44,795 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:639188 player:[598580] fake_json: +05 二月 2026 | 06:13:45,612 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:927539 player:[638865] fake_json: +05 二月 2026 | 06:13:46,545 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:438275 player:[828730] fake_json: +05 二月 2026 | 06:13:50,491 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:331932 player:[818783] fake_json: +05 二月 2026 | 06:13:51,453 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:316909 player:[504700] fake_json: +05 二月 2026 | 06:13:52,128 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:292128 player:[461790] fake_json: +05 二月 2026 | 06:13:53,229 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:422424 player:[942284] fake_json: +05 二月 2026 | 06:13:54,518 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:726745 player:[503059] fake_json: +05 二月 2026 | 06:13:55,430 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:562189 player:[161303] fake_json: +05 二月 2026 | 06:14:00,969 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:944934 player:[828730] fake_json: +05 二月 2026 | 06:14:02,830 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:879812 player:[154065] fake_json: +05 二月 2026 | 06:14:03,095 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:844013 player:[991883] fake_json: +05 二月 2026 | 06:14:10,212 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:156307 player:[939038] fake_json: +05 二月 2026 | 06:14:12,853 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:865432 player:[828730] fake_json: +05 二月 2026 | 06:14:13,795 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:333755 player:[907904] fake_json: +05 二月 2026 | 06:14:14,937 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:429672 player:[199211] fake_json: +05 二月 2026 | 06:14:21,968 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:834124 player:[828730] fake_json: +05 二月 2026 | 06:14:22,915 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:588387 player:[818783] fake_json: +05 二月 2026 | 06:14:42,378 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:291985 player:[271266,186542] fake_json:1 +05 二月 2026 | 06:14:45,713 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:761640 player:[991883] fake_json: +05 二月 2026 | 06:14:46,821 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:643135 player:[638865] fake_json: +05 二月 2026 | 06:14:47,433 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:489287 player:[154065] fake_json: +05 二月 2026 | 06:14:48,033 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:415869 player:[598580] fake_json: +05 二月 2026 | 06:14:49,811 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:588019 player:[274424] fake_json: +05 二月 2026 | 06:14:50,402 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:496479 player:[939038] fake_json: +05 二月 2026 | 06:14:51,000 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:299368 player:[504700] fake_json: +05 二月 2026 | 06:14:51,631 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:266170 player:[907904] fake_json: +05 二月 2026 | 06:14:58,423 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:866155 player:[152687] fake_json: +05 二月 2026 | 06:15:10,812 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:503258 player:[828730] fake_json: +05 二月 2026 | 06:15:10,845 | INFO | qtp391618063-95 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:2370ms +05 二月 2026 | 06:15:12,073 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:209285 player:[199211] fake_json: +05 二月 2026 | 06:15:12,114 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:667485 player:[154065] fake_json: +05 二月 2026 | 06:15:14,263 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:722103 player:[991883] fake_json: +05 二月 2026 | 06:15:15,153 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:838472 player:[907904] fake_json: +05 二月 2026 | 06:15:16,390 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:238204 player:[939038] fake_json: +05 二月 2026 | 06:15:16,390 | INFO | qtp391618063-95 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:2580ms +05 二月 2026 | 06:15:18,358 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:556554 player:[503059] fake_json: +05 二月 2026 | 06:15:19,929 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:463211 player:[950058] fake_json: +05 二月 2026 | 06:15:23,259 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4204ms +05 二月 2026 | 06:15:25,798 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:991525 player:[828730] fake_json: +05 二月 2026 | 06:15:26,425 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:356460 player:[152687] fake_json: +05 二月 2026 | 06:15:27,710 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:922004 player:[907904] fake_json: +05 二月 2026 | 06:15:28,393 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:416814 player:[199211] fake_json: +05 二月 2026 | 06:15:29,335 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:338999 player:[154065] fake_json: +05 二月 2026 | 06:15:30,884 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:416725 player:[274424] fake_json: +05 二月 2026 | 06:15:37,666 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:364281 player:[249926] fake_json: +05 二月 2026 | 06:15:38,218 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:584131 player:[972135,759688] fake_json:1 +05 二月 2026 | 06:15:38,251 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:992302 player:[991883] fake_json: +05 二月 2026 | 06:15:38,767 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:258376 player:[950058] fake_json: +05 二月 2026 | 06:15:39,998 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:668323 player:[503059] fake_json: +05 二月 2026 | 06:15:40,849 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:515689 player:[598580] fake_json: +05 二月 2026 | 06:15:41,420 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:205551 player:[939038] fake_json: +05 二月 2026 | 06:15:48,917 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:562979 player:[154065] fake_json: +05 二月 2026 | 06:16:08,876 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:372378 player:[154065] fake_json: +05 二月 2026 | 06:16:09,754 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:588588 player:[152687] fake_json: +05 二月 2026 | 06:16:10,333 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:489437 player:[950058] fake_json: +05 二月 2026 | 06:16:11,335 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:756953 player:[939038] fake_json: +05 二月 2026 | 06:16:11,913 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:710612 player:[638865] fake_json: +05 二月 2026 | 06:16:12,756 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:848817 player:[942284] fake_json: +05 二月 2026 | 06:16:20,343 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:802935 player:[598580] fake_json: +05 二月 2026 | 06:16:20,889 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:529553 player:[828730] fake_json: +05 二月 2026 | 06:16:21,567 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:193986 player:[199211] fake_json: +05 二月 2026 | 06:16:27,683 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:206171 player:[907904] fake_json: +05 二月 2026 | 06:16:28,466 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:932843 player:[991883] fake_json: +05 二月 2026 | 06:16:29,560 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:945906 player:[950058] fake_json: +05 二月 2026 | 06:16:38,706 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:994522 player:[598580] fake_json: +05 二月 2026 | 06:16:39,489 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:296665 player:[154065] fake_json: +05 二月 2026 | 06:16:41,372 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:855378 player:[274424] fake_json: +05 二月 2026 | 06:16:44,918 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:16:44,963 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:16:48,228 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:618020 player:[939038] fake_json: +05 二月 2026 | 06:16:49,762 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:506623 player:[828730] fake_json: +05 二月 2026 | 06:16:50,825 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:970944 player:[950058] fake_json: +05 二月 2026 | 06:16:51,395 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:882961 player:[152687] fake_json: +05 二月 2026 | 06:16:52,874 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:713434 player:[725378] fake_json: +05 二月 2026 | 06:16:53,627 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:587238 player:[907904] fake_json: +05 二月 2026 | 06:16:53,723 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:587238 player:[907904] fake_json: +05 二月 2026 | 06:16:54,331 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:395142 player:[504700] fake_json: +05 二月 2026 | 06:16:54,409 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:395142 player:[504700] fake_json: +05 二月 2026 | 06:17:04,809 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:700212 player:[199211] fake_json: +05 二月 2026 | 06:17:05,595 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:927353 player:[638865] fake_json: +05 二月 2026 | 06:17:06,065 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:769012 player:[939038] fake_json: +05 二月 2026 | 06:17:06,580 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:432624 player:[991883] fake_json: +05 二月 2026 | 06:17:06,658 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:972156 player:[828730] fake_json: +05 二月 2026 | 06:17:06,737 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:432624 player:[991883] fake_json: +05 二月 2026 | 06:17:44,316 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:486945 player:[598580] fake_json: +05 二月 2026 | 06:17:44,543 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:373678 player:[818783] fake_json: +05 二月 2026 | 06:17:44,880 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:373678 player:[818783] fake_json: +05 二月 2026 | 06:17:45,679 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:456725 player:[274424] fake_json: +05 二月 2026 | 06:17:45,999 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:120885 player:[942284] fake_json: +05 二月 2026 | 06:17:46,257 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:120885 player:[942284] fake_json: +05 二月 2026 | 06:17:46,975 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:728498 player:[154065] fake_json: +05 二月 2026 | 06:17:47,311 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:204472 player:[991883] fake_json: +05 二月 2026 | 06:17:47,580 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:204472 player:[991883] fake_json: +05 二月 2026 | 06:17:47,893 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:127667 player:[504700] fake_json: +05 二月 2026 | 06:17:48,159 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:127667 player:[504700] fake_json: +05 二月 2026 | 06:17:48,944 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:530649 player:[274424] fake_json: +05 二月 2026 | 06:17:49,094 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:530649 player:[274424] fake_json: +05 二月 2026 | 06:17:49,865 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:988868 player:[950058] fake_json: +05 二月 2026 | 06:17:49,969 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:988868 player:[950058] fake_json: +05 二月 2026 | 06:17:50,597 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:102700 player:[907904] fake_json: +05 二月 2026 | 06:17:50,698 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:102700 player:[907904] fake_json: +05 二月 2026 | 06:17:51,714 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:302209 player:[199211] fake_json: +05 二月 2026 | 06:17:51,714 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:302209 player:[199211] fake_json: +05 二月 2026 | 06:18:00,119 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:175880 player:[152687] fake_json: +05 二月 2026 | 06:18:00,164 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:175880 player:[152687] fake_json: +05 二月 2026 | 06:18:00,862 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:148374 player:[828730] fake_json: +05 二月 2026 | 06:18:00,868 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:148374 player:[828730] fake_json: +05 二月 2026 | 06:18:02,997 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:839616 player:[950058] fake_json: +05 二月 2026 | 06:18:04,000 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:279624 player:[939038] fake_json: +05 二月 2026 | 06:18:05,985 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:916584 player:[274424] fake_json: +05 二月 2026 | 06:18:06,608 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:891598 player:[598580] fake_json: +05 二月 2026 | 06:18:07,234 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:322861 player:[991883] fake_json: +05 二月 2026 | 06:18:07,843 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:101614 player:[154065] fake_json: +05 二月 2026 | 06:18:52,977 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:18:53,022 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:18:56,843 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:342590 player:[152687] fake_json: +05 二月 2026 | 06:18:58,316 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:545160 player:[907904] fake_json: +05 二月 2026 | 06:18:59,345 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:914778 player:[991883] fake_json: +05 二月 2026 | 06:18:59,988 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:808969 player:[950058] fake_json: +05 二月 2026 | 06:19:01,045 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:892023 player:[154065] fake_json: +05 二月 2026 | 06:19:01,838 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:850895 player:[274424] fake_json: +05 二月 2026 | 06:19:02,513 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:436793 player:[598580] fake_json: +05 二月 2026 | 06:19:03,948 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:559547 player:[274424] fake_json: +05 二月 2026 | 06:19:04,081 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:559547 player:[274424] fake_json: +05 二月 2026 | 06:19:06,943 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4458ms +05 二月 2026 | 06:19:13,303 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:730258 player:[199211] fake_json: +05 二月 2026 | 06:19:14,704 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:442833 player:[152687] fake_json: +05 二月 2026 | 06:19:15,014 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:490850 player:[828730] fake_json: +05 二月 2026 | 06:19:15,039 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:490850 player:[828730] fake_json: +05 二月 2026 | 06:19:15,384 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:247383 player:[991883] fake_json: +05 二月 2026 | 06:19:23,503 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:674923 player:[638865] fake_json: +05 二月 2026 | 06:19:24,108 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:500611 player:[274424] fake_json: +05 二月 2026 | 06:19:25,178 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:264643 player:[907904] fake_json: +05 二月 2026 | 06:19:54,111 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:298683 player:[991883] fake_json: +05 二月 2026 | 06:19:55,052 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:962652 player:[598580] fake_json: +05 二月 2026 | 06:19:55,088 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:962652 player:[598580] fake_json: +05 二月 2026 | 06:19:55,647 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:653206 player:[907904] fake_json: +05 二月 2026 | 06:19:55,647 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:653206 player:[907904] fake_json: +05 二月 2026 | 06:19:56,481 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:991936 player:[154065] fake_json: +05 二月 2026 | 06:19:56,586 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:991936 player:[154065] fake_json: +05 二月 2026 | 06:19:57,129 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:805277 player:[503059] fake_json: +05 二月 2026 | 06:19:57,424 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:805277 player:[503059] fake_json: +05 二月 2026 | 06:19:58,354 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:582523 player:[504700] fake_json: +05 二月 2026 | 06:19:59,176 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:666976 player:[950058] fake_json: +05 二月 2026 | 06:19:59,580 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:594447 player:[939038] fake_json: +05 二月 2026 | 06:19:59,822 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:594447 player:[939038] fake_json: +05 二月 2026 | 06:20:07,006 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:565965 player:[461790] fake_json: +05 二月 2026 | 06:20:07,006 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:565965 player:[461790] fake_json: +05 二月 2026 | 06:20:07,842 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:760669 player:[199211] fake_json: +05 二月 2026 | 06:20:07,884 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:760669 player:[199211] fake_json: +05 二月 2026 | 06:20:08,412 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:144082 player:[152687] fake_json: +05 二月 2026 | 06:20:08,444 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:144082 player:[152687] fake_json: +05 二月 2026 | 06:20:10,694 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:151279 player:[503059] fake_json: +05 二月 2026 | 06:20:11,620 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:749817 player:[598580] fake_json: +05 二月 2026 | 06:20:12,201 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:684399 player:[638865] fake_json: +05 二月 2026 | 06:20:12,803 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:106584 player:[982140] fake_json: +05 二月 2026 | 06:20:14,603 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:427490 player:[154065] fake_json: +05 二月 2026 | 06:20:15,462 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:218585 player:[991883] fake_json: +05 二月 2026 | 06:20:22,144 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:317040 player:[950058] fake_json: +05 二月 2026 | 06:20:23,436 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:847650 player:[828730] fake_json: +05 二月 2026 | 06:21:19,731 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:653891 player:[154065] fake_json: +05 二月 2026 | 06:21:21,091 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:258973 player:[274424] fake_json: +05 二月 2026 | 06:21:21,963 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:470823 player:[907904] fake_json: +05 二月 2026 | 06:21:23,721 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:801230 player:[298784,339175] fake_json:1 +05 二月 2026 | 06:21:29,277 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:454199 player:[152687] fake_json: +05 二月 2026 | 06:21:30,199 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:804459 player:[828730] fake_json: +05 二月 2026 | 06:21:31,224 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:408287 player:[939038] fake_json: +05 二月 2026 | 06:21:31,820 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:367348 player:[991883] fake_json: +05 二月 2026 | 06:21:40,502 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:352456 player:[503059] fake_json: +05 二月 2026 | 06:21:41,453 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:203720 player:[950058] fake_json: +05 二月 2026 | 06:21:49,510 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:654565 player:[939038] fake_json: +05 二月 2026 | 06:21:50,318 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:604178 player:[598580] fake_json: +05 二月 2026 | 06:21:55,492 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:625193 player:[274424] fake_json: +05 二月 2026 | 06:21:57,047 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:940574 player:[461790] fake_json: +05 二月 2026 | 06:21:57,786 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:273762 player:[828730] fake_json: +05 二月 2026 | 06:21:58,977 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:401035 player:[154065] fake_json: +05 二月 2026 | 06:21:59,838 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:555584 player:[907904] fake_json: +05 二月 2026 | 06:22:08,332 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:786983 player:[839344] fake_json: +05 二月 2026 | 06:22:09,195 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:651666 player:[991883] fake_json: +05 二月 2026 | 06:22:09,811 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:162840 player:[598580] fake_json: +05 二月 2026 | 06:22:17,373 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:861440 player:[828730] fake_json: +05 二月 2026 | 06:22:17,994 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:210244 player:[950058] fake_json: +05 二月 2026 | 06:22:18,850 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:319026 player:[939038] fake_json: +05 二月 2026 | 06:22:21,698 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:352085 player:[152687] fake_json: +05 二月 2026 | 06:22:23,199 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:759812 player:[907904] fake_json: +05 二月 2026 | 06:22:24,434 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:476598 player:[154065] fake_json: +05 二月 2026 | 06:22:32,574 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:612273 player:[939038] fake_json: +05 二月 2026 | 06:22:40,508 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:526286 player:[152687] fake_json: +05 二月 2026 | 06:22:42,125 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:683475 player:[199211] fake_json: +05 二月 2026 | 06:22:42,709 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:320623 player:[950058] fake_json: +05 二月 2026 | 06:22:43,282 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:281140 player:[154065] fake_json: +05 二月 2026 | 06:22:51,677 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:226480 player:[274424] fake_json: +05 二月 2026 | 06:22:52,564 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:332049 player:[504700] fake_json: +05 二月 2026 | 06:22:53,619 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:293419 player:[828730] fake_json: +05 二月 2026 | 06:22:54,716 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:576365 player:[907904] fake_json: +05 二月 2026 | 06:23:01,651 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:805329 player:[950058] fake_json: +05 二月 2026 | 06:23:02,787 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:948871 player:[939038] fake_json: +05 二月 2026 | 06:23:03,470 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:432932 player:[991883] fake_json: +05 二月 2026 | 06:23:13,503 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:973348 player:[199211] fake_json: +05 二月 2026 | 06:23:14,093 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:857031 player:[154065] fake_json: +05 二月 2026 | 06:23:22,874 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:787499 player:[152687] fake_json: +05 二月 2026 | 06:23:22,979 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:633508 player:[341744,622079] fake_json:1 +05 二月 2026 | 06:23:23,467 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:800345 player:[274424] fake_json: +05 二月 2026 | 06:23:23,514 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:432511 player:[939038] fake_json: +05 二月 2026 | 06:23:25,361 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:984616 player:[638865] fake_json: +05 二月 2026 | 06:23:26,445 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:778891 player:[907904] fake_json: +05 二月 2026 | 06:23:27,861 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:662697 player:[828730] fake_json: +05 二月 2026 | 06:23:29,273 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:712240 player:[991883] fake_json: +05 二月 2026 | 06:23:39,898 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:358786 player:[907904] fake_json: +05 二月 2026 | 06:23:41,307 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:271856 player:[503059] fake_json: +05 二月 2026 | 06:23:44,456 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:516386 player:[154065] fake_json: +05 二月 2026 | 06:23:47,662 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:993985 player:[950058] fake_json: +05 二月 2026 | 06:23:49,125 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:862791 player:[991883] fake_json: +05 二月 2026 | 06:23:59,851 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:303607 player:[828730] fake_json: +05 二月 2026 | 06:24:02,718 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:983062 player:[907904] fake_json: +05 二月 2026 | 06:24:04,426 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:778932 player:[939038] fake_json: +05 二月 2026 | 06:24:05,764 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:237075 player:[598580] fake_json: +05 二月 2026 | 06:24:13,384 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:885494 player:[199211] fake_json: +05 二月 2026 | 06:24:21,195 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:263603 player:[154065] fake_json: +05 二月 2026 | 06:24:22,915 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:432926 player:[274424] fake_json: +05 二月 2026 | 06:24:23,575 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:304750 player:[495471,659203] fake_json:1 +05 二月 2026 | 06:24:33,679 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:314344 player:[991883] fake_json: +05 二月 2026 | 06:24:35,356 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:516830 player:[950058] fake_json: +05 二月 2026 | 06:24:46,927 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:836781 player:[199211] fake_json: +05 二月 2026 | 06:24:47,917 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:637365 player:[828730] fake_json: +05 二月 2026 | 06:24:48,877 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:331571 player:[152687] fake_json: +05 二月 2026 | 06:24:50,248 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:821238 player:[939038] fake_json: +05 二月 2026 | 06:24:51,802 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:777793 player:[598580] fake_json: +05 二月 2026 | 06:24:53,591 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:995462 player:[274424] fake_json: +05 二月 2026 | 06:25:01,536 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:819557 player:[504700] fake_json: +05 二月 2026 | 06:25:02,518 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:559835 player:[249926] fake_json: +05 二月 2026 | 06:25:02,807 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:480521 player:[991883] fake_json: +05 二月 2026 | 06:25:03,505 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:628189 player:[907904] fake_json: +05 二月 2026 | 06:25:17,568 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:513275 player:[991883] fake_json: +05 二月 2026 | 06:25:18,536 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:165317 player:[199211] fake_json: +05 二月 2026 | 06:25:19,519 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:853126 player:[939038] fake_json: +05 二月 2026 | 06:25:20,209 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:174089 player:[907904] fake_json: +05 二月 2026 | 06:25:21,155 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:392431 player:[638865] fake_json: +05 二月 2026 | 06:25:32,184 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:944040 player:[504700] fake_json: +05 二月 2026 | 06:25:33,358 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:705605 player:[461790] fake_json: +05 二月 2026 | 06:25:33,925 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:365502 player:[828730] fake_json: +05 二月 2026 | 06:25:35,307 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:301182 player:[154065] fake_json: +05 二月 2026 | 06:25:36,271 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:217153 player:[907904] fake_json: +05 二月 2026 | 06:25:43,730 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:843854 player:[950058] fake_json: +05 二月 2026 | 06:25:44,912 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:650724 player:[598580] fake_json: +05 二月 2026 | 06:25:45,454 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:310822 player:[939038] fake_json: +05 二月 2026 | 06:25:46,399 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:282385 player:[199211] fake_json: +05 二月 2026 | 06:25:47,255 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:197347 player:[152687] fake_json: +05 二月 2026 | 06:25:56,380 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:869374 player:[907904] fake_json: +05 二月 2026 | 06:26:36,643 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:879197 player:[837886,139069] fake_json:1 +05 二月 2026 | 06:26:58,138 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:244481 player:[274424] fake_json: +05 二月 2026 | 06:26:59,189 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:267264 player:[199211] fake_json: +05 二月 2026 | 06:27:01,024 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:515359 player:[154065] fake_json: +05 二月 2026 | 06:27:02,132 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:252283 player:[828730] fake_json: +05 二月 2026 | 06:27:03,423 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:343240 player:[323298,622079] fake_json:1 +05 二月 2026 | 06:27:09,321 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:875804 player:[991883] fake_json: +05 二月 2026 | 06:27:10,235 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:951831 player:[939038] fake_json: +05 二月 2026 | 06:27:18,969 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:675142 player:[598580] fake_json: +05 二月 2026 | 06:27:19,919 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:485254 player:[950058] fake_json: +05 二月 2026 | 06:27:20,840 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:235114 player:[152687] fake_json: +05 二月 2026 | 06:27:22,109 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:553652 player:[461790] fake_json: +05 二月 2026 | 06:27:30,280 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:489399 player:[828730] fake_json: +05 二月 2026 | 06:27:31,186 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:628565 player:[907904] fake_json: +05 二月 2026 | 06:27:31,668 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:710855 player:[154065] fake_json: +05 二月 2026 | 06:27:32,149 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:224442 player:[504700] fake_json: +05 二月 2026 | 06:27:40,980 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:249810 player:[461790] fake_json: +05 二月 2026 | 06:27:42,457 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:863392 player:[598580] fake_json: +05 二月 2026 | 06:27:43,407 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:316583 player:[991883] fake_json: +05 二月 2026 | 06:27:51,142 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:630215 player:[907904] fake_json: +05 二月 2026 | 06:27:52,072 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:601390 player:[939038] fake_json: +05 二月 2026 | 06:27:59,616 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:114925 player:[152687] fake_json: +05 二月 2026 | 06:28:00,577 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:602711 player:[991883] fake_json: +05 二月 2026 | 06:28:01,844 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:354022 player:[828730] fake_json: +05 二月 2026 | 06:28:03,122 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:566622 player:[950058] fake_json: +05 二月 2026 | 06:28:10,815 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:872790 player:[939038] fake_json: +05 二月 2026 | 06:28:12,140 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:654556 player:[598580] fake_json: +05 二月 2026 | 06:28:12,768 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:126938 player:[154065] fake_json: +05 二月 2026 | 06:28:13,823 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:291833 player:[503059] fake_json: +05 二月 2026 | 06:28:14,451 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:284811 player:[249926] fake_json: +05 二月 2026 | 06:28:15,345 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:586439 player:[274424] fake_json: +05 二月 2026 | 06:28:23,599 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:395594 player:[907904] fake_json: +05 二月 2026 | 06:28:24,526 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:580886 player:[828730] fake_json: +05 二月 2026 | 06:28:46,636 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:750259 player:[991883] fake_json: +05 二月 2026 | 06:28:47,257 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:456302 player:[274424] fake_json: +05 二月 2026 | 06:28:47,861 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:380675 player:[154065] fake_json: +05 二月 2026 | 06:28:48,976 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:540313 player:[598580] fake_json: +05 二月 2026 | 06:28:49,615 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:296023 player:[152687] fake_json: +05 二月 2026 | 06:28:50,769 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:602892 player:[939038] fake_json: +05 二月 2026 | 06:28:51,360 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:380631 player:[907904] fake_json: +05 二月 2026 | 06:29:11,882 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:631404 player:[939038] fake_json: +05 二月 2026 | 06:29:12,181 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:152399 player:[907904] fake_json: +05 二月 2026 | 06:29:12,932 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:254891 player:[154065] fake_json: +05 二月 2026 | 06:29:12,961 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:194184 player:[199211] fake_json: +05 二月 2026 | 06:29:13,303 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:531352 player:[828730] fake_json: +05 二月 2026 | 06:29:14,210 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:903512 player:[991883] fake_json: +05 二月 2026 | 06:29:17,365 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:666193 player:[271266,216232] fake_json:1 +05 二月 2026 | 06:29:25,632 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:393237 player:[154065] fake_json: +05 二月 2026 | 06:29:26,219 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:127421 player:[504700] fake_json: +05 二月 2026 | 06:29:27,474 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:715128 player:[828730] fake_json: +05 二月 2026 | 06:29:28,685 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:878722 player:[598580] fake_json: +05 二月 2026 | 06:29:29,346 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:875820 player:[199211] fake_json: +05 二月 2026 | 06:29:30,244 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:771251 player:[907904] fake_json: +05 二月 2026 | 06:29:31,945 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:309273 player:[950058] fake_json: +05 二月 2026 | 06:29:32,846 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:860287 player:[152687] fake_json: +05 二月 2026 | 06:29:33,442 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:189608 player:[939038] fake_json: +05 二月 2026 | 06:29:36,987 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:860469 player:[991883] fake_json: +05 二月 2026 | 06:29:37,549 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:545365 player:[461790] fake_json: +05 二月 2026 | 06:29:38,799 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:531483 player:[274424] fake_json: +05 二月 2026 | 06:29:40,211 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:418195 player:[638865] fake_json: +05 二月 2026 | 06:29:41,032 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:554258 player:[991883] fake_json: +05 二月 2026 | 06:29:41,629 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:440581 player:[939038] fake_json: +05 二月 2026 | 06:29:46,301 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:142513 player:[152687] fake_json: +05 二月 2026 | 06:30:09,017 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:30:09,062 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:30:12,327 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:967129 player:[274424] fake_json: +05 二月 2026 | 06:30:13,480 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:580338 player:[991883] fake_json: +05 二月 2026 | 06:30:14,048 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:458967 player:[939038] fake_json: +05 二月 2026 | 06:30:15,021 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:993164 player:[907904] fake_json: +05 二月 2026 | 06:30:17,047 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:219710 player:[154065] fake_json: +05 二月 2026 | 06:30:18,554 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:30:19,882 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1863ms +05 二月 2026 | 06:30:20,120 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1604ms +05 二月 2026 | 06:30:26,115 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:3888ms +05 二月 2026 | 06:30:27,772 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:869341 player:[912807] fake_json: +05 二月 2026 | 06:30:27,804 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:869341 player:[912807] fake_json: +05 二月 2026 | 06:30:28,470 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:774109 player:[199211] fake_json: +05 二月 2026 | 06:30:28,535 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:774109 player:[199211] fake_json: +05 二月 2026 | 06:30:29,186 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:541855 player:[828730] fake_json: +05 二月 2026 | 06:30:29,196 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:541855 player:[828730] fake_json: +05 二月 2026 | 06:30:29,794 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:401281 player:[950058] fake_json: +05 二月 2026 | 06:30:29,847 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:401281 player:[950058] fake_json: +05 二月 2026 | 06:30:30,762 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:964857 player:[939038] fake_json: +05 二月 2026 | 06:30:30,813 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:964857 player:[939038] fake_json: +05 二月 2026 | 06:30:31,744 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:762190 player:[907904] fake_json: +05 二月 2026 | 06:30:31,773 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:762190 player:[907904] fake_json: +05 二月 2026 | 06:30:35,602 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:548859 player:[152687] fake_json: +05 二月 2026 | 06:30:36,209 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:334083 player:[991883] fake_json: +05 二月 2026 | 06:30:37,082 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:680375 player:[598580] fake_json: +05 二月 2026 | 06:31:06,225 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:989327 player:[907904] fake_json: +05 二月 2026 | 06:31:06,930 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:839011 player:[638865] fake_json: +05 二月 2026 | 06:31:07,339 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:347795 player:[461790] fake_json: +05 二月 2026 | 06:31:07,554 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:347795 player:[461790] fake_json: +05 二月 2026 | 06:31:07,918 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:277912 player:[828730] fake_json: +05 二月 2026 | 06:31:08,110 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:277912 player:[828730] fake_json: +05 二月 2026 | 06:31:08,831 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:402385 player:[274424] fake_json: +05 二月 2026 | 06:31:09,252 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:275116 player:[991883] fake_json: +05 二月 2026 | 06:31:09,511 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:275116 player:[991883] fake_json: +05 二月 2026 | 06:31:09,976 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:116534 player:[152687] fake_json: +05 二月 2026 | 06:31:10,161 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:116534 player:[152687] fake_json: +05 二月 2026 | 06:31:10,624 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:115421 player:[199211] fake_json: +05 二月 2026 | 06:31:10,910 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:115421 player:[199211] fake_json: +05 二月 2026 | 06:31:11,474 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:997360 player:[942284] fake_json: +05 二月 2026 | 06:31:12,458 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:31:12,754 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:365408 player:[154065] fake_json: +05 二月 2026 | 06:31:13,638 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1695ms +05 二月 2026 | 06:31:13,976 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1472ms +05 二月 2026 | 06:31:20,256 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:776979 player:[907904] fake_json: +05 二月 2026 | 06:31:20,295 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:776979 player:[907904] fake_json: +05 二月 2026 | 06:31:20,987 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:619723 player:[598580] fake_json: +05 二月 2026 | 06:31:21,025 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:619723 player:[598580] fake_json: +05 二月 2026 | 06:31:21,816 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:775167 player:[939038] fake_json: +05 二月 2026 | 06:31:21,821 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:775167 player:[939038] fake_json: +05 二月 2026 | 06:31:25,472 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:798531 player:[991883] fake_json: +05 二月 2026 | 06:31:26,224 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:391347 player:[907904] fake_json: +05 二月 2026 | 06:31:27,345 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:142807 player:[828730] fake_json: +05 二月 2026 | 06:31:28,152 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:980859 player:[991883] fake_json: +05 二月 2026 | 06:31:28,796 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:881156 player:[950058] fake_json: +05 二月 2026 | 06:31:49,581 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:900251 player:[152687] fake_json: +05 二月 2026 | 06:32:04,517 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:188040 player:[154065] fake_json: +05 二月 2026 | 06:32:05,509 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:947611 player:[504700] fake_json: +05 二月 2026 | 06:32:06,352 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:748633 player:[199211] fake_json: +05 二月 2026 | 06:32:07,206 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:260234 player:[907904] fake_json: +05 二月 2026 | 06:32:09,105 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:919194 player:[638865] fake_json: +05 二月 2026 | 06:32:09,889 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:283222 player:[950058] fake_json: +05 二月 2026 | 06:32:20,324 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:274738 player:[503059] fake_json: +05 二月 2026 | 06:32:21,326 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:812881 player:[274424] fake_json: +05 二月 2026 | 06:32:21,381 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:812881 player:[274424] fake_json: +05 二月 2026 | 06:32:32,603 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:905698 player:[152687] fake_json: +05 二月 2026 | 06:32:33,672 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:648054 player:[154065] fake_json: +05 二月 2026 | 06:32:45,484 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:453575 player:[274424] fake_json: +05 二月 2026 | 06:32:46,252 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:321963 player:[828730] fake_json: +05 二月 2026 | 06:32:58,251 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:1003ms +05 二月 2026 | 06:32:58,303 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:510235 player:[991883] fake_json: +05 二月 2026 | 06:32:58,928 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:424322 player:[907904] fake_json: +05 二月 2026 | 06:33:00,447 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:780419 player:[199211] fake_json: +05 二月 2026 | 06:33:00,616 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:33:01,580 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1454ms +05 二月 2026 | 06:33:02,426 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1575ms +05 二月 2026 | 06:33:05,361 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:541752 player:[950058] fake_json: +05 二月 2026 | 06:33:05,978 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:344751 player:[939038] fake_json: +05 二月 2026 | 06:33:08,285 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:549487 player:[659203,997488] fake_json:1 +05 二月 2026 | 06:33:08,872 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4638ms +05 二月 2026 | 06:33:09,159 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:499095 player:[828730] fake_json: +05 二月 2026 | 06:33:10,086 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:660764 player:[154065] fake_json: +05 二月 2026 | 06:33:24,662 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:789129 player:[907904] fake_json: +05 二月 2026 | 06:33:25,268 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:578915 player:[991883] fake_json: +05 二月 2026 | 06:33:26,202 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:899842 player:[274424] fake_json: +05 二月 2026 | 06:33:27,105 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:745332 player:[598580] fake_json: +05 二月 2026 | 06:33:28,361 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:537924 player:[199211] fake_json: +05 二月 2026 | 06:33:33,726 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:33:33,777 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:33:37,564 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:432811 player:[152687] fake_json: +05 二月 2026 | 06:33:38,573 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:33:40,221 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1744ms +05 二月 2026 | 06:33:40,268 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:2331ms +05 二月 2026 | 06:33:40,656 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:276244 player:[154065] fake_json: +05 二月 2026 | 06:33:43,113 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:33:44,585 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:2074ms +05 二月 2026 | 06:33:44,691 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1663ms +05 二月 2026 | 06:33:51,542 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4599ms +05 二月 2026 | 06:33:52,364 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:614824 player:[504700] fake_json: +05 二月 2026 | 06:33:52,515 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:614824 player:[504700] fake_json: +05 二月 2026 | 06:33:53,179 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:523106 player:[828730] fake_json: +05 二月 2026 | 06:33:53,325 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdateRobotRoomJob | | del 空 robot room:523106 player:[828730] fake_json: +05 二月 2026 | 06:33:55,455 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:906506 player:[154065] fake_json: +05 二月 2026 | 06:33:56,049 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:175959 player:[991883] fake_json: +05 二月 2026 | 06:33:57,291 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:506831 player:[199211] fake_json: +05 二月 2026 | 06:34:04,732 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:122464 player:[503059] fake_json: +05 二月 2026 | 06:34:05,603 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:916370 player:[939038] fake_json: +05 二月 2026 | 06:34:06,184 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:195522 player:[598580] fake_json: +05 二月 2026 | 06:34:13,494 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:651547 player:[461790] fake_json: +05 二月 2026 | 06:34:14,606 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:659668 player:[199211] fake_json: +05 二月 2026 | 06:34:15,298 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:185101 player:[638865] fake_json: +05 二月 2026 | 06:34:16,155 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:373194 player:[161303] fake_json: +05 二月 2026 | 06:34:17,351 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:889475 player:[950058] fake_json: +05 二月 2026 | 06:34:25,509 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:307170 player:[939038] fake_json: +05 二月 2026 | 06:34:34,416 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:394962 player:[828730] fake_json: +05 二月 2026 | 06:34:36,308 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:358279 player:[199211] fake_json: +05 二月 2026 | 06:34:37,153 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdateRobotRoomJob | | del 空 robot room:319521 player:[907904] fake_json: +05 二月 2026 | 06:34:47,864 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:209715 player:[152687] fake_json: +05 二月 2026 | 06:34:48,738 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:347370 player:[598580] fake_json: +05 二月 2026 | 06:34:54,043 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:34:54,088 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:35:01,441 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:35:01,488 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:35:04,801 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:1238ms +05 二月 2026 | 06:35:07,071 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:845201 player:[907904] fake_json: +05 二月 2026 | 06:35:07,685 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:706921 player:[991883] fake_json: +05 二月 2026 | 06:35:08,342 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:196151 player:[199211] fake_json: +05 二月 2026 | 06:35:09,307 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:977253 player:[991883] fake_json: +05 二月 2026 | 06:35:10,651 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:1102ms +05 二月 2026 | 06:35:11,108 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:201018 player:[950058] fake_json: +05 二月 2026 | 06:35:12,496 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:851521 player:[461790] fake_json: +05 二月 2026 | 06:35:13,995 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:1239ms +05 二月 2026 | 06:35:15,684 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:35:16,723 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1490ms +05 二月 2026 | 06:35:17,126 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1479ms +05 二月 2026 | 06:35:23,779 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4891ms +05 二月 2026 | 06:35:23,897 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:999734 player:[907904] fake_json: +05 二月 2026 | 06:35:24,170 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:999734 player:[907904] fake_json: +05 二月 2026 | 06:35:24,512 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:528036 player:[950058] fake_json: +05 二月 2026 | 06:35:24,836 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:528036 player:[950058] fake_json: +05 二月 2026 | 06:35:25,086 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:431918 player:[154065] fake_json: +05 二月 2026 | 06:35:25,505 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:431918 player:[154065] fake_json: +05 二月 2026 | 06:35:26,192 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:872096 player:[939038] fake_json: +05 二月 2026 | 06:35:26,322 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:513482 player:[152687] fake_json: +05 二月 2026 | 06:35:26,744 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:513482 player:[152687] fake_json: +05 二月 2026 | 06:35:27,194 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:229920 player:[504700] fake_json: +05 二月 2026 | 06:35:39,051 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:524845 player:[154065] fake_json: +05 二月 2026 | 06:35:39,976 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:717727 player:[828730] fake_json: +05 二月 2026 | 06:35:40,724 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:513882 player:[991883] fake_json: +05 二月 2026 | 06:35:41,682 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:725384 player:[274424] fake_json: +05 二月 2026 | 06:35:42,228 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:248389 player:[249926] fake_json: +05 二月 2026 | 06:35:46,858 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:35:46,899 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:35:52,842 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:609470 player:[199211] fake_json: +05 二月 2026 | 06:35:53,963 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:35:55,486 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:988359 player:[598580] fake_json: +05 二月 2026 | 06:35:55,523 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1817ms +05 二月 2026 | 06:35:55,589 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:2245ms +05 二月 2026 | 06:35:56,128 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:288402 player:[912807] fake_json: +05 二月 2026 | 06:35:57,259 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:478052 player:[503059] fake_json: +05 二月 2026 | 06:35:58,231 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:35:59,300 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1592ms +05 二月 2026 | 06:36:00,062 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1649ms +05 二月 2026 | 06:36:07,295 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4959ms +05 二月 2026 | 06:36:08,982 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:410843 player:[638865] fake_json: +05 二月 2026 | 06:36:09,016 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:410843 player:[638865] fake_json: +05 二月 2026 | 06:36:09,636 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:173607 player:[461790] fake_json: +05 二月 2026 | 06:36:09,636 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:173607 player:[461790] fake_json: +05 二月 2026 | 06:36:10,512 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:754957 player:[907904] fake_json: +05 二月 2026 | 06:36:10,515 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:754957 player:[907904] fake_json: +05 二月 2026 | 06:36:11,070 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdateRobotRoomJob | | del 空 robot room:743545 player:[154065] fake_json: +05 二月 2026 | 06:36:11,104 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:743545 player:[154065] fake_json: +05 二月 2026 | 06:36:25,703 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:36:25,757 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:36:30,677 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:36:31,973 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:595326 player:[818783] fake_json: +05 二月 2026 | 06:36:32,261 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:2121ms +05 二月 2026 | 06:36:32,516 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1721ms +05 二月 2026 | 06:36:32,619 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:114470 player:[912807] fake_json: +05 二月 2026 | 06:36:33,689 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:317177 player:[503059] fake_json: +05 二月 2026 | 06:36:34,265 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:119136 player:[249926] fake_json: +05 二月 2026 | 06:36:35,185 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:981703 player:[199211] fake_json: +05 二月 2026 | 06:36:35,186 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:917ms +05 二月 2026 | 06:36:35,730 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:277424 player:[939038] fake_json: +05 二月 2026 | 06:36:36,796 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:248153 player:[504700] fake_json: +05 二月 2026 | 06:36:37,592 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:877920 player:[828730] fake_json: +05 二月 2026 | 06:36:37,661 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:877920 player:[828730] fake_json: +05 二月 2026 | 06:36:38,105 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:1054ms +05 二月 2026 | 06:36:38,193 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:802467 player:[950058] fake_json: +05 二月 2026 | 06:36:38,417 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:802467 player:[950058] fake_json: +05 二月 2026 | 06:36:38,826 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:628167 player:[828730] fake_json: +05 二月 2026 | 06:36:39,040 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:628167 player:[828730] fake_json: +05 二月 2026 | 06:36:39,410 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:171047 player:[991883] fake_json: +05 二月 2026 | 06:36:39,787 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:171047 player:[991883] fake_json: +05 二月 2026 | 06:36:40,888 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:36:42,146 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1699ms +05 二月 2026 | 06:36:42,484 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1414ms +05 二月 2026 | 06:36:48,638 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4307ms +05 二月 2026 | 06:36:48,731 | INFO | tstse | service.io.SocketEngine | | status : Connect +05 二月 2026 | 06:36:51,466 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:884834 player:[942284] fake_json: +05 二月 2026 | 06:36:51,546 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:884834 player:[942284] fake_json: +05 二月 2026 | 06:36:52,025 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:783139 player:[274424] fake_json: +05 二月 2026 | 06:36:52,074 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:783139 player:[274424] fake_json: +05 二月 2026 | 06:36:52,600 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:581924 player:[152687] fake_json: +05 二月 2026 | 06:36:52,691 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:581924 player:[152687] fake_json: +05 二月 2026 | 06:36:53,747 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:966315 player:[154065] fake_json: +05 二月 2026 | 06:36:53,784 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:966315 player:[154065] fake_json: +05 二月 2026 | 06:36:54,386 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:118592 player:[818783] fake_json: +05 二月 2026 | 06:36:54,470 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:118592 player:[818783] fake_json: +05 二月 2026 | 06:37:05,943 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:551972 player:[839344] fake_json: +05 二月 2026 | 06:37:06,736 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:340797 player:[912807] fake_json: +05 二月 2026 | 06:37:07,289 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:307860 player:[725378] fake_json: +05 二月 2026 | 06:37:08,300 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:438341 player:[950058] fake_json: +05 二月 2026 | 06:37:09,185 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:443346 player:[828730] fake_json: +05 二月 2026 | 06:37:10,756 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:897728 player:[598580] fake_json: +05 二月 2026 | 06:37:11,402 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:330162 player:[199211] fake_json: +05 二月 2026 | 06:37:11,980 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:279047 player:[907904] fake_json: +05 二月 2026 | 06:37:12,876 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:238178 player:[503059] fake_json: +05 二月 2026 | 06:37:13,462 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:122112 player:[828730] fake_json: +05 二月 2026 | 06:37:21,854 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:884607 player:[991883] fake_json: +05 二月 2026 | 06:37:22,737 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:932847 player:[504700] fake_json: +05 二月 2026 | 06:37:43,802 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:691488 player:[274424] fake_json: +05 二月 2026 | 06:37:44,386 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:535096 player:[598580] fake_json: +05 二月 2026 | 06:37:45,009 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:334278 player:[907904] fake_json: +05 二月 2026 | 06:37:45,631 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:172253 player:[828730] fake_json: +05 二月 2026 | 06:37:49,811 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:355566 player:[199211] fake_json: +05 二月 2026 | 06:37:50,343 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:304045 player:[152687] fake_json: +05 二月 2026 | 06:37:51,235 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:858000 player:[154065] fake_json: +05 二月 2026 | 06:37:51,809 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:559138 player:[504700] fake_json: +05 二月 2026 | 06:37:52,576 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:937446 player:[638865] fake_json: +05 二月 2026 | 06:37:54,018 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:415416 player:[942284] fake_json: +05 二月 2026 | 06:37:54,886 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:871422 player:[154065] fake_json: +05 二月 2026 | 06:37:55,450 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:227816 player:[991883] fake_json: +05 二月 2026 | 06:38:02,886 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:357282 player:[274424] fake_json: +05 二月 2026 | 06:38:11,690 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:508749 player:[950058] fake_json: +05 二月 2026 | 06:38:12,586 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:824150 player:[907904] fake_json: +05 二月 2026 | 06:38:13,195 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:739876 player:[598580] fake_json: +05 二月 2026 | 06:38:14,019 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:571490 player:[199211] fake_json: +05 二月 2026 | 06:38:22,604 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:776622 player:[152687] fake_json: +05 二月 2026 | 06:38:27,104 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:38:28,212 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1675ms +05 二月 2026 | 06:38:28,655 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1372ms +05 二月 2026 | 06:38:34,168 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:210029 player:[828730] fake_json: +05 二月 2026 | 06:38:35,167 | INFO | tstse | service.io.SocketEngine | | status : Connect +05 二月 2026 | 06:38:35,172 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4531ms +05 二月 2026 | 06:38:36,051 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:991369 player:[907904] fake_json: +05 二月 2026 | 06:38:37,098 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:281036 player:[991883] fake_json: +05 二月 2026 | 06:38:38,920 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:1038ms +05 二月 2026 | 06:38:42,238 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:590485 player:[305125,325398] fake_json:1 +05 二月 2026 | 06:38:44,093 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:356023 player:[504700] fake_json: +05 二月 2026 | 06:38:44,756 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:504831 player:[199211] fake_json: +05 二月 2026 | 06:38:45,069 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:216397 player:[598580] fake_json: +05 二月 2026 | 06:38:45,629 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:829307 player:[461790] fake_json: +05 二月 2026 | 06:38:45,955 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:580602 player:[950058] fake_json: +05 二月 2026 | 06:38:51,400 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:969ms +05 二月 2026 | 06:38:53,310 | INFO | qtp391618063-73 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:38:54,142 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:149682 player:[828730] fake_json: +05 二月 2026 | 06:38:54,211 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1413ms +05 二月 2026 | 06:38:54,791 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1288ms +05 二月 2026 | 06:39:02,330 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:823702 player:[154065] fake_json: +05 二月 2026 | 06:39:02,776 | INFO | tstse | service.io.SocketEngine | | status : Connect +05 二月 2026 | 06:39:02,798 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4374ms +05 二月 2026 | 06:39:03,797 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:435362 player:[907904] fake_json: +05 二月 2026 | 06:39:04,335 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:306592 player:[152687] fake_json: +05 二月 2026 | 06:39:14,976 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:887ms +05 二月 2026 | 06:39:19,099 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:963135 player:[950058] fake_json: +05 二月 2026 | 06:39:19,648 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:918648 player:[249926] fake_json: +05 二月 2026 | 06:39:20,602 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:888075 player:[274424] fake_json: +05 二月 2026 | 06:39:21,470 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:348927 player:[828730] fake_json: +05 二月 2026 | 06:39:22,297 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:784664 player:[461790] fake_json: +05 二月 2026 | 06:39:23,135 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:278367 player:[991883] fake_json: +05 二月 2026 | 06:39:24,305 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:966914 player:[818783] fake_json: +05 二月 2026 | 06:39:26,843 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:742885 player:[199211] fake_json: +05 二月 2026 | 06:39:27,724 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:400129 player:[154065] fake_json: +05 二月 2026 | 06:39:31,820 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:960418 player:[638865] fake_json: +05 二月 2026 | 06:39:33,115 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:963442 player:[907904] fake_json: +05 二月 2026 | 06:39:40,904 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:170775 player:[828730] fake_json: +05 二月 2026 | 06:39:41,836 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:696077 player:[504700] fake_json: +05 二月 2026 | 06:39:42,715 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:787164 player:[152687] fake_json: +05 二月 2026 | 06:39:43,853 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:106894 player:[274424] fake_json: +05 二月 2026 | 06:40:28,477 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:40:28,519 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:40:37,587 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +05 二月 2026 | 06:40:37,633 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +05 二月 2026 | 06:40:43,594 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:40:44,964 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1970ms +05 二月 2026 | 06:40:45,615 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1813ms +05 二月 2026 | 06:40:52,939 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4828ms +05 二月 2026 | 06:41:08,410 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:41:09,435 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1524ms +05 二月 2026 | 06:41:09,788 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1442ms +05 二月 2026 | 06:41:16,378 | INFO | tstse | service.io.SocketEngine | | status : Connect +05 二月 2026 | 06:41:16,389 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:119304] time:4089ms +05 二月 2026 | 06:41:22,209 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:621496 player:[598580] fake_json: +05 二月 2026 | 06:41:23,286 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:887610 player:[950058] fake_json: +05 二月 2026 | 06:41:23,823 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:480985 player:[907904] fake_json: +05 二月 2026 | 06:41:24,668 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:601720 player:[249926] fake_json: +05 二月 2026 | 06:41:31,877 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:711388 player:[780164] fake_json: +05 二月 2026 | 06:41:32,426 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:110383 player:[154065] fake_json: +05 二月 2026 | 06:41:33,274 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:997440 player:[274424] fake_json: +05 二月 2026 | 06:41:33,859 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:870887 player:[504700] fake_json: +05 二月 2026 | 06:41:34,436 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:845644 player:[152687] fake_json: +05 二月 2026 | 06:41:34,948 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:573044 player:[828730] fake_json: +05 二月 2026 | 06:41:35,521 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:256097 player:[199211] fake_json: +05 二月 2026 | 06:41:36,484 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:722132 player:[725378] fake_json: +05 二月 2026 | 06:41:37,061 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:316970 player:[503059] fake_json: +05 二月 2026 | 06:41:38,596 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:724999 player:[638865] fake_json: +05 二月 2026 | 06:41:46,846 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:880543 player:[912807] fake_json: +05 二月 2026 | 06:41:47,453 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:715233 player:[461790] fake_json: +05 二月 2026 | 06:41:48,333 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdateRobotRoomJob | | del 空 robot room:172755 player:[373144] fake_json: +05 二月 2026 | 06:42:18,808 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:962869 player:[598580] fake_json: +05 二月 2026 | 06:42:19,505 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:797221 player:[168061] fake_json: +05 二月 2026 | 06:42:20,082 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:652432 player:[598580] fake_json: +05 二月 2026 | 06:42:20,976 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:468080 player:[950058] fake_json: +05 二月 2026 | 06:42:21,923 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:212474 player:[907904] fake_json: +05 二月 2026 | 06:42:23,087 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:551412 player:[199211] fake_json: +05 二月 2026 | 06:42:23,650 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:193151 player:[152687] fake_json: +05 二月 2026 | 06:42:24,582 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:328580 player:[154065] fake_json: +05 二月 2026 | 06:42:25,473 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:42:25,496 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:798947 player:[828730] fake_json: +05 二月 2026 | 06:42:26,014 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:385963 player:[274424] fake_json: +05 二月 2026 | 06:42:26,435 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1426ms +05 二月 2026 | 06:42:27,617 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:846963 player:[839344] fake_json: +05 二月 2026 | 06:42:28,238 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:597094 player:[638865] fake_json: +05 二月 2026 | 06:42:30,283 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdateRobotRoomJob | | del 空 robot room:681512 player:[503059] fake_json: +05 二月 2026 | 06:42:34,136 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:757030 player:[504700] fake_json: +05 二月 2026 | 06:42:35,369 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:367377 player:[249926] fake_json: +05 二月 2026 | 06:42:47,071 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:481946 player:[907904] fake_json: +05 二月 2026 | 06:42:48,597 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:586170 player:[942284] fake_json: +05 二月 2026 | 06:42:49,130 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:409404 player:[818783] fake_json: +05 二月 2026 | 06:42:50,585 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdateRobotRoomJob | | del 空 robot room:719029 player:[828730] fake_json: +05 二月 2026 | 06:43:06,054 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:594467 player:[154065] fake_json: +05 二月 2026 | 06:43:07,511 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:225803 player:[598580] fake_json: +05 二月 2026 | 06:43:09,610 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:456994 player:[152687] fake_json: +05 二月 2026 | 06:43:10,351 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 119304 +05 二月 2026 | 06:43:11,617 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:119304] time:1771ms +05 二月 2026 | 06:43:14,001 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:119304] time:1415ms +05 二月 2026 | 06:43:17,350 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:492013 player:[199211] fake_json: +05 二月 2026 | 06:43:18,235 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:527687 player:[249926] fake_json: +05 二月 2026 | 06:43:18,897 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdateRobotRoomJob | | del 空 robot room:293104 player:[839344] fake_json: +05 二月 2026 | 06:43:21,753 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:265043 player:[168061] fake_json: +05 二月 2026 | 06:43:23,149 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:409751 player:[461790] fake_json: +05 二月 2026 | 06:43:23,442 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 11 +05 二月 2026 | 06:43:23,750 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:382706 player:[828730] fake_json: +05 二月 2026 | 06:43:24,352 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:242667 player:[907904] fake_json: +05 二月 2026 | 06:43:25,197 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:934148 player:[912807] fake_json: +05 二月 2026 | 06:43:26,353 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:542964 player:[504700] fake_json: +05 二月 2026 | 06:43:28,100 | INFO | tstse | service.io.SocketEngine | | status : Connect +05 二月 2026 | 06:43:28,140 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:119304] time:5655ms +05 二月 2026 | 06:43:34,360 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:182291 player:[638865] fake_json: +05 二月 2026 | 06:43:35,582 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:440325 player:[950058] fake_json: +05 二月 2026 | 06:43:42,951 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:225620 player:[152687] fake_json: +05 二月 2026 | 06:43:43,943 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:761790 player:[199211] fake_json: +05 二月 2026 | 06:43:44,561 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:102243 player:[154065] fake_json: +05 二月 2026 | 06:43:45,511 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:778826 player:[839344] fake_json: +05 二月 2026 | 06:43:46,958 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:278736 player:[274424] fake_json: +05 二月 2026 | 06:43:47,911 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:137829 player:[503059] fake_json: +05 二月 2026 | 06:43:56,030 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:288014 player:[828730] fake_json: +05 二月 2026 | 06:43:56,914 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:302673 player:[907904] fake_json: +05 二月 2026 | 06:44:18,547 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:511753 player:[267731] fake_json: +05 二月 2026 | 06:44:19,388 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:897022 player:[504700] fake_json: +05 二月 2026 | 06:44:20,307 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:403010 player:[950058] fake_json: +05 二月 2026 | 06:44:21,292 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:890799 player:[199211] fake_json: +05 二月 2026 | 06:44:22,688 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:596890 player:[839344] fake_json: +05 二月 2026 | 06:44:23,508 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:579773 player:[598580] fake_json: +05 二月 2026 | 06:44:31,502 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:142447 player:[461790] fake_json: +05 二月 2026 | 06:44:39,976 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:562438 player:[503059] fake_json: diff --git a/game_web/web_group/src/main/webapp/logs/web_main.log.2026-02-04 b/game_web/web_group/src/main/webapp/logs/web_main.log.2026-02-04 new file mode 100644 index 0000000..4110c94 --- /dev/null +++ b/game_web/web_group/src/main/webapp/logs/web_main.log.2026-02-04 @@ -0,0 +1,722 @@ +04 二月 2026 | 14:02:16,795 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:02:16,871 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:02:36,494 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:327197 player:[520191,733468] fake_json:1 +04 二月 2026 | 14:02:53,410 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 14:02:53,782 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:592ms +04 二月 2026 | 14:02:55,261 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:564ms +04 二月 2026 | 14:02:58,063 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:03:00,179 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2491ms +04 二月 2026 | 14:05:22,235 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:689567 player:[870909,285195] fake_json:1 +04 二月 2026 | 14:06:08,935 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:340133 player:[990477,148839] fake_json:1 +04 二月 2026 | 14:08:46,314 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:135569 player:[108473,992179] fake_json:1 +04 二月 2026 | 14:09:21,015 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:780903 player:[658983,223369] fake_json:1 +04 二月 2026 | 14:11:41,353 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:783725 player:[395743,608562] fake_json:1 +04 二月 2026 | 14:12:50,865 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:672847 player:[505572,446021] fake_json:1 +04 二月 2026 | 14:13:40,884 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:347815 player:[277652,455295] fake_json:1 +04 二月 2026 | 14:14:40,715 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:459447 player:[232304,893772] fake_json:1 +04 二月 2026 | 14:16:05,995 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:16:06,042 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:16:11,683 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:449672 player:[316412,950997] fake_json:1 +04 二月 2026 | 14:17:24,569 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:17:24,615 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:17:30,877 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:503519 player:[516400,657879] fake_json:1 +04 二月 2026 | 14:18:01,314 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1926ms +04 二月 2026 | 14:18:13,100 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:18:13,151 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:18:24,797 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1644ms +04 二月 2026 | 14:18:36,459 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1603ms +04 二月 2026 | 14:18:42,069 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:18:42,147 | ERROR | mpnet connect thread | service.io.ISocket | | Connection error +java.net.SocketException: Socket operation on nonsocket: configureBlocking + at java.net.DualStackPlainSocketImpl.configureBlocking(Native Method) + at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:84) + at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) + at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) + at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) + at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) + at java.net.Socket.connect(Socket.java:606) + at com.group.service.io.SocketTcp.connectThread(SocketTcp.java:53) + at com.group.service.io.SocketTcp.access$000(SocketTcp.java:19) + at com.group.service.io.SocketTcp$1.run(SocketTcp.java:39) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:18:43,487 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2110ms +04 二月 2026 | 14:19:16,244 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:323634 player:[768647,268775] fake_json:1 +04 二月 2026 | 14:19:40,971 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:911667 player:[161367,296214] fake_json:1 +04 二月 2026 | 14:21:15,767 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:266678 player:[609966,945218] fake_json:1 +04 二月 2026 | 14:21:19,485 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:21:19,532 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:21:27,883 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:21:29,501 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2010ms +04 二月 2026 | 14:22:17,968 | ERROR | Thread-31 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:22:58,394 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:22:58,440 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:23:52,922 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:23:52,970 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:23:55,178 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:23:59,097 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4447ms +04 二月 2026 | 14:24:06,046 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:859644 player:[362003,977049] fake_json:1 +04 二月 2026 | 14:24:26,424 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:24:29,831 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3701ms +04 二月 2026 | 14:24:35,853 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:744437 player:[870909,157747] fake_json:1 +04 二月 2026 | 14:26:28,897 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:26:28,954 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:26:50,031 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:26:50,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:26:53,790 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:26:57,610 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4168ms +04 二月 2026 | 14:27:15,907 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:309463 player:[914143,198184] fake_json:1 +04 二月 2026 | 14:27:25,911 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:611363 player:[976274,658983] fake_json:1 +04 二月 2026 | 14:27:56,632 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:27:56,680 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:28:12,363 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:28:16,139 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4124ms +04 二月 2026 | 14:28:46,192 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:490194 player:[168199,705790] fake_json:1 +04 二月 2026 | 14:29:53,423 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:29:53,473 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:29:58,153 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:30:00,291 | ERROR | Thread-30 | group.service.HttpClient | | +java.net.MalformedURLException: no protocol: 192.168.0.32:8701225 + at java.net.URL.(URL.java:610) + at java.net.URL.(URL.java:507) + at java.net.URL.(URL.java:456) + at com.group.service.HttpClient.__requestAsync(HttpClient.java:79) + at com.group.service.HttpClient.__sendMsg(HttpClient.java:69) + at com.group.service.HttpClient.access$000(HttpClient.java:24) + at com.group.service.HttpClient$2.run(HttpClient.java:188) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:30:01,934 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4393ms +04 二月 2026 | 14:30:21,055 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:594197 player:[301188,957316] fake_json:1 +04 二月 2026 | 14:30:36,895 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:30:36,942 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:30:43,221 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:30:50,264 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7463ms +04 二月 2026 | 14:31:30,985 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:789114 player:[232304,689714] fake_json:1 +04 二月 2026 | 14:31:37,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:31:37,625 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:33:25,595 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:33:31,811 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6548ms +04 二月 2026 | 14:37:45,470 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:37:45,516 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:37:50,024 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:37:56,823 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7230ms +04 二月 2026 | 14:38:11,950 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:38:11,991 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:38:16,372 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:38:17,961 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2145ms +04 二月 2026 | 14:38:37,794 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:38:37,843 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:38:40,969 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:38:42,312 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1797ms +04 二月 2026 | 14:40:04,825 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:40:04,873 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:40:10,944 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:40:12,679 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2078ms +04 二月 2026 | 14:40:49,971 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:40:50,018 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:40:54,743 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:40:55,015 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:40:56,402 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2063ms +04 二月 2026 | 14:41:25,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:41:25,621 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:41:34,091 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:41:34,366 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:41:36,048 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2456ms +04 二月 2026 | 14:41:53,655 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:41:53,696 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:42:00,246 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:42:00,477 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:42:01,767 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1907ms +04 二月 2026 | 14:42:33,541 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:42:33,586 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:42:36,631 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:42:36,900 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:42:38,256 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1989ms +04 二月 2026 | 14:43:11,250 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:43:11,293 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:43:15,311 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:43:15,516 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:43:17,788 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2934ms +04 二月 2026 | 14:44:34,514 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:44:34,558 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:44:43,945 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:44:44,197 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:44:46,460 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2840ms +04 二月 2026 | 14:47:44,665 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:47:44,749 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 14:47:57,185 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:47:57,368 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:47:59,739 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2920ms +04 二月 2026 | 14:48:21,196 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:326ms +04 二月 2026 | 14:48:22,835 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:48:22,953 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:48:25,227 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2807ms +04 二月 2026 | 14:48:43,055 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:48:43,055 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 14:49:51,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:49:51,422 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:49:55,976 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:49:56,169 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:49:58,527 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2856ms +04 二月 2026 | 14:51:30,625 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:51:30,669 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:51:36,495 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:51:36,730 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:51:39,127 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2969ms +04 二月 2026 | 14:51:51,896 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:51:51,939 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:51:53,986 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:51:54,273 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:51:56,715 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3083ms +04 二月 2026 | 14:52:26,191 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:52:26,235 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:52:32,446 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:52:32,663 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:52:35,266 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3173ms +04 二月 2026 | 14:52:50,754 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:52:51,050 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:52:53,185 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2741ms +04 二月 2026 | 14:52:57,065 | INFO | qtp391618063-71 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:52:57,271 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:52:59,715 | INFO | qtp391618063-71 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3094ms +04 二月 2026 | 14:56:48,302 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:56:48,351 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:56:49,317 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:56:50,885 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2008ms +04 二月 2026 | 14:57:18,494 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:57:18,535 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:57:22,556 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:57:23,981 | ERROR | qtp391618063-67 | taurus.web.WebFilter | | +java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer + at com.taurus.core.entity.TObject.getInt(TObject.java:130) + at com.group.service.GroupRoomService.matchRoom(GroupRoomService.java:1074) + at com.group.controller.GroupRoomController.matchRoom(GroupRoomController.java:32) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at com.taurus.web.TWebServer.handle(TWebServer.java:166) + at com.taurus.web.WebFilter.doFilter(WebFilter.java:58) + at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1487) + at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) + at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) + at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) + at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) + at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) + at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427) + at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) + at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) + at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) + at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) + at org.eclipse.jetty.server.Server.handle(Server.java:370) + at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) + at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984) + at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045) + at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) + at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236) + at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) + at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696) + at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53) + at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) + at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:57:23,984 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1725ms +04 二月 2026 | 14:57:46,909 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:57:46,952 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:57:48,458 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:57:49,489 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1452ms +04 二月 2026 | 14:58:56,219 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:58:56,261 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:01:46,558 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:01:46,604 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:25:50,587 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:25:50,649 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:25:59,065 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:6011ms +04 二月 2026 | 15:26:20,493 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:26:23,973 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4180ms +04 二月 2026 | 15:26:23,981 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:26:43,640 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:26:46,841 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3754ms +04 二月 2026 | 15:26:46,877 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:27:05,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:27:05,503 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:27:12,010 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:27:16,423 | INFO | games2 | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:27:16,432 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:5402ms +04 二月 2026 | 15:27:27,197 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 15:27:28,246 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:1314ms +04 二月 2026 | 15:27:28,805 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:1123ms +04 二月 2026 | 15:27:33,399 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:3623ms +04 二月 2026 | 15:28:24,197 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:28:24,238 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:28:29,424 | INFO | qtp391618063-59 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:28:33,271 | INFO | games2 | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:28:33,414 | INFO | qtp391618063-59 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4824ms +04 二月 2026 | 15:28:49,649 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:28:49,690 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:29:09,405 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:29:09,450 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:29:12,556 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:29:15,810 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:29:17,845 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6034ms +04 二月 2026 | 15:30:29,984 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:30:34,002 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:30:35,991 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:8477ms +04 二月 2026 | 15:32:23,530 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:32:23,530 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:33:26,673 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:33:31,203 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:33:33,175 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7215ms +04 二月 2026 | 15:34:23,289 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:34:23,331 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:34:34,777 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:34:39,613 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:34:41,647 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7796ms +04 二月 2026 | 15:37:11,786 | ERROR | Thread-29 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:37:11,858 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:37:32,358 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:37:37,041 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:37:39,006 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7604ms +04 二月 2026 | 15:38:13,290 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:38:17,915 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:38:20,174 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7592ms +04 二月 2026 | 15:38:21,374 | ERROR | Thread-39 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:38:21,374 | ERROR | Thread-35 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:38:40,019 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:38:43,954 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:38:45,982 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6861ms +04 二月 2026 | 15:42:35,519 | ERROR | Thread-43 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:42:35,539 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:42:53,549 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:42:57,450 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:42:59,447 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7086ms +04 二月 2026 | 15:43:32,392 | ERROR | Thread-51 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:43:32,417 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:43:33,381 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:43:38,078 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:43:39,263 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6690ms +04 二月 2026 | 15:44:37,280 | ERROR | Thread-56 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:44:37,284 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:44:53,697 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:44:57,396 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:44:59,499 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6511ms +04 二月 2026 | 15:45:34,664 | ERROR | Thread-61 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:45:34,676 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:45:45,855 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:45:49,621 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:45:51,697 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6654ms +04 二月 2026 | 15:49:16,689 | ERROR | Thread-66 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:49:16,701 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:49:20,659 | INFO | qtp391618063-124 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:49:24,439 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:49:26,423 | INFO | qtp391618063-124 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6362ms +04 二月 2026 | 15:51:45,966 | INFO | qtp391618063-134 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:51:50,802 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:51:52,722 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7509ms +04 二月 2026 | 15:52:16,160 | INFO | qtp391618063-134 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 15:52:17,103 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1555ms +04 二月 2026 | 15:52:22,556 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:561ms +04 二月 2026 | 15:52:52,871 | ERROR | Thread-80 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:52:52,871 | ERROR | Thread-73 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:53:01,624 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 15:53:01,955 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:582ms +04 二月 2026 | 15:53:02,420 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:487ms +04 二月 2026 | 15:53:03,682 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:53:05,501 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:53:07,479 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4178ms +04 二月 2026 | 15:53:23,466 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 15:53:24,037 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:793ms +04 二月 2026 | 15:53:24,532 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:493ms +04 二月 2026 | 15:53:27,905 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:53:29,579 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:53:31,614 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3979ms +04 二月 2026 | 15:54:08,273 | ERROR | Thread-90 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:54:08,273 | ERROR | Thread-85 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 16:01:37,449 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 16:01:37,491 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 16:01:46,031 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:01:46,537 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:647ms +04 二月 2026 | 16:01:47,607 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:463ms +04 二月 2026 | 16:01:50,455 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:379ms +04 二月 2026 | 16:01:53,487 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1054ms +04 二月 2026 | 16:02:01,417 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:02:01,734 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:649ms +04 二月 2026 | 16:02:02,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:02:03,427 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:862ms +04 二月 2026 | 16:02:04,375 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:641ms +04 二月 2026 | 16:02:16,575 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:02:16,897 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:520ms +04 二月 2026 | 16:02:17,492 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:545ms +04 二月 2026 | 16:02:20,677 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:338ms +04 二月 2026 | 16:02:23,547 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:02:25,185 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:02:26,271 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:02:26,630 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:641ms +04 二月 2026 | 16:02:27,232 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:609ms +04 二月 2026 | 16:02:27,306 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4192ms +04 二月 2026 | 16:03:24,217 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:03:24,601 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:653ms +04 二月 2026 | 16:03:24,932 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:03:25,286 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:479ms +04 二月 2026 | 16:03:26,515 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:551ms +04 二月 2026 | 16:03:31,507 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:367ms +04 二月 2026 | 16:03:37,117 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:03:37,537 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:580ms +04 二月 2026 | 16:03:37,998 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:03:38,451 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:587ms +04 二月 2026 | 16:03:39,721 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:495ms +04 二月 2026 | 16:03:45,974 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:377360 player:[456982,141106] fake_json:1 +04 二月 2026 | 16:04:05,338 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 16:04:05,391 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 16:04:08,687 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:04:10,863 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:04:12,988 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4795ms +04 二月 2026 | 16:04:16,345 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:648ms +04 二月 2026 | 16:04:22,074 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:04:22,132 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 16:04:28,873 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:04:29,261 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:623ms +04 二月 2026 | 16:04:31,394 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:04:33,106 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:04:35,188 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4228ms +04 二月 2026 | 16:04:42,316 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:04:43,136 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1221ms +04 二月 2026 | 16:04:43,737 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:1113ms +04 二月 2026 | 16:04:57,253 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:04:57,552 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:538ms +04 二月 2026 | 16:04:58,471 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:494ms +04 二月 2026 | 16:05:00,314 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:05:00,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:05:00,769 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:805ms +04 二月 2026 | 16:05:01,106 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:500ms +04 二月 2026 | 16:05:21,168 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:500433 player:[503162,658983] fake_json:1 +04 二月 2026 | 16:05:51,193 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:376250 player:[296214,457322] fake_json:1 +04 二月 2026 | 16:06:27,138 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:06:27,151 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 16:07:22,616 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 16:07:22,663 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 16:07:29,364 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:07:31,479 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:07:33,507 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4640ms +04 二月 2026 | 16:08:02,000 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:616587 player:[834603,923379] fake_json:1 +04 二月 2026 | 16:08:26,452 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:224143 player:[223369,152827] fake_json:1 +04 二月 2026 | 16:09:36,205 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:882695 player:[745978,447305] fake_json:1 +04 二月 2026 | 16:09:45,998 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:09:46,542 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:726ms +04 二月 2026 | 16:10:14,431 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:10:14,893 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:813ms +04 二月 2026 | 16:10:57,827 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:10:57,876 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 16:11:21,577 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:147802 player:[857709,689714] fake_json:1 +04 二月 2026 | 16:11:41,014 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:165651 player:[268301,608562] fake_json:1 +04 二月 2026 | 16:13:15,217 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555 +04 二月 2026 | 16:13:15,910 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:850ms +04 二月 2026 | 16:13:18,098 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:472ms +04 二月 2026 | 16:13:20,968 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555 +04 二月 2026 | 16:13:21,528 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:693ms +04 二月 2026 | 16:13:35,618 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:13:36,431 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:976ms +04 二月 2026 | 16:13:37,882 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:571ms +04 二月 2026 | 16:13:40,953 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:410ms +04 二月 2026 | 16:13:49,204 | INFO | qtp391618063-85 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:13:50,755 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:13:50,985 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:280253 player:[635285,923379] fake_json:1 +04 二月 2026 | 16:13:52,767 | INFO | qtp391618063-85 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3965ms +04 二月 2026 | 16:14:03,848 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:750ms +04 二月 2026 | 16:14:05,254 | INFO | qtp391618063-86 | group.controller.GroupController | | jefe_test: 102555 +04 二月 2026 | 16:14:05,728 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:653ms +04 二月 2026 | 16:14:10,836 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:14:12,682 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:14:14,745 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:4168ms +04 二月 2026 | 16:15:16,010 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:860116 player:[751231,427087] fake_json:1 +04 二月 2026 | 16:15:40,120 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 16:15:40,165 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 16:16:01,506 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:383709 player:[977049,137207] fake_json:1 +04 二月 2026 | 16:16:04,352 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1942ms +04 二月 2026 | 16:16:17,091 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1448ms +04 二月 2026 | 16:16:21,085 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:16:22,832 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:16:24,790 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3957ms +04 二月 2026 | 16:18:41,045 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:894419 player:[624684,232304] fake_json:1 +04 二月 2026 | 16:18:44,517 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057 +04 二月 2026 | 16:18:44,978 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:669ms +04 二月 2026 | 16:18:46,195 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:525057] time:514ms +04 二月 2026 | 16:18:47,452 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057 +04 二月 2026 | 16:18:47,829 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:538ms +04 二月 2026 | 16:19:02,221 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 177475 +04 二月 2026 | 16:19:02,566 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:177475] time:532ms +04 二月 2026 | 16:19:03,858 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:177475] time:518ms +04 二月 2026 | 16:19:05,761 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:19:08,164 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:19:10,217 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:4696ms +04 二月 2026 | 16:19:40,542 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:19:41,933 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:19:44,154 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:3868ms +04 二月 2026 | 16:19:46,392 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:113345 player:[380267,870909] fake_json:1 +04 二月 2026 | 16:21:15,828 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:755135 player:[992179,657879] fake_json:1 +04 二月 2026 | 16:21:25,632 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:21:25,714 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer +04 二月 2026 | 16:22:11,302 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:669919 player:[733468,560202] fake_json:1 +04 二月 2026 | 16:23:35,957 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:109294 player:[977049,971057] fake_json:1 +04 二月 2026 | 16:24:15,714 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:24:15,786 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer +04 二月 2026 | 16:24:36,017 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:728457 player:[426015,950997] fake_json:1 +04 二月 2026 | 16:24:45,763 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:24:45,774 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer +04 二月 2026 | 16:26:15,848 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:751474 player:[176545,909321] fake_json:1 +04 二月 2026 | 16:26:45,840 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:580977 player:[772988,380267] fake_json:1 +04 二月 2026 | 16:28:11,130 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:742665 player:[624684,287696] fake_json:1 +04 二月 2026 | 16:28:20,853 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:965585 player:[807782,153276] fake_json:1 +04 二月 2026 | 16:30:26,512 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:417703 player:[446881,745978] fake_json:1 +04 二月 2026 | 16:35:18,858 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1 +04 二月 2026 | 16:35:18,928 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1 +04 二月 2026 | 16:35:25,913 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:787124 player:[268301,426015] fake_json:1 +04 二月 2026 | 16:37:16,447 | INFO | qtp391618063-130 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 16:37:16,829 | INFO | qtp391618063-130 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:761ms +04 二月 2026 | 16:37:17,400 | INFO | qtp391618063-131 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:460ms +04 二月 2026 | 16:37:18,220 | INFO | qtp391618063-120 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1273ms +04 二月 2026 | 16:38:16,070 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:578016 player:[997151,768647] fake_json:1 +04 二月 2026 | 16:38:31,060 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:133397 player:[117543,893772] fake_json:1 +04 二月 2026 | 16:40:11,144 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:372933 player:[325465,193548] fake_json:1 +04 二月 2026 | 16:41:15,999 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:142252 player:[298423,990477] fake_json:1 +04 二月 2026 | 16:42:06,416 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:451170 player:[559763,265830] fake_json:1 +04 二月 2026 | 16:43:46,318 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:400324 player:[693996,362003] fake_json:1 +04 二月 2026 | 16:44:11,453 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:992582 player:[826627,296214] fake_json:1 +04 二月 2026 | 16:46:05,988 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:940744 player:[774088,378632] fake_json:1 +04 二月 2026 | 16:47:46,149 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:740851 player:[265830,198184] fake_json:1 +04 二月 2026 | 17:47:21,143 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1 +04 二月 2026 | 17:47:21,726 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1 +04 二月 2026 | 17:47:30,880 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1 +04 二月 2026 | 17:47:31,682 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1 +04 二月 2026 | 17:48:51,277 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:840244 player:[161367,877472] fake_json:1 +04 二月 2026 | 17:49:15,965 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330433 player:[455295,771035] fake_json:1 +04 二月 2026 | 17:51:40,823 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:786319 player:[805963,582578] fake_json:1 +04 二月 2026 | 17:52:40,881 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:795690 player:[132277,733468] fake_json:1 +04 二月 2026 | 17:54:30,946 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:487446 player:[394446,772988] fake_json:1 +04 二月 2026 | 17:55:11,208 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:569922 player:[755783,893772] fake_json:1 +04 二月 2026 | 17:57:10,931 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:849837 player:[291453,987020] fake_json:1 +04 二月 2026 | 17:58:00,925 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:846448 player:[461205,909321] fake_json:1 +04 二月 2026 | 17:58:18,146 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 17:58:18,189 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 17:59:35,879 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 17:59:35,923 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:18:06,038 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:18:06,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:18:33,917 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:18:33,957 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:19:52,101 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:19:52,140 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:19:57,203 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:944036 player:[198184,991538] fake_json:1 +04 二月 2026 | 18:20:11,158 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:20:11,199 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:20:16,326 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:754798 player:[285195,152827] fake_json:1 +04 二月 2026 | 18:21:29,490 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:21:29,536 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:21:37,000 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 18:21:37,519 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:833ms +04 二月 2026 | 18:21:38,727 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:425ms +04 二月 2026 | 18:21:41,511 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 18:21:43,526 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2377ms +04 二月 2026 | 18:21:43,642 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 18:22:30,000 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:22:30,039 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:22:43,143 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 18:22:43,526 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:540ms +04 二月 2026 | 18:22:44,751 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:529ms +04 二月 2026 | 18:22:51,739 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2976ms +04 二月 2026 | 18:22:57,859 | INFO | qtp391618063-58 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:392ms +04 二月 2026 | 18:22:59,623 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:508ms +04 二月 2026 | 18:23:01,381 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 18:23:03,479 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2611ms +04 二月 2026 | 18:24:41,930 | INFO | qtp391618063-70 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:510ms +04 二月 2026 | 18:24:45,877 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2077ms +04 二月 2026 | 18:25:28,109 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:25:28,154 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:25:32,107 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 18:25:33,953 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2354ms +04 二月 2026 | 18:25:34,116 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 20:14:55,906 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 20:14:55,985 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 20:16:12,778 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 20:16:13,139 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:494ms +04 二月 2026 | 20:16:14,678 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:529ms +04 二月 2026 | 20:16:28,771 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:378ms +04 二月 2026 | 20:16:32,422 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 20:16:33,969 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1830ms +04 二月 2026 | 20:17:16,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 20:17:16,464 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 20:17:26,220 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 20:17:27,241 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1328ms +04 二月 2026 | 20:19:18,588 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:256ms +04 二月 2026 | 20:19:21,209 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 20:19:22,123 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1320ms +04 二月 2026 | 20:19:22,346 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 20:24:25,725 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 20:24:25,765 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer +04 二月 2026 | 20:29:07,054 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 20:29:07,410 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:496ms +04 二月 2026 | 20:29:16,413 | INFO | qtp391618063-89 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:362ms +04 二月 2026 | 20:29:21,849 | INFO | qtp391618063-78 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 20:29:23,099 | INFO | qtp391618063-78 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1436ms +04 二月 2026 | 20:29:23,187 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 21:03:09,855 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:03:09,904 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:04:28,839 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:04:28,892 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:04:53,666 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:04:53,715 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:05:24,711 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:05:24,764 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:07:16,387 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:07:16,436 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:07:30,534 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:07:30,579 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:08:24,578 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:08:24,623 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:09:04,382 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:09:04,430 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:10:18,221 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:10:18,268 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:11:32,527 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:11:32,569 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:29:19,947 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:29:19,993 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:41:20,877 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:41:20,926 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:46:53,882 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:46:53,927 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! diff --git a/game_web/web_group/target/ROOT.war b/game_web/web_group/target/ROOT.war index 0da9ecd..ca8f9d7 100644 Binary files a/game_web/web_group/target/ROOT.war and b/game_web/web_group/target/ROOT.war differ diff --git a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/MainServer.class b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/MainServer.class index ebe8ae3..1104230 100644 Binary files a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/MainServer.class and b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/MainServer.class differ diff --git a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class index 17070cc..f4b9189 100644 Binary files a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class and b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class differ diff --git a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class index 4861926..9d31de3 100644 Binary files a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class and b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class differ diff --git a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class index 97a6c2c..12935a8 100644 Binary files a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class and b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class differ diff --git a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class index 91ec05e..9555bd0 100644 Binary files a/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class and b/game_web/web_group/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class differ diff --git a/game_web/web_group/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar b/game_web/web_group/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar index 4541218..cda4b21 100644 Binary files a/game_web/web_group/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar and b/game_web/web_group/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar differ diff --git a/game_web/web_group/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar b/game_web/web_group/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar index 9a0c049..fac6b51 100644 Binary files a/game_web/web_group/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar and b/game_web/web_group/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar differ diff --git a/game_web/web_group/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar b/game_web/web_group/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar index efe0621..0443507 100644 Binary files a/game_web/web_group/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar and b/game_web/web_group/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar differ diff --git a/game_web/web_group/target/classes/com/group/MainServer.class b/game_web/web_group/target/classes/com/group/MainServer.class index ebe8ae3..1104230 100644 Binary files a/game_web/web_group/target/classes/com/group/MainServer.class and b/game_web/web_group/target/classes/com/group/MainServer.class differ diff --git a/game_web/web_group/target/classes/com/group/job/UpdatePlayRoomJob.class b/game_web/web_group/target/classes/com/group/job/UpdatePlayRoomJob.class index 17070cc..f4b9189 100644 Binary files a/game_web/web_group/target/classes/com/group/job/UpdatePlayRoomJob.class and b/game_web/web_group/target/classes/com/group/job/UpdatePlayRoomJob.class differ diff --git a/game_web/web_group/target/classes/com/group/job/UpdateRobotRoomJob.class b/game_web/web_group/target/classes/com/group/job/UpdateRobotRoomJob.class index 4861926..9d31de3 100644 Binary files a/game_web/web_group/target/classes/com/group/job/UpdateRobotRoomJob.class and b/game_web/web_group/target/classes/com/group/job/UpdateRobotRoomJob.class differ diff --git a/game_web/web_group/target/classes/com/group/service/GroupRoomService.class b/game_web/web_group/target/classes/com/group/service/GroupRoomService.class index 97a6c2c..12935a8 100644 Binary files a/game_web/web_group/target/classes/com/group/service/GroupRoomService.class and b/game_web/web_group/target/classes/com/group/service/GroupRoomService.class differ diff --git a/game_web/web_group/target/classes/com/group/service/GroupService.class b/game_web/web_group/target/classes/com/group/service/GroupService.class index 91ec05e..9555bd0 100644 Binary files a/game_web/web_group/target/classes/com/group/service/GroupService.class and b/game_web/web_group/target/classes/com/group/service/GroupService.class differ diff --git a/game_web/web_group_robot/.idea/compiler.xml b/game_web/web_group_robot/.idea/compiler.xml new file mode 100644 index 0000000..4a6d16d --- /dev/null +++ b/game_web/web_group_robot/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/.idea/encodings.xml b/game_web/web_group_robot/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/game_web/web_group_robot/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/.idea/jarRepositories.xml b/game_web/web_group_robot/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/game_web/web_group_robot/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/.idea/misc.xml b/game_web/web_group_robot/.idea/misc.xml new file mode 100644 index 0000000..d5cd614 --- /dev/null +++ b/game_web/web_group_robot/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/.idea/vcs.xml b/game_web/web_group_robot/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/game_web/web_group_robot/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/.idea/workspace.xml b/game_web/web_group_robot/.idea/workspace.xml new file mode 100644 index 0000000..2264e2a --- /dev/null +++ b/game_web/web_group_robot/.idea/workspace.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "associatedIndex": 5 +} + + + + { + "keyToString": { + "Application.Main.executor": "Run", + "Maven.web_group [clean].executor": "Run", + "Maven.web_group [install].executor": "Run", + "RunOnceActivity.ShowReadmeOnStart": "true", + "git-widget-placeholder": "master", + "kotlin-language-version-configured": "true", + "last_opened_file_path": "D:/project/changhongserver", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1770034638903 + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/build/local/taurus-core.xml b/game_web/web_group_robot/build/local/taurus-core.xml new file mode 100644 index 0000000..e677c8e --- /dev/null +++ b/game_web/web_group_robot/build/local/taurus-core.xml @@ -0,0 +1,96 @@ + + + log4j.properties + + + database + com.taurus.core.plugin.database.DataBasePlugin + + + + 100 + + 10 + + 180000 + + select 1 + + 10000 + + 60000 + + + + false + true + utf-8 + + UTC + + true + + 250 + + 2048 + + + + + + db1 + com.mysql.cj.jdbc.Driver + jdbc:mysql://192.168.0.11:6060/wb_game + proto_ff + 37du_game + + + + + + redis + com.taurus.core.plugin.redis.RedisPlugin + + + + 80 + + 20 + + 5 + + -1 + + true + + true + + true + + 100 + + 60000 + + 30000 + + 1800000 + + true + + + + + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/build/pro/bank_hp.lua b/game_web/web_group_robot/build/pro/bank_hp.lua new file mode 100644 index 0000000..d3a02ce --- /dev/null +++ b/game_web/web_group_robot/build/pro/bank_hp.lua @@ -0,0 +1,19 @@ +local tag_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local bank_hp = tonumber(redis.call('hget', KEYS[2],KEYS[3])) +bank_hp = not bank_hp and 0 or bank_hp +local hp = tonumber(ARGV[1]) +local opt = tonumber(ARGV[2]) +if opt==0 then + if bank_hp < hp then + return 3 + end + bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],-hp) + tag_hp = redis.call('hincrBy',KEYS[1],'hp',hp) +else + if tag_hp < hp then + return 4 + end + bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],hp) + tag_hp = redis.call('hincrBy',KEYS[1],'hp',-hp) +end +return {tag_hp,bank_hp} \ No newline at end of file diff --git a/game_web/web_group_robot/build/pro/log4j.properties b/game_web/web_group_robot/build/pro/log4j.properties new file mode 100644 index 0000000..6786dba --- /dev/null +++ b/game_web/web_group_robot/build/pro/log4j.properties @@ -0,0 +1,20 @@ + +log4j.rootLogger = INFO,consoleAppender,fileAppender + +# ConsoleAppender +log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender +log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.consoleAppender.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%t] %c{2} %3x - %m%n + + +# Regular FileAppender +log4j.appender.fileAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.fileAppender.File=${WORKDIR}/logs/web_main.log +log4j.appender.fileAppender.layout.ConversionPattern=%d{dd MMM yyyy | HH:mm:ss,SSS} | %-5p | %t | %c{3} | %3x | %m%n +log4j.appender.fileAppender.Encoding=UTF-8 +log4j.appender.fileAppender.DatePattern='.'yyyy-MM-dd +log4j.appender.dailyFile.Append=true + +# The file is rolled over very day +log4j.appender.fileAppender.DatePattern ='.'yyyy-MM-dd \ No newline at end of file diff --git a/game_web/web_group_robot/build/pro/mgr.lua b/game_web/web_group_robot/build/pro/mgr.lua new file mode 100644 index 0000000..50b3c69 --- /dev/null +++ b/game_web/web_group_robot/build/pro/mgr.lua @@ -0,0 +1,25 @@ +-- redis.call('select',0) +local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp')) + +local ulev = tonumber(ARGV[2]) +local hp = tonumber(ARGV[1]) +if ulev == 3 or ulev == 2 then + if hp > 0 and mgr_hp 0 and reward_hp < hp then + return 3 +else + reward_hp = redis.call('incrBy',KEYS[1],-hp) + tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp) +end +return {reward_hp,tag_hp} \ No newline at end of file diff --git a/game_web/web_group_robot/build/pro/taurus-core.xml b/game_web/web_group_robot/build/pro/taurus-core.xml new file mode 100644 index 0000000..49049a5 --- /dev/null +++ b/game_web/web_group_robot/build/pro/taurus-core.xml @@ -0,0 +1,99 @@ + + + log4j.properties + + + database + com.taurus.core.plugin.database.DataBasePlugin + + + + 100 + + 5 + + 180000 + + select 1 + + 10000 + + 60000 + + + + false + true + utf-8 + + UTC + + true + + 250 + + 2048 + + + + + + db1 + com.mysql.cj.jdbc.Driver + jdbc:mysql://192.168.0.11:6060/wb_game + proto_ff + 37du_game + + + + + + redis + com.taurus.core.plugin.redis.RedisPlugin + + + + 80 + + 8 + + 2 + + -1 + + true + + true + + true + + 100 + + 60000 + + 30000 + + 1800000 + + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/build/pro/trade.lua b/game_web/web_group_robot/build/pro/trade.lua new file mode 100644 index 0000000..c03a438 --- /dev/null +++ b/game_web/web_group_robot/build/pro/trade.lua @@ -0,0 +1,12 @@ +local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp')) +mgr_hp = not mgr_hp and 0 or mgr_hp +tag_hp = not tag_hp and 0 or tag_hp +local hp = tonumber(ARGV[1]) +if hp > 0 and mgr_hp 0 and mgr_hp 0 and reward_hp < hp then + return 3 +else + reward_hp = redis.call('incrBy',KEYS[1],-hp) + tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp) +end +return {reward_hp,tag_hp} \ No newline at end of file diff --git a/game_web/web_group_robot/build/test/taurus-core.xml b/game_web/web_group_robot/build/test/taurus-core.xml new file mode 100644 index 0000000..bde0e53 --- /dev/null +++ b/game_web/web_group_robot/build/test/taurus-core.xml @@ -0,0 +1,99 @@ + + + log4j.properties + + + database + com.taurus.core.plugin.database.DataBasePlugin + + + + 100 + + 1 + + 180000 + + select 1 + + 10000 + + 60000 + + + + false + true + utf-8 + + UTC + + true + + 250 + + 2048 + + + + + + db1 + com.mysql.cj.jdbc.Driver + jdbc:mysql://192.168.0.11:6060/wb_game + proto_ff + 37du_game + + + + + + redis + com.taurus.core.plugin.redis.RedisPlugin + + + + 80 + + 8 + + 2 + + -1 + + true + + true + + true + + 100 + + 60000 + + 30000 + + 1800000 + + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/build/test/trade.lua b/game_web/web_group_robot/build/test/trade.lua new file mode 100644 index 0000000..c03a438 --- /dev/null +++ b/game_web/web_group_robot/build/test/trade.lua @@ -0,0 +1,12 @@ +local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp')) +mgr_hp = not mgr_hp and 0 or mgr_hp +tag_hp = not tag_hp and 0 or tag_hp +local hp = tonumber(ARGV[1]) +if hp > 0 and mgr_hp + 4.0.0 + com.group + web_group_robot + war + 1.0.0 + + UTF-8 + 1.8 + 1.8 + pro + + + + + junit + junit + 3.8.1 + test + + + + + com.data + data_cache + 1.0.1 + + + + + com.taurus + taurus-core + 1.0.1 + + + + + com.taurus + taurus-web + 1.0.1 + + + + + redis.clients + jedis + 2.9.0 + + + + + com.zaxxer + HikariCP + 3.3.1 + + + + + mysql + mysql-connector-java + 8.0.16 + + + + + jdom + jdom + 1.0 + + + + + log4j + log4j + 1.2.17 + + + + + + org.eclipse.jetty + jetty-webapp + 8.2.0.v20160908 + provided + + + org.quartz-scheduler + quartz + 2.2.3 + compile + + + + + + ROOT + + + org.apache.maven.plugins + maven-war-plugin + + 1.8 + 1.8 + UTF-8 + logs/**,config/** + + + config/ + ${project.basedir}/build/${build.type}/ + + + + + + + + diff --git a/game_web/web_group_robot/src/main/java/com/group/MainServer.java b/game_web/web_group_robot/src/main/java/com/group/MainServer.java new file mode 100644 index 0000000..5d96181 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/MainServer.java @@ -0,0 +1,207 @@ +package com.group; + + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import com.data.cache.AccountCache; +import com.data.cache.GroupCache; +import com.group.controller.GroupController; +import com.group.controller.GroupLogController; +import com.group.controller.GroupRoomController; +import com.group.job.UpdatePlayRoomJob; +import com.group.job.UpdateRobotRoomJob; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.routes.Extension; +import com.taurus.core.routes.Routes; +import com.taurus.core.util.FileUtil; + + +import org.quartz.CronTrigger; +import org.quartz.JobDetail; +import org.quartz.Scheduler; +import org.quartz.SchedulerFactory; +import org.quartz.impl.StdSchedulerFactory; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisPoolConfig; + + +import static org.quartz.CronScheduleBuilder.cronSchedule; +import static org.quartz.JobBuilder.newJob; +import static org.quartz.TriggerBuilder.newTrigger; + +public class MainServer extends Extension { + private ScheduledThreadPoolExecutor timeScheduler; + + private static final String WEB_CONFIG_KEY = "web_config"; + private static final String FORCE_VER_KEY = "force_ver"; + + public static Map lua_map = new HashMap<>(); + public MainServer() { + super(); + } + + @Override + public int readVersion() { + int ver = Integer.parseInt(Redis.use("group1_db1").hget(WEB_CONFIG_KEY,FORCE_VER_KEY)); + return ver; + } + + + @Override + public void configRoute(Routes me) { + me.setInterceptor(new WebInterceptor()); + + me.add("group", GroupController.class); + me.add("group/room", GroupRoomController.class); + me.add("group/log",GroupLogController.class); + } + + + public void initJob() { + + try { + SchedulerFactory sf = new StdSchedulerFactory(); + + Scheduler schedrobot = sf.getScheduler(); + JobDetail robot = newJob(UpdateRobotRoomJob.class).withIdentity("update_robot_room", "group").build(); + CronTrigger robottg= newTrigger().withIdentity("update_robot_room_trigger", "group").withSchedule(cronSchedule("0/4 * * * * ? ")).build(); + schedrobot.scheduleJob(robot, robottg); + + + robot = newJob(UpdateRobotRoomJob.class).withIdentity("create_robot_room", "group").build(); + robottg= newTrigger().withIdentity("create_robot_room_trigger", "group").withSchedule(cronSchedule("0/3 * * * * ? ")).build(); + schedrobot.scheduleJob(robot, robottg); + schedrobot.start(); + + } + catch(Exception e) { + + } + } + + @Override + public void onStart() { + /*JedisPoolConfig poolConfig = new JedisPoolConfig(); + poolConfig.setMaxTotal(100); // 最大连接数 + poolConfig.setMaxIdle(50); // 最大空闲连接数 + poolConfig.setMinIdle(10); // 最小空闲连接数 + + // 连接等待配置 + poolConfig.setMaxWaitMillis(3000); // 获取连接最大等待时间(毫秒) + poolConfig.setBlockWhenExhausted(true); // 连接耗尽时是否阻塞 + + // 连接验证配置 + poolConfig.setTestOnBorrow(true); // 获取连接时验证 + poolConfig.setTestOnReturn(false); // 归还连接时验证 + poolConfig.setTestWhileIdle(true); // 空闲时验证 + + // 空闲连接清理配置 + poolConfig.setMinEvictableIdleTimeMillis(60000); // 最小空闲时间 + poolConfig.setTimeBetweenEvictionRunsMillis(30000); // 检查间隔 + poolConfig.setNumTestsPerEvictionRun(-1); + + JedisPool jedisPool = new JedisPool(poolConfig,"r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com",6379,2000,"KuaiLjzhu@2026"); + + + cleanIdleConnectionsByBorrowAndReturn(jedisPool);*/ + // 1. 先启动独立的事件处理线程(只启动一次) + Thread eventThread = new Thread(() -> { + while (true) { + try { + UpdateRobotRoomJob urj = new UpdateRobotRoomJob(); + urj.createRobotRoom(); + //urj.updateRobotRoom(); + Thread.sleep(5000); + + } catch (InterruptedException e) { + break; + } catch (Exception e) { + } + } + }, "Web_Group_Robot-Thread"); + + eventThread.setDaemon(true); // 设置为守护线程 + eventThread.start(); + + + Thread eventThread2 = new Thread(() -> { + while (true) { + try { + UpdateRobotRoomJob urj = new UpdateRobotRoomJob(); + //urj.createRobotRoom(); + urj.updateRobotRoom(); + Thread.sleep(4000); + + } catch (InterruptedException e) { + break; + } catch (Exception e) { + } + } + }, "Web_Update_Group_Robot-Thread"); + + eventThread2.setDaemon(true); // 设置为守护线程 + eventThread2.start(); + + } + + public static void cleanIdleConnectionsByBorrowAndReturn(JedisPool jedisPool) { + System.out.println("=== 开始手动清理空闲连接 ==="); + + int initialIdle = jedisPool.getNumIdle(); + int initialActive = jedisPool.getNumActive(); + System.out.printf("清理前 - 空闲: %d, 活跃: %d%n", initialIdle, initialActive); + + // 获取当前空闲连接数 + int idleConnections = initialIdle; + + // 如果空闲连接超过阈值,开始清理 + if (idleConnections > 20) { + int connectionsToClean = idleConnections - 10; // 保留10个空闲连接 + + System.out.printf("需要清理 %d 个空闲连接%n", connectionsToClean); + + for (int i = 0; i < connectionsToClean; i++) { + try (Jedis jedis = jedisPool.getResource()) { + // 验证连接是否有效 + String pong = jedis.ping(); + if (!"PONG".equals(pong)) { + System.out.printf("连接 %d 无效,将被销毁%n", i + 1); + } + // 获取后立即关闭,如果连接空闲时间过长,连接池会自动销毁 + } catch (Exception e) { + System.err.printf("处理连接 %d 时出错: %s%n", i + 1, e.getMessage()); + } + + // 小延迟,避免对Redis造成压力 + try { + TimeUnit.MILLISECONDS.sleep(10); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + } + + int finalIdle = jedisPool.getNumIdle(); + int finalActive = jedisPool.getNumActive(); + System.out.printf("清理后 - 空闲: %d, 活跃: %d%n", finalIdle, finalActive); + System.out.printf("共清理了 %d 个空闲连接%n", initialIdle - finalIdle); + System.out.println("=== 手动清理完成 ===\n"); + } + + + + @Override + public void onStop() { + if(timeScheduler!=null) { + timeScheduler.shutdownNow(); + } + } + + + + +} diff --git a/game_web/web_group_robot/src/main/java/com/group/Protocol.java b/game_web/web_group_robot/src/main/java/com/group/Protocol.java new file mode 100644 index 0000000..3f80b69 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/Protocol.java @@ -0,0 +1,220 @@ +package com.group; + + +public class Protocol { + + + + // --------------------group-------------------------- + + + /**获取圈子列表*/ + public static final String GET_GROUPS = "get_groups"; + /**获取创建圈子*/ + public static final String CREATE_GROUP = "create_group"; + /**加入圈子*/ + public static final String JOIN_GROUP = "join_group"; + /**删除圈子*/ + public static final String DEL_GROUP = "del_group"; + /**获取申请列表*/ + public static final String GET_GROUP_JOINS = "get_group_joins"; + /**授权加入圈子*/ + public static final String VERIFY_JOIN_GROUP = "verify_join_group"; + /**获取成员列表*/ + public static final String GET_GROUP_MEMBERS = "get_group_members"; + + public static final String GET_MY_MEMBERS = "get_my_members"; + + public static final String GET_MEMBERS_COUNT = "get_members_count"; + + /**获取合伙人列表*/ + public static final String GET_GROUP_PARTNERS = "get_group_partners"; + /**删除成员*/ + public static final String GROUP_KICK = "group_kick"; + + public static final String GET_KICK_LOG = "get_kick_log"; + + /** 邀请加入圈子*/ + public static final String INVITE_GROUP_MEMBER = "invite_group_member"; + /** 获取玩家信息 */ + public static final String GET_PLAYER_INFO = "get_player_info"; + + public static final String CLONE_GROUP = "clone_group"; + + + /** 获取提取数据信息*/ + public static final String TRADE_TAKE_INFO = "get_take_info"; + /** 提取体力值*/ + public static final String TAKE_HP = "take_hp"; + /** 提取体力值*/ + public static final String GROUP_TAKE_HP = "group_take_hp"; + + public static final String GET_BANK_HP = "get_bank_hp"; + public static final String TAKE_BANK_HP = "take_bank_hp"; + public static final String SAVE_BANK_HP = "save_bake_hp"; + + /** 获取提取日志*/ + public static final String GET_TAKE_LOG = "get_take_log"; + + public static final String GET_BANK_LOG = "get_bank_log"; + + + /** 更新成员体力值*/ + public static final String UPDATE_MEMBER_HP = "update_member_hp"; + public static final String UPDATE_MEMBER_SCORE = "update_member_score"; + + public static final String UPDATE_MEMBER_QUEUEID = "update_member_queueid"; //分组id + + public static final String UPDATE_MEMBER_SEEID = "update_member_seeid"; //权限id + + /** 进入圈子*/ + public static final String ENTER_GROUP = "enter_group"; + + /** 置顶圈子*/ + public static final String STICK_GROUP = "stick_group"; + + + /** 添加玩法 */ + public static final String ADD_PLAY = "add_play"; + /** 删除玩法 */ + public static final String DEL_PLAY = "del_play"; + /** 更新玩法*/ + public static final String UPDATE_PLAY = "update_play"; + /** 快速加入房间 */ + public static final String GROUP_MATCH_ROOM = "match_room"; + /** 加入房间 */ + public static final String GROUP_JOIN_ROOM = "join_room"; + /** 删除房间 */ + public static final String GROUP_DEL_ROOM = "del__room"; + /** 更新圈子配置 */ + public static final String GROUP_UPDATE_INFO = "update_info"; + /** 成员禁止娱乐*/ + public static final String GROUP_BAN_MEMBER = "ban_member"; + /** 成员禁止娱乐*/ + public static final String GROUP_BLACK_MEMBER = "black_member"; + /** 成员禁止娱乐*/ + public static final String GROUP_GET_BLACK_MEMBER = "get_black_member"; + /** 玩法禁止娱乐*/ + public static final String GROUP_BAN_PLAY = "ban_play"; + /** 标识玩法*/ + public static final String GROUP_MARK_PLAY = "mark_play"; + /** 更新成员管理*/ + public static final String GROUP_SET_MEMBER_MGR = "set_member_mgr"; + /** 更新成员管理*/ + public static final String GROUP_SET_PARTNER = "set_partner"; + /** 获取成员上级合伙人列表*/ + public static final String GET_MEMBER_PARENTS = "get_member_parents"; + /** 查询成员*/ + public static final String FIND_MEMBER = "find_member"; + /** 查询成员1*/ + public static final String FIND_MEMBER1 = "find_member1"; + /** 获取管理上下分记录*/ + public static final String GET_HPLOG_MGR = "get_hplog_mgr"; + /** 获取管理上下分记录统计*/ + public static final String GET_HPLOG_MGR_COUNT = "get_hplog_mgr_count"; + /** 获取管理员上下分详细信息*/ + public static final String GET_HPLOG_MGR_INFO = "get_hplog_mgr_info"; + /** 获取玩家体力值详细*/ + public static final String GET_HPLOG_INFO = "get_hplog_info"; + + /** 获取玩家详细体力值*/ + public static final String GET_HPLOG_DETAIL_INFO = "get_hplog_detail_info"; + + /** 获取抽水体力值详细*/ + public static final String GET_HPLOG_PUMP = "get_hplog_pump"; + /** 设置奖励*/ + public static final String GROUP_SET_REWARD = "set_reward"; + /** 设置奖励*/ + public static final String GROUP_SET_XIPAI_REWARD = "set_xipai_reward"; + + /** 设置按抽奖励*/ + public static final String GROUP_SET_ANCHOU_REWARD = "set_anchou_reward"; + + /** 获取奖励数据*/ + public static final String GROUP_GET_REWARDS = "get_rewards"; + + + public static final String GROUP_GET_ROBOTPLAYS = "get_panter_robotplays"; + + public static final String GROUP_SET_ROBOTPLAYS = "set_panter_robotplays"; + + + /** 获取奖励日志*/ + public static final String GROUP_GET_REWARD_LOG = "get_reward_log"; + /** 获取奖励统计*/ + public static final String GROUP_GET_REWARD_COUNT = "get_reward_count"; + /** 获取玩法局数统计*/ + public static final String GROUP_GET_PLAY_ROUND_COUNT = "get_play_round_count"; + /** 获取消耗统计*/ + public static final String GROUP_GET_COST_COUNT = "get_cost_count"; + /** 获取局数统计*/ + public static final String GROUP_GET_ROUND_COUNT = "get_round_count"; + /**获得成员统计*/ + public static final String GROUP_GET_MEMBER_STAT = "get_member_stat"; + /**获得合伙人统计*/ + public static final String GROUP_GET_PARTNER_STAT = "get_partner_stat"; + /**查找合伙人统计*/ + public static final String GROUP_FIND_PARTNER_STAT = "find_partner_stat"; + /**获得合伙人统计 成员*/ + public static final String GROUP_GET_PARTNER_STAT_MEMBER = "get_partner_stat_member"; + /**查找合伙人统计 成员*/ + public static final String GROUP_FIND_PARTNER_STAT_MEMBER = "find_partner_stat_member"; + + public static final String GROUP_GET_DIRECT_STAT_MEMBER = "get_direct_stat_member"; + /**获得合伙人统计 玩法*/ + public static final String GROUP_GET_PARTNER_STAT_PLAY = "get_partner_stat_play"; + /** 获取成员排行*/ + public static final String GROUP_GET_MEMBER_RANK = "get_member_rank"; + /** 获取战绩列表*/ + public static final String GROUP_GET_RECORDS = "get_records"; + /** 获取个人亲友圈战绩列表*/ + public static final String GROUP_GET_PERSON_RECORDS = "get_person_records"; + /** 根据房间ID查询战绩*/ + public static final String GROUP_FIND_RECORD_ROOM = "find_record_room"; + /** 调配成员*/ + public static final String DISTRIBUTE_MEMBER = "distribute_member"; + /** 退出圈子*/ + public static final String EXIT_GROUP = "exit_group"; + /** 获取合伙人[日志]管理列表*/ + public static final String GET_PARTNER_INFOS = "get_partner_data"; + /**搜索合伙人信息*/ + public static final String QUERY_PARTNER_INFOS = "query_partner_data"; + /** 获取合伙人[日志]成员列表*/ + public static final String GET_PARTNER_MEMBERS = "get_partner_members"; + + /** 设置管理员权限*/ + public static final String SET_MGR_PERMISSION = "set_mgr_permission"; + /** 获取禁止同桌列表*/ + public static final String GET_BAN_DESK_LIST = "get_ban_desk_list"; + /** 设置禁止同桌*/ + public static final String SET_BAN_DESK = "set_ban_desk"; + /**获取体力值信息*/ + public static final String GET_HP_COUNT_INFO ="get_hp_count_info"; + /** 获取体力值消耗统计*/ + public static final String GROUP_GET_HPCONSUME_COUNT = "get_hpconsume_count"; + /** 转移合伙人*/ + public static final String MOVE_PARTNER = "move_partner"; + /**获取整线体力值*/ + public static final String GET_HP_TOTAL = "get_hp_total"; + /**更新推广设置*/ + public static final String UPDATE_PROMOTION = "update_promotion"; + /**获取推广设置*/ + public static final String GET_PROMOTION = "get_promotion"; + /**获取邮件列表*/ + public static final String GET_MAIL_LIST = "get_mail_list"; + /**删除所以邮件*/ + public static final String DEL_MAIL_ALL = "del_mail_all"; + + /**设置亲友圈合伙人阀值*/ + public static final String SET_AUTO_SCORE ="set_auto_score"; + + /**幸运号数据*/ + public static final String GET_XINGYUNHAO_INFO ="get_xingyunhao_info"; + + /** 设置屏蔽玩法 **/ + public static final String SET_PANTER_BANPLAY = "set_panter_banplay"; + + /**获取所有玩法**/ + public static final String GET_PANTER_ALLPLAYS = "get_panter_allplays"; + +} diff --git a/game_web/web_group_robot/src/main/java/com/group/WebInterceptor.java b/game_web/web_group_robot/src/main/java/com/group/WebInterceptor.java new file mode 100644 index 0000000..1aaf2d2 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/WebInterceptor.java @@ -0,0 +1,186 @@ +package com.group; + +import com.data.bean.AccountBean; +import com.data.bean.GroupBean; +import com.data.bean.GroupMemberBean; +import com.data.bean.GroupPlayBean; +import com.data.cache.AccountCache; +import com.data.cache.GroupCache; +import com.data.util.ErrorCode; +import com.group.service.GroupRoomService; +import com.taurus.core.entity.ITObject; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.routes.Action; +import com.taurus.core.routes.IController; +import com.taurus.core.routes.Interceptor; +import com.taurus.core.util.StringUtil; +import com.taurus.web.Controller; +import com.taurus.web.WebException; + +public class WebInterceptor implements Interceptor{ + /** + * 验证session + */ + public static final int V_SESSION = 1; + /** + * 验证圈子 + */ + public static final int V_GROUP = 2; + /** + * 验证圈主 + */ + public static final int V_GROUP_OWNER = 4; + /** + * 验证合伙人 + */ + public static final int V_GROUP_PARTNER= 8; + /** + * 验证玩法 + */ + public static final int V_GROUP_PLAY= 16; + /** + * 验证管理员 + */ + public static final int V_GROUP_MGR= 32; + /** + * 验证管理员或者合伙人 + */ + public static final int V_GROUP_MGR_OR_PARTNER= 64; + /** + * 检测玩家在不在房间 + */ + public static final int V_GROUP_CHECK_ROOM= 128; + + /** + * 验证圈主或合伙人 + */ + public static final int V_GROUP_OWNER_OR_MGR_OR_PARTNER = 256; + + @Override + public void intercept(Action action, IController controller, Object... args) throws Exception { + Controller ctr = (Controller) controller; + int validate = action.getActionKeyObj().validate(); + String session = ctr.getSession(); + String token = ctr.getTokens(); + if (StringUtil.isNotEmpty(token) && StringUtil.isNotEmpty(session)) + { + String token_session = Redis.use("group1_db0").hget(token, "user"); + if (StringUtil.isEmpty(token_session)) + { + throw new WebException(ErrorCode._NO_SESSION); + } + else { + if (!token_session.equals(session)) + { + throw new WebException(ErrorCode._NO_SESSION); + } + } + } + else { + throw new WebException(ErrorCode._NO_SESSION); + } + + if ((validate&V_SESSION)!=0 ) { + if (!Redis.use("group1_db0").exists(session)) { + throw new WebException(ErrorCode._NO_SESSION); + } + String opt = Redis.use("group1_db0").hget(session, "opt"); +// background del sign + if (!StringUtil.isEmpty(opt) && Integer.parseInt(opt) == 1) { + throw new WebException(ErrorCode._NO_SESSION); + } + } + + if((validate&V_GROUP)!=0) { + ITObject reqData = ctr.getParams(); + if(!reqData.containsKey("id")) { + throw new WebException(ErrorCode.GROUP_NO_EXIST); + } + int groupId = reqData.getInt("id"); + GroupBean gb = GroupCache.getGroup(groupId); + if (gb == null) { + throw new WebException(ErrorCode.GROUP_NO_EXIST); + } + if (gb.stop == 1) { + throw new WebException(ErrorCode.GROUP_STOP_SERVICE); + } + AccountBean acc = AccountCache.getAccount(session); + if((validate&V_GROUP_CHECK_ROOM)!=0) { + boolean checkRoom = GroupRoomService.checkRoom(groupId, acc.id); + if(checkRoom) { + throw new WebException(ErrorCode.GROUP_EXIST_ROOMS); + } + } + boolean v_o_p = (validate&V_GROUP_OWNER_OR_MGR_OR_PARTNER)!=0; + if (v_o_p) + { + if(gb.owner != acc.id) { + GroupMemberBean gmb = GroupCache.getMember(groupId, acc.id); + if (gmb==null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (gmb.lev >= 3) + { + if(gmb.partnerLev<=0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + } + } + } + else if((validate&V_GROUP_OWNER)!=0) { + if(gb.owner != acc.id) { + throw new WebException(ErrorCode.GROUP_NOT_OWNER); + } + }else { + GroupMemberBean gmb = GroupCache.getMember(groupId, acc.id); + if (gmb==null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + int count = 0; + boolean v_m_p = (validate&V_GROUP_MGR_OR_PARTNER)!=0; + + if((validate&V_GROUP_PARTNER)!=0 || v_m_p) { + if(gmb.partnerLev<=0) { + if(v_m_p) { + count ++; + }else { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + } + } + + if((validate&V_GROUP_MGR)!=0 || v_m_p) { + if(gmb.lev == 3) { + if(v_m_p) { + count ++; + }else { + throw new WebException(ErrorCode.GROUP_MGR_EXIST); + } + } + } + + if(v_m_p && count==0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + } + + + if((validate&V_GROUP_PLAY)!=0) { + int pid = reqData.getInt("pid"); + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb==null) { + throw new WebException(ErrorCode.GROUP_PLAY_EXIST); + } + } + + + } + + + + } + + + +} diff --git a/game_web/web_group_robot/src/main/java/com/group/controller/GroupController.java b/game_web/web_group_robot/src/main/java/com/group/controller/GroupController.java new file mode 100644 index 0000000..ff9bd3c --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/controller/GroupController.java @@ -0,0 +1,1541 @@ +package com.group.controller; + +import com.data.bean.AccountBean; +import com.data.bean.GroupMemberBean; +import com.data.cache.AccountCache; +import com.data.cache.BaseCache; +import com.data.cache.GroupCache; +import com.data.cache.GroupMemberCache; +import com.data.util.ErrorCode; +import com.group.Protocol; +import com.group.WebInterceptor; +import com.group.service.GroupLogService; +import com.group.service.GroupRoomService; +import com.group.service.GroupService; +import com.taurus.core.entity.ITArray; +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TArray; +import com.taurus.core.entity.TObject; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.plugin.redis.RedisLock; +import com.taurus.core.routes.ActionKey; +import com.taurus.core.util.StringUtil; +import com.taurus.web.Controller; +import com.taurus.web.WebException; +import redis.clients.jedis.Jedis; + + +public class GroupController extends Controller { + + /** + * 获取圈子列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GET_GROUPS, validate = WebInterceptor.V_SESSION) + public final void getGroups() throws Exception { + String session = this.getSession(); + + AccountBean acc = AccountCache.getAccount(session); + logger.info("jefe_test: "+acc.id); + ITArray list = GroupService.getGroups(acc.id); + ITObject resData = TObject.newInstance(); + resData.putTArray("groups", list); + sendResponse(0, resData); + } + + + /** + * 获取玩家列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GET_HP_TOTAL, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getHpTotal() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int tag = reqData.getInt("tagId"); + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + ITObject resData = GroupService.getPersonHpTotal(groupId, acc.id, tag); + sendResponse(0, resData); + } + + /** + * 获取所有玩法列表 + * @throws Exception + */ + public final void setAllPlays() throws Exception{ + + + + } + + /** + * 获取玩家列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GET_GROUP_MEMBERS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getMembers() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); +// boolean minus_only = reqData.getBoolean("minus_only"); +// int type = reqData.getInt("type"); + ITObject resData = GroupService.getMembers(groupId,acc.id,limit,num); + sendResponse(0, resData); + } + + @ActionKey(value = Protocol.GET_MY_MEMBERS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getMembers_1() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int type = reqData.getInt("type"); //1-我的成员 2-全部成员 + int online = reqData.getInt("online"); + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + } + catch(Exception e) { + + } + + if (tagId == 0) + { + tagId = acc.id; + } + + //////////////////////////////////////////////////////// + ITObject resData = GroupService.getMembers_1(groupId,acc.id, tagId, 0,type,limit,num); + sendResponse(0, resData); + + //////////////////////////////////////////////////////// + } + + @ActionKey(value = Protocol.GET_MEMBERS_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getMembersCount() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + + //////////////////////////////////////////////////////// + ITObject resData = GroupService.getMemberCount(groupId,acc.id); + sendResponse(0, resData); + + //////////////////////////////////////////////////////// + } + + /** + * 查询成员 + * @throws Exception + */ + @ActionKey(value = Protocol.FIND_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void findMember() throws Exception{ + ITObject reqData = this.getParams(); + String session = this.getSession(); + int uid = 0; + int groupId = 0; + int tagId = 0; + int tagtype = 0; + String tagName = StringUtil.Empty; + try { + uid = AccountCache.getAccount(session).id; + groupId = reqData.getInt("id"); + tagId = reqData.containsKey("tagId") ? reqData.getInt("tagId") : 0; + tagName = reqData.containsKey("tagName") ? reqData.getUtfString("tagName") : StringUtil.Empty; + tagtype = reqData.containsKey("tagType") ? reqData.getInt("tagType") : 0; + } + catch(Exception e) { + sendResponse(0, null); + return; + } + if(tagtype==1){ + // + Integer parentid = GroupService.getParents(groupId,tagId); + logger.info("jefe parentid: "+parentid); + ITObject resData = GroupService.findMember(groupId,parentid,parentid,parentid.toString()); + sendResponse(0, resData); + }else{ + ITObject resData = GroupService.findMember(groupId,uid,tagId,tagName); + sendResponse(0, resData); + } + } + + /** + * 查询成员 + * @throws Exception + */ + /* + @ActionKey(value = Protocol.FIND_MEMBER1, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void findMember1() throws Exception{ + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + ITObject resData = GroupService.findMember1(groupId,tagId); + sendResponse(0, resData); + } + */ + + /** + * 获取合伙人 + * + * @throws Exception + */ + /* + @ActionKey(value = Protocol.GET_GROUP_PARTNERS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getPartners() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int qid = reqData.getInt("qid"); + ITObject resData = GroupService.getPartners(groupId,acc.id,limit,num,qid); + sendResponse(0, resData); + } + */ + + /** + * 获取成员上级合伙人列表 + * + * @throws Exception + */ + /* 容易被黑客关注,获取到盟主ID + @ActionKey(value = Protocol.GET_MEMBER_PARENTS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getMemberParents() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + ITArray list = GroupService.getMemberParents(groupId, tagId); + ITObject resData = TObject.newInstance(); + resData.putTArray("parents", list); + sendResponse(0, resData); + } + */ + + + /** + * 获取邀请玩家列表 + * + * @throws Exception + */ + /* + @ActionKey(value = Protocol.GET_GROUP_JOINS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR) + public final void getGroupJoins() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + + ITArray array = GroupService.getGroupJoins(groupId); + ITObject resData = new TObject(); + resData.putTArray("joins", array); + sendResponse(ErrorCode._SUCC, resData); + }*/ + + /** + * 删除圈子 + * + * @throws Exception + */ + /* + @ActionKey(value = Protocol.DEL_GROUP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void delGroup() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + AccountBean acc = AccountCache.getAccount(session); + GroupService.delGroup(groupId,acc.id); + this.sendResponse(0, null); + } + */ + + /** + * 创建圈子 + * + * @throws Exception + */ + @ActionKey(value = Protocol.CREATE_GROUP, validate = WebInterceptor.V_SESSION) + public final void createGroup() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + String name = reqData.getString("name").trim(); + if(StringUtil.isEmpty(name)) { + throw new WebException(ErrorCode._FAILED); + } + name = StringUtil.filterEmoji(name); + if(StringUtil.isEmpty(name)) { + throw new WebException(ErrorCode._FAILED); + } + AccountBean acc = AccountCache.getAccount(session); + int type = reqData.getInt("type"); + int pay_type = reqData.getInt("pay_type"); + int num = 0; + if(reqData.containsKey("num")) { + num = reqData.getInt("num"); + } + + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + String mng = jedis0.hget(acc.redis_key, "mng"); + if (StringUtil.isEmpty(mng) || !mng.equals("2")) + { + throw new WebException(ErrorCode._FAILED); + } + }finally { + jedis0.close(); + } + + ITObject info = GroupService.createGroup(name, acc.id, type,pay_type,num); + if(info!=null) { + ITObject resData = TObject.newInstance(); + resData.putTObject("info", info); + this.sendResponse(0, resData); + }else { + throw new WebException(ErrorCode._FAILED); + } + } + + /** + * 创建圈子 + * + * @throws Exception + */ + /* + @ActionKey(value = Protocol.STICK_GROUP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void topGroup() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + boolean top = reqData.getBoolean("top"); + AccountBean acc = AccountCache.getAccount(session); + int top_time =GroupService.topGroup(groupId, acc.id, top); + + ITObject resData = TObject.newInstance(); + resData.putInt("top_time", top_time); + this.sendResponse(0, resData); + } + */ + + /** + * 进入圈子 + * @throws Exception + */ + @ActionKey(value = Protocol.ENTER_GROUP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void enterGroup() throws Exception{ + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + AccountBean acc = AccountCache.getAccount(session); + ITObject tem = GroupService.enterGroup(groupId, acc.id); + if(tem == null) { + throw new WebException(ErrorCode._FAILED); + } +// ITObject resData = TObject.newInstance(); +// resData.putString("host", tem.getString("host")); +// ITArray arr = GroupService.getPlayList(groupId); +// resData.putTArray("playList", arr); + this.sendResponse(0, tem); + } + + /** + * 退出圈子 + * @throws Exception + */ + /* + @ActionKey(value = Protocol.EXIT_GROUP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void exitGroup() throws Exception{ + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + AccountBean acc = AccountCache.getAccount(session); + GroupService.exitGroup(groupId, acc.id); + this.sendResponse(0, null); + } + */ + + /** + * 创建圈子玩法 + * + * @throws Exception + */ + @ActionKey(value = Protocol.ADD_PLAY, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void addPlay() throws Exception { + ITObject reqData = this.getParams(); + + int groupId = reqData.getInt("id"); + int hpOnOff = reqData.getInt("hpOnOff"); + int groupType = reqData.getInt("gtype"); + if(hpOnOff == 0&&groupType == 2) { + throw new WebException(ErrorCode.GROUP_TYPE2_MUST_HP); + } + int gameId = reqData.getInt("gameId"); + ITObject config = reqData.getTObject("config"); + String name = reqData.getString("name"); + int deskId = reqData.containsKey("deskId") ? reqData.getInt("deskId") : 0; + ITObject hpData = reqData.getTObject("hpData"); + + ITObject obj = GroupService.addPlay(groupId, gameId, name, deskId, config, hpData,hpOnOff); + + this.sendResponse(0, obj); + + } + + /** + * 创建圈子玩法 + * + * @throws Exception + */ + @ActionKey(value = Protocol.UPDATE_PLAY, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR|WebInterceptor.V_GROUP_PLAY) + public final void updatePlay() throws Exception { + ITObject reqData = this.getParams(); + + int groupId = reqData.getInt("id"); + int groupType = reqData.getInt("gtype"); + int hpOnOff = reqData.getInt("hpOnOff"); + if(hpOnOff == 0&&groupType == 2) { + throw new WebException(ErrorCode.GROUP_TYPE2_MUST_HP); + } + int pid = reqData.getInt("pid"); + int gameId = reqData.getInt("gameId"); + ITObject config = reqData.getTObject("config"); + String name = reqData.getString("name"); + ITObject hpData = reqData.getTObject("hpData"); + int deskId = reqData.containsKey("deskId") ? reqData.getInt("deskId") : 0; + + GroupService.updatePlay(groupId,pid, gameId, name, deskId, config, hpData,hpOnOff); + int maxPlayers = config.getInt("maxPlayers"); + int maxRound = config.getInt("maxRound"); + + ITObject params = TObject.newInstance(); + params.putInt("maxPlayers", maxPlayers); + params.putInt("maxRound", maxRound); + + this.sendResponse(0, params); + } + + + /** + * 删除圈子玩法 + * + * @throws Exception + */ + @ActionKey(value = Protocol.DEL_PLAY, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER|WebInterceptor.V_GROUP_PLAY) + public final void delPlay() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int pid = reqData.getInt("pid"); + int result = GroupService.delPlay(groupId,pid); + this.sendResponse(result, null); + } + + /** + * 加入圈子 + * + * @throws Exception + */ + /* + @ActionKey(value = Protocol.JOIN_GROUP, validate = WebInterceptor.V_SESSION) + public final void applyGroup() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + AccountBean acc = AccountCache.getAccount(session); + int result = GroupService.applyGroup(reqData.getInt("id"), acc.id); + sendResponse(result, null); + } + */ + + /** + * 审核加入圈子 + * + * @throws Exception + */ + /* + @ActionKey(value = Protocol.VERIFY_JOIN_GROUP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR) + public final void verifyJoinGroup() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + AccountBean acc = AccountCache.getAccount(session); + int uid = acc.id; + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + boolean allow = reqData.getBoolean("allow"); + int result =GroupService.verifyJoinGroup(groupId, uid, tagId, allow); + if(result!=0) { + throw new WebException(result); + } + this.sendResponse(0, null); + } + */ + + /** + * 添加成员 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_PLAYER_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void getPlayerInfo() throws Exception { + ITObject reqData = this.getParams(); + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(tagId); + if (acc == null) + { + sendResponse(ErrorCode._FAILED, null); + return; + } + + ITObject obj = TObject.newInstance(); + obj.putInt("uid", tagId); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + sendResponse(0, obj); + } + + /** + * 添加成员 + * @throws Exception + */ + @ActionKey(value = Protocol.INVITE_GROUP_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void addMember() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + AccountBean acc = AccountCache.getAccount(session); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + int result =GroupService.addMember(groupId, acc.id, tagId); + if(result!=0) { + throw new WebException(result); + } + this.sendResponse(0, null); + } + + /** + * 删除成员 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_KICK, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void delMember() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + AccountBean acc = AccountCache.getAccount(session); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + + GroupService.delMember(groupId, acc.id, tagId); + + + + this.sendResponse(0, null); + } + + @ActionKey(value = Protocol.GET_KICK_LOG, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getKickLog() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + AccountBean acc = AccountCache.getAccount(session); + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + + ITArray arr = GroupService.getKickLog(groupId, acc.id, limit, num); + + ITObject rspData = new TObject(); + rspData.putTArray("data", arr); + + this.sendResponse(0, rspData); + + logger.info("getKickLog: "+rspData); + } + + + /** + * 禁止娱乐 + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_BAN_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void banMember() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + int ban = reqData.getInt("ban"); + int optType = reqData.getInt("opType"); + AccountBean acc = AccountCache.getAccount(session); + GroupService.banMember(groupId,acc.id, tagId, optType, ban); + this.sendResponse(0, null); + } + + /** + * 禁止娱乐 + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_BLACK_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void blackMember() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + int ban = reqData.getInt("ban"); + int ban_rate = reqData.getInt("ban_rate"); + int ban_value = reqData.getInt("ban_max_value"); + int optType = reqData.getInt("opType"); + AccountBean acc = AccountCache.getAccount(session); + GroupService.blackMember(groupId,acc.id, tagId, optType, ban, ban_rate, ban_value); + ITObject resData = TObject.newInstance(); + resData.putInt("ban", ban); + resData.putInt("playerid", acc.id); + resData.putInt("groupid", groupId); + resData.putInt("ban_rate", ban_rate); + resData.putInt("ban_max_value", ban_value); + resData.putInt("ban_value", 0); + this.sendResponse(0, resData); + } + + /** + * 禁止娱乐 + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_BLACK_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void getBlackMember() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + String gm_key = GroupMemberCache.genKey(groupId, tagId); + ITObject resData = TObject.newInstance(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + String black_key = jedis10.hget(gm_key, "group_black_key"); + if (StringUtil.isEmpty(black_key)) + { + black_key = gm_key; + } + + String black = jedis10.hget(black_key, "black"); + String group_black = jedis10.hget(black_key, "group_black"); + + String black_rate = jedis10.hget(black_key, "group_black_rate"); + if (StringUtil.isEmpty(black_rate)) + { + black_rate = "0"; + } + + String black_max_value = jedis10.hget(black_key, "group_black_max_value"); + if (StringUtil.isEmpty(black_max_value)) + { + black_max_value = "0"; + } + + String black_value = jedis10.hget(black_key, "group_black_now_value"); + if (StringUtil.isEmpty(black_value)) + { + black_value = "0"; + } + + resData.putInt("ban_rate", Integer.parseInt(black_rate)); + resData.putInt("ban_max_value", Integer.parseInt(black_max_value)); + resData.putInt("ban_value", Integer.parseInt(black_value)); + + if (StringUtil.isNotEmpty(black)&&black.equals("0")) + { + resData.putInt("black", 0); + } + else if (StringUtil.isNotEmpty(black)&&black.equals("1")) + { + resData.putInt("black", 1); + } + else if (StringUtil.isNotEmpty(black)&&black.equals("2")) + { + resData.putInt("black", 2); + } + else { + resData.putInt("black", 0); + } + + if (StringUtil.isNotEmpty(group_black)&&group_black.equals("0")) + { + resData.putInt("group_black", 0); + } + else if (StringUtil.isNotEmpty(group_black)&&group_black.equals("1")) + { + resData.putInt("group_black", 1); + } + else if (StringUtil.isNotEmpty(group_black)&&group_black.equals("2")) + { + resData.putInt("group_black", 2); + } + else { + resData.putInt("group_black", 0); + } + } + finally { + jedis10.close(); + } + + + resData.putInt("playerid", tagId); + resData.putInt("groupid", groupId); + this.sendResponse(0, resData); + } + + /** + * 玩法禁止娱乐 + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_BAN_PLAY, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER|WebInterceptor.V_GROUP_PLAY) + public final void banPlay() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int pid = reqData.getInt("pid"); + int ban = reqData.getInt("ban"); + GroupService.banPlay(groupId, pid, ban); + this.sendResponse(0, null); + } + + /** + * 标识玩法 + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_MARK_PLAY, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER|WebInterceptor.V_GROUP_PLAY) + public final void markPlay() throws Exception { + ITObject reqData = this.getParams(); + + int groupId = reqData.getInt("id"); + int pid = reqData.getInt("pid"); + boolean mark = reqData.getBoolean("mark"); + int iMark = mark ? 1 : 0; + + int count = GroupService.getMarkedPlayCount(groupId); + if (iMark == 1) { + if (count >= 5) { + this.sendResponse(1, null); + return; + } + } + + logger.info("GROUP_MARK_PLAY count = " + count); + + GroupService.markPlay(groupId, pid, iMark); + + logger.info("GROUP_MARK_PLAY count ================> OK"); + + this.sendResponse(0, null); + } + + /** + * 更改圈子信息 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_UPDATE_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void updateGroupInfo() throws Exception { + ITObject reqData = this.getParams(); + String name = reqData.getString("name").trim(); + if(StringUtil.isEmpty(name)) { + throw new WebException(ErrorCode._FAILED); + } + name = StringUtil.filterEmoji(name); + if(StringUtil.isEmpty(name)) { + throw new WebException(ErrorCode._FAILED); + } + int groupId = reqData.getInt("id"); +// boolean ban = reqData.getBoolean("ban"); +// String notice = reqData.getString("notice"); +//// boolean ban_ip = reqData.getBoolean("ban_ip"); +//// boolean ban_gps = reqData.getBoolean("ban_gps"); +// int dissolve_opt = reqData.getInt("dissolve_opt"); +// int kick_opt = reqData.getInt("kick_opt"); +// int ban_apply = reqData.getInt("ban_apply"); + + GroupService.updateGroupInfo(groupId, name, reqData); + this.sendResponse(0, null); + } + + /** + * 更改圈子信息 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_SET_MEMBER_MGR, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void updateMgrLev() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + + + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(session); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + int groupId = reqData.getInt("id"); + // 1 设置管理员 2 取消管理员 + int opt = reqData.getInt("opt"); + ITObject resData = GroupService.updateMemberMgr(groupId, tagId, opt); + this.sendResponse(0, resData); + } + + /** + * 更改圈子信息 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_SET_PARTNER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void setParent() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + + + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(session); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + int groupId = reqData.getInt("id"); + // 1 设置管理员 2 取消管理员 +// int opt = reqData.getInt("opt"); + ITObject resData = GroupService.setParent(groupId, acc.id, tagId); + this.sendResponse(0, resData); + } + + /** + * 设置玩法奖励 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_SET_REWARD, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void setReward() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(session); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + int groupId = reqData.getInt("id"); + int value = reqData.getInt("value"); + int pid = reqData.getInt("pid"); + int partnerLev = reqData.getInt("partnerLev"); + boolean all = reqData.getBoolean("all"); + int isSingle = 0; + try { + isSingle = reqData.getInt("single"); //0:all 1:单局 + } + catch (Exception e) + { + + } + int result = GroupService.setReward(groupId, acc.id, tagId,partnerLev, pid, value, all, isSingle); + this.sendResponse(result, null); + } + + /** + * 设置洗牌玩法奖励 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_SET_XIPAI_REWARD, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void setXiPaiReward() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(session); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + int groupId = reqData.getInt("id"); + int value = reqData.getInt("value"); + int pid = reqData.getInt("pid"); + int partnerLev = reqData.getInt("partnerLev"); + boolean all = reqData.getBoolean("all"); + int isSingle = 0; + try { + isSingle = reqData.getInt("single"); //0:all 1:单局 + } + catch (Exception e) + { + + } + int result = GroupService.setXiPaiReward(groupId, acc.id, tagId,partnerLev, pid, value, all, isSingle); + this.sendResponse(result, null); + } + + + /** + * 设置按抽玩法奖励 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_SET_ANCHOU_REWARD, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void setAnChouReward() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(session); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + int groupId = reqData.getInt("id"); + int value = reqData.getInt("value"); + int pid = reqData.getInt("pid"); + int partnerLev = reqData.getInt("partnerLev"); + boolean all = reqData.getBoolean("all"); + int isSingle = 0; + try { + isSingle = reqData.getInt("single"); //0:all 1:单局 + } + catch (Exception e) + { + + } + int result = GroupService.setAnChouReward(groupId, acc.id, tagId,partnerLev, pid, value, all, isSingle); + this.sendResponse(result, null); + } + + + /** + * 获取玩法奖励列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_ROBOTPLAYS, validate = WebInterceptor.V_SESSION) + public final void getpanterrobotplays() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int uid = reqData.getInt("uid"); + ITObject resData = TObject.newInstance(); + + GroupService.getRobotPlays(groupId,uid,resData); + + this.sendResponse(0, resData);; + } + + + @ActionKey(value = Protocol.GROUP_SET_ROBOTPLAYS, validate = WebInterceptor.V_SESSION) + public final void setPanterRobotPlayid() throws Exception{ + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("groupid"); + int pid = reqData.getInt("pid"); + int ban = Integer.parseInt(reqData.getString("ban")); + int uid = reqData.getInt("uid"); + + ITObject resData = TObject.newInstance(); + + GroupService.setPanterRobotPlayid(groupId,pid,ban,uid,resData); + + this.sendResponse(0, resData); + } + + + + /** + * 获取玩法列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_REWARDS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getRewards() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(session); +// if(acc.id == tagId) { +// throw new WebException(ErrorCode._FAILED); +// } + + int groupId = reqData.getInt("id"); + int partnerLev = reqData.getInt("partnerLev"); + ITObject resData = TObject.newInstance(); + GroupService.getRewards(groupId, acc.id, tagId, partnerLev, resData); + + this.sendResponse(0, resData);; + } + + /** + * 更新我成员体力值 + * @throws Exception + */ + @ActionKey(value = Protocol.UPDATE_MEMBER_HP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER|WebInterceptor.V_GROUP_CHECK_ROOM) + public final void updateMemberHp() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int hp = 0; + try { + hp = reqData.getInt("hp"); + } + catch (Exception e) { + throw new WebException(ErrorCode._FAILED); + } + if (hp == 0) { + throw new WebException(ErrorCode._FAILED); + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + int tag = reqData.getInt("tag"); + AccountBean acc = AccountCache.getAccount(session); + try { + // 正在游戏不允许下分操作 + if (hp < 0) { + if (GroupRoomService.checkRoom(groupId, acc.id)) { + throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP); + } + if (GroupRoomService.checkRoom(groupId, tag)) { + throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP); + } + } + + String uidKey = GroupMemberCache.genKey(groupId, acc.id); + long uid_hp = Long.parseLong(jedis10.hget(uidKey, "hp")); + if (uid_hp > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + + String tagKey = GroupMemberCache.genKey(groupId, tag); + long tag_hp = Long.parseLong(jedis10.hget(tagKey, "hp")); + if (tag_hp > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_OTHER_HP_THAN_LIMIET); + } + + if (acc.id != tag) { + if (hp < 0) { + if ((long) uid_hp + (long) Math.abs(hp) > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + + if ((long) tag_hp < Math.abs(hp)) { + throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP); + } + } else if (hp > 0) { + if ((long) uid_hp < hp) { + throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP); + } + + if ((long) tag_hp + (long) Math.abs(hp) > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_OTHER_HP_THAN_LIMIET); + } + } + + GroupMemberBean mng_bean = GroupCache.getMember(groupId, acc.id); + if (mng_bean != null && mng_bean.lev == 1) { + GroupService.updateMemberHp(groupId, acc.id, acc.id, -hp, true, tag); + } + } else { + if (hp < 0) { + if ((long) uid_hp < Math.abs(hp)) { + throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP); + } + } else if (hp > 0) { + if ((long) uid_hp + (long) Math.abs(hp) > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + } + } + } + catch(Exception e) + { + throw e; + } + finally { + jedis10.close(); + } + + ITObject resData = GroupService.updateMemberHp(groupId, acc.id, tag, hp, false, 0); + this.sendResponse(0, resData); + } + + /** + * 更新我成员体力值 + * @throws Exception + */ + @ActionKey(value = Protocol.UPDATE_MEMBER_SCORE, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER|WebInterceptor.V_GROUP_CHECK_ROOM) + public final void updateMemberScore() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int score = reqData.getInt("score"); + + int tag = reqData.getInt("tag"); + AccountBean acc = AccountCache.getAccount(session); + GroupService.updateMemberScore(groupId, acc.id, tag, score); + this.sendResponse(0, null); + } + + /** + * 更新我成员体力值 + * @throws Exception + */ + @ActionKey(value = Protocol.UPDATE_MEMBER_QUEUEID, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER|WebInterceptor.V_GROUP_CHECK_ROOM) + public final void updateMemberQueueid() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int queueid = reqData.getInt("queueid"); + + int tag = reqData.getInt("tag"); + AccountBean acc = AccountCache.getAccount(session); + GroupService.updateMemberQueue(groupId, acc.id, tag, queueid); + this.sendResponse(0, null); + } + + /** + * 更新我成员查看值 + * @throws Exception + */ + @ActionKey(value = Protocol.UPDATE_MEMBER_SEEID, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER|WebInterceptor.V_GROUP_CHECK_ROOM) + public final void updateMemberSeeid() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int seeid = reqData.getInt("seeid"); + + int tag = reqData.getInt("tag"); + AccountBean acc = AccountCache.getAccount(session); + GroupService.updateMemberSee(groupId, acc.id, tag, seeid); + this.sendResponse(0, null); + } + + + /** + * 获取能量包信息 + * @throws Exception + */ + @ActionKey(value = Protocol.TRADE_TAKE_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER_OR_MGR_OR_PARTNER) + public final void getTakeInfo() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + } + catch(Exception e) { + + } + + AccountBean acc = AccountCache.getAccount(session); + if (tagId == 0) + { + tagId = acc.id; + } + ITObject resData = GroupService.getTakeInfo(groupId, acc.id, tagId); + this.sendResponse(0, resData); + } + + /** + * 提取体力值 + * @throws Exception + */ + @ActionKey(value = Protocol.TAKE_HP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_CHECK_ROOM|WebInterceptor.V_GROUP_OWNER_OR_MGR_OR_PARTNER) + public final void takeHp() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int hp = reqData.getInt("hp"); + AccountBean acc = AccountCache.getAccount(session); + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + } + catch(Exception e) { + + } + if (tagId == 0) + { + tagId = acc.id; + } + ITObject resData = GroupService.takeHp(groupId, acc.id, tagId, hp); + this.sendResponse(0, resData); + } + + /** + * 盟主强行提取体力值 + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_TAKE_HP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void groupTakeHp() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(session); + GroupService.groupTakeHp(groupId, acc.id, tagId); + this.sendResponse(0, null); + } + + + + @ActionKey(value = Protocol.GET_BANK_HP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP/*|WebInterceptor.V_GROUP_PARTNER*/) + public final void getBankHp() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + AccountBean acc = AccountCache.getAccount(session); + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + } + catch(Exception e) { + + } + if (tagId == 0) + { + tagId = acc.id; + } + ITObject resData = GroupService.getBankInfo(groupId, acc.id, tagId); + this.sendResponse(0, resData); + } + + @ActionKey(value = Protocol.TAKE_BANK_HP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_CHECK_ROOM/*|WebInterceptor.V_GROUP_PARTNER*/) + public final void takeBankHp() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int hp = reqData.getInt("hp"); + AccountBean acc = AccountCache.getAccount(session); + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + } + catch(Exception e) { + + } + if (tagId == 0) + { + tagId = acc.id; + } + ITObject resData = GroupService.takeBankHp(groupId, acc.id, tagId, hp); + this.sendResponse(0, resData); + } + + @ActionKey(value = Protocol.SAVE_BANK_HP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_CHECK_ROOM/*|WebInterceptor.V_GROUP_PARTNER*/) + public final void saveBankHp() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int hp = reqData.getInt("hp"); + AccountBean acc = AccountCache.getAccount(session); + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + } + catch(Exception e) { + + } + if (tagId == 0) + { + tagId = acc.id; + } + ITObject resData = GroupService.saveBankHp(groupId, acc.id, tagId, hp); + this.sendResponse(0, resData); + } + + + /** + * 分配成员 + * @throws Exception + */ + /* + @ActionKey(value = Protocol.DISTRIBUTE_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR) + public final void distributeMember() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int parId = reqData.getInt("parId"); + int tagId = reqData.getInt("tagId"); + GroupService.distributeMember(groupId, parId, tagId); + this.sendResponse(0, null); + } + */ + + /** + * 获取合伙人管理列表 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_PARTNER_INFOS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getPartnerInfos() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + + int limit = 0; + int num = 0; + + + int simpleAll = reqData.getInt("simple_all"); + if(simpleAll == 0) { + limit = reqData.getInt("limit"); + num = reqData.getInt("num"); + } + + boolean diff = false; + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + if (tagId > 0) + { + diff = true; + } + } + catch(Exception e) { + + } + + AccountBean acc = AccountCache.getAccount(session); + if (tagId == 0) + { + tagId = acc.id; + } + + ITObject resData = GroupService.getPartnerInfos(groupId, acc.id, tagId, limit, num,simpleAll, diff); + sendResponse(0, resData); + } + + /** + * 获取合伙人管理列表 + * @throws Exception + */ + @ActionKey(value = Protocol.QUERY_PARTNER_INFOS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void queryPartnerInfos() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + + + int qid = 0; + String tagName = StringUtil.Empty; + try { + qid = reqData.getInt("qid"); + tagName = reqData.getUtfString("tagName"); + } + catch (Exception e) { + sendResponse(0, null); + return; + } + + + AccountBean acc = AccountCache.getAccount(session); + ITObject resData = GroupService.queryPartnerInfos(groupId, acc.id, qid, tagName); + sendResponse(0, resData); + } + + + /** + * 获取合伙人管理列表 + * @throws Exception + */ + /* + @ActionKey(value = Protocol.GET_PARTNER_MEMBERS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getPartnerMemebers() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int qid = reqData.getInt("qid"); + ITObject resData =GroupService.getPartnerMemebers(groupId, tagId, limit, num,qid); + sendResponse(0, resData); + } + */ + + /** + * 设置合伙人上下分开关 + * @throws Exception + */ + @ActionKey(value = Protocol.SET_MGR_PERMISSION, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void setMgrPermission() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + int permission = reqData.getInt("permission"); + GroupService.setMgrPermission(groupId,tagId, permission); + sendResponse(0, null); + } + + /** + * 获取禁止同桌列表 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_BAN_DESK_LIST, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR) + public final void getBanDeskList() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + int tagId = reqData.getInt("tagId"); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + int groupId = reqData.getInt("id"); + ITArray arr = GroupService.getBanDeskList(groupId,acc.id, tagId); + ITObject resData = TObject.newInstance(); + resData.putTArray("ban_list", arr); + sendResponse(0, resData); + } + + /** + * 设置禁止同桌 + * @throws Exception + */ + @ActionKey(value = Protocol.SET_BAN_DESK, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR) + public final void setBanDesk()throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + int tagId = reqData.getInt("tagId"); + if(acc.id == tagId) { + throw new WebException(ErrorCode._FAILED); + } + int groupId = reqData.getInt("id"); + ITArray ban_list = reqData.getTArray("ban_list"); + ITArray del_list = reqData.getTArray("del_list"); + + GroupService.setBanDesk(groupId, acc.id, tagId, ban_list,del_list); + sendResponse(0, null); + } + + /** + * 转移合伙人 + * @throws Exception + */ + @ActionKey(value = Protocol.MOVE_PARTNER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void movePartner()throws Exception { + ITObject reqData = this.getParams(); + int tagId = reqData.getInt("tagId"); + int parId = reqData.getInt("parId"); + int groupId = reqData.getInt("id"); + ITObject resData = GroupService.movePartner(groupId, parId, tagId); + sendResponse(0, resData); + } + + /** + * 获取邮件列表 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_MAIL_LIST, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void getMailList() throws Exception{ + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int uid = reqData.getInt("uid"); + AccountBean acc = AccountCache.getAccount(session); + if(acc.id != uid) { + throw new WebException(ErrorCode._FAILED); + } + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + ITArray arr = GroupService.getMailList(groupId, uid, limit, num); + ITObject resData = TObject.newInstance(); + resData.putTArray("mail_list", arr); + sendResponse(0, resData); + } + + /** + * 删除所有邮件 + * @throws Exception + */ + @ActionKey(value = Protocol.DEL_MAIL_ALL, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void delMailAll() throws Exception{ + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int uid = reqData.getInt("uid"); + AccountBean acc = AccountCache.getAccount(session); + if(acc.id != uid) { + throw new WebException(ErrorCode._FAILED); + } + GroupService.delMailAll(groupId, uid); + sendResponse(0, null); + } + + /** + * 设置阀值 + * */ + @ActionKey(value = Protocol.SET_AUTO_SCORE, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void setPartenerAutoScore() throws Exception{ + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("uid"); + int score = reqData.getInt("score"); + AccountBean acc = AccountCache.getAccount(session); + int result = GroupService.setPartenerAutoScore(groupId, acc.id, tagId, score); + if(result == 0) { + this.sendResponse(-1, null); + }else { + this.sendResponse(0, null); + } + } + + @ActionKey(value = Protocol.GET_XINGYUNHAO_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void getXingyunhaoInfo() throws Exception { + ITObject reqData = this.getParams(); + + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 0) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + + ITObject resData = GroupLogService.getXingYunHaoMember(groupId, limit, num, tt, beginTime, endTime); + sendResponse(0, resData); + } + + /** + * 获取所有玩法 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_PANTER_ALLPLAYS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void getPanterAllPlays() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int uid = reqData.getInt("uid"); + ITObject resData = TObject.newInstance(); + + GroupService.getAllPlays(groupId,uid,resData); + + this.sendResponse(0, resData);; + } + + /** + * 设置屏蔽玩法 + */ + @ActionKey(value = Protocol.SET_PANTER_BANPLAY, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void setPanterBanPlayid() throws Exception{ + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("groupid"); + int pid = reqData.getInt("pid"); + int ban = reqData.getInt("ban"); + int uid = reqData.getInt("uid"); + + ITObject resData = TObject.newInstance(); + + GroupService.setBanPlayid(groupId,pid,ban,uid,resData); + + this.sendResponse(0, resData); + } + +} \ No newline at end of file diff --git a/game_web/web_group_robot/src/main/java/com/group/controller/GroupLogController.java b/game_web/web_group_robot/src/main/java/com/group/controller/GroupLogController.java new file mode 100644 index 0000000..672a696 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/controller/GroupLogController.java @@ -0,0 +1,652 @@ +package com.group.controller; + +import com.data.bean.AccountBean; +import com.data.bean.GroupMemberBean; +import com.data.cache.AccountCache; +import com.data.cache.GroupCache; +import com.data.util.ErrorCode; +import com.data.util.Utility; +import com.group.Protocol; +import com.group.WebInterceptor; +import com.group.service.GroupLogService; +import com.taurus.core.entity.ITArray; +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TObject; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.routes.ActionKey; +import com.taurus.web.Controller; +import com.taurus.web.WebException; +import redis.clients.jedis.Jedis; + +import java.util.List; + +public class GroupLogController extends Controller{ + + /** + * 获取奖励日志 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_REWARD_LOG, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getRewardLog() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + int beginTime = reqData.getInt("beginTime"); + int endTime = reqData.getInt("endTime"); + int tagId = reqData.getInt("tagId"); + AccountBean acc = AccountCache.getAccount(session); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, acc.id); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && acc.id != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(acc.id)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10.close(); + } + + ITObject resData = GroupLogService.getRewardLog(groupId, tagId, limit, num, beginTime, endTime); + sendResponse(0, resData); + } + + /** + * 获取奖励统计 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_REWARD_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void getRewardLogCount() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int pid = reqData.getInt("pid"); + int beginTime = reqData.getInt("beginTime"); + int endTime = reqData.getInt("endTime"); + ITObject resData = GroupLogService.getRewardLogCount(groupId,pid, beginTime, endTime); + sendResponse(0, resData); + } + + + /** + * 获取体力值管理统计数据 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_HPLOG_MGR, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getHpLogMgr() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + AccountBean acc = AccountCache.getAccount(session); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + // 类型 type 1上分 2下分 3合伙人上分 4合伙人下分 + int type = reqData.getInt("type"); + int qid = reqData.getInt("qid"); + String tagName = reqData.getUtfString("tagName"); + ITObject resData = GroupLogService.getHpLogMgr(groupId, acc.id, limit, num, type, qid, tagName); + sendResponse(0, resData); + } + + /** + * 获取体力值管理统计数据 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_HPLOG_MGR_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR) + public final void getHpLogMgrCount() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + ITObject resData = GroupLogService.getHpLogMgrCount(groupId); + sendResponse(0, resData); + } + + /** + * 获取体力值管理员详细信息 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_HPLOG_MGR_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getHpLogMgrInfo() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + int groupId = reqData.getInt("id"); + int beginTime = reqData.getInt("beginTime"); + int endTime = reqData.getInt("endTime"); + //1 管理员 2合伙人 + int type = reqData.getInt("type"); + + ITArray arr = GroupLogService.getHpLogMgrInfo(groupId,acc.id,beginTime,endTime,type); + ITObject resData = TObject.newInstance(); + resData.putTArray("infos", arr); + sendResponse(0, resData); + } + + /** + * 获取玩家体力值详细 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_HPLOG_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getHpLogInfo() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int tagId = reqData.getInt("tagId"); + // 筛选 + int choose = reqData.getInt("choose"); + AccountBean acc = AccountCache.getAccount(session); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, acc.id); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && acc.id != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(acc.id)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10.close(); + } + + ITObject resData = GroupLogService.getHpLogInfo(groupId, tagId, limit, num, choose); + sendResponse(0, resData); + } + + /** + * 获取玩家体力值详细 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_HPLOG_DETAIL_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getHpLogDetailInfo() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int groupId = reqData.getInt("id"); + int tagId = reqData.getInt("tagId"); + String roomId = reqData.getUtfString("roomId"); + int time = reqData.getInt("time"); + AccountBean acc = AccountCache.getAccount(session); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, acc.id); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && acc.id != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(acc.id)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10.close(); + } + + ITObject resData = GroupLogService.getHpLogDetailInfo(groupId, tagId, roomId, time); + sendResponse(0, resData); + } + + + /** + * 获取抽水体力值详细 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_HPLOG_PUMP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR) + public final void getHpLogPumpInfo() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + int beginTime = reqData.getInt("beginTime"); + int endTime = reqData.getInt("endTime"); + + ITObject resData = GroupLogService.getHpLogPumpInfo(groupId, limit, num, beginTime, endTime); + sendResponse(0, resData); + } + + /** + * 获取玩法局数统计 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_MEMBER_RANK, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void getMemberRank() throws Exception { + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + + ITObject reqData = this.getParams(); + + int groupId = reqData.getInt("id"); + int pid = reqData.getInt("pid"); + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + int beginTime = reqData.getInt("beginTime"); + int endTime = reqData.getInt("endTime"); + + int type = 0; + if (reqData.containsKey("type")) + { + try { + type = reqData.getInt("type"); + } + catch (Exception e) + { + + } + } + ITObject resData = GroupLogService.getMemberRank(groupId, acc.id, pid, type, limit, num, beginTime, endTime); + sendResponse(0, resData); + } + + @ActionKey(value = Protocol.GROUP_GET_MEMBER_STAT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getMemberStat() throws Exception { + + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int qid = reqData.getInt("qid"); + int partnerId = reqData.getInt("partner_id"); + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 3) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + + ITObject resData = GroupLogService.getMemberStat(groupId,acc.id,qid,partnerId, limit, num, tt, beginTime, endTime); + sendResponse(0, resData); + } + + @ActionKey(value = Protocol.GROUP_GET_PARTNER_STAT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getPartnerStat() throws Exception { + + ITObject reqData = this.getParams(); + + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + + int groupId = reqData.getInt("id"); + + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 0) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + + ITObject resData = GroupLogService.getPartnerStat(groupId, acc.id,limit, num, tt, beginTime, endTime); + sendResponse(0, resData); + } + + @ActionKey(value = Protocol.GROUP_FIND_PARTNER_STAT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void findPartnerStat() throws Exception { + + ITObject reqData = this.getParams(); + + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + + int groupId = reqData.getInt("id"); + + int tagId = reqData.getInt("tagId"); + + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 0) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + + ITObject resData = GroupLogService.findPartnerStat(groupId, acc.id, tagId, limit, num, tt, beginTime, endTime); + sendResponse(0, resData); + } + + @ActionKey(value = Protocol.GROUP_GET_PARTNER_STAT_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getPartnerStatMember() throws Exception { + + ITObject reqData = this.getParams(); + + + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int uid = reqData.getInt("uid"); + int rootUid = reqData.getInt("root_uid"); + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 0) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + + ITObject resData = GroupLogService.getPartnerStatMember(groupId, uid, rootUid, limit, num, tt, beginTime, endTime); + sendResponse(0, resData); + } + + @ActionKey(value = Protocol.GROUP_FIND_PARTNER_STAT_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void findPartnerStatMember() throws Exception { + + ITObject reqData = this.getParams(); + + + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int uid = reqData.getInt("uid"); + int rootUid = reqData.getInt("root_uid"); + int tagId = reqData.getInt("tagId"); + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 0) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + + ITObject resData = GroupLogService.findPartnerStatMember(groupId, uid, rootUid, tagId, limit, num, tt, beginTime, endTime); + sendResponse(0, resData); + } + + @ActionKey(value = Protocol.GROUP_GET_DIRECT_STAT_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getDirectStatMember() throws Exception { + + ITObject reqData = this.getParams(); + + + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int uid = reqData.getInt("uid"); + int rootUid = reqData.getInt("root_uid"); + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 0) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + + ITObject resData = GroupLogService.getDirectStatMember(groupId, uid, rootUid, limit, num, tt, beginTime, endTime); + sendResponse(0, resData); + } + + + @ActionKey(value = Protocol.GROUP_GET_PARTNER_STAT_PLAY, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getPartnerStatPlay() throws Exception { + + ITObject reqData = this.getParams(); + + + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + int num = reqData.getInt("num"); + int uid = reqData.getInt("uid"); + int parent_id = reqData.getInt("parent_id"); + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 0) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + + ITObject resData = GroupLogService.getPartnerStatPlay(groupId, uid,parent_id,limit, num, tt, beginTime, endTime); + sendResponse(0, resData); + } + + + /** + * 获取消耗统计 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_COST_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getCostCount() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + int uid = AccountCache.getAccount(session).id; + int groupId = reqData.getInt("id"); + int beginTime = 0; + int endTime = 0; + try { + beginTime = reqData.getInt("beginTime"); + endTime = reqData.getInt("endTime"); + } + catch (Exception e) + { + + } + ITObject resData = TObject.newInstance(); + resData.putTArray("cosume_logs", GroupLogService.getCostCount(groupId, uid, beginTime, endTime)); + sendResponse(0, resData); + } + + /** + * 获取消耗统计 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_ROUND_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void getRoundCount() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int pid = reqData.getInt("pid"); + ITArray arr = GroupLogService.getRoundCount(groupId,pid); + ITObject resData = TObject.newInstance(); + resData.putTArray("rounds", arr); + sendResponse(0, resData); + } + + /** + * 获取消耗统计 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_HPCONSUME_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void getHpConsumeCount() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int tag = reqData.getInt("tagId"); + ITArray arr = GroupLogService.getHpConsumeCount(groupId,tag); + ITObject resData = TObject.newInstance(); + resData.putTArray("list", arr); + sendResponse(0, resData); + } + + /** + * 获取战绩列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_RECORDS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getRecords() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + + int uid = AccountCache.getAccount(session).id; + String platform = reqData.getString("platform"); + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + int qid = reqData.getInt("qid"); + int includeMembers = reqData.containsKey("includeMembers") ? reqData.getInt("includeMembers") : 0; + int tt = -1; + int beginTime = 0; + int endTime = 0; + if(reqData.containsKey("tt")) { + tt = reqData.getInt("tt"); + if(tt == 0) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + } + ITObject resData =GroupLogService.getRecords(platform, groupId, limit, num,qid,uid,includeMembers,tt,beginTime,endTime); + sendResponse(0, resData); + } + + /** + * 获取战绩列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_GET_PERSON_RECORDS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void getPersonRecords() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + + int uid = AccountCache.getAccount(session).id; + String platform = reqData.getString("platform"); + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + int qid = reqData.getInt("qid"); + int tt = reqData.getInt("tt"); + int beginTime = 0; + int endTime = 0; + if(tt == 3) { + beginTime = reqData.getInt("bt"); + endTime = reqData.getInt("et"); + } + ITObject resData =GroupLogService.getPersonRecords(platform, groupId, tt, beginTime, endTime, limit, num, qid, uid); + sendResponse(0, resData); + } + + + /** + * 根据房间ID查询战绩 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_FIND_RECORD_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void findRecordByRoom() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + + int uid = AccountCache.getAccount(session).id; + String platform = reqData.getString("platform"); + int groupId = reqData.getInt("id"); + String roomid = reqData.getString("roomid"); + ITArray data = GroupLogService.findRecordByRoom(platform, groupId, roomid,uid); + ITObject resData = TObject.newInstance(); + resData.putBoolean("is_rec", data!=null && data.size() != 0); + if(data != null) { + resData.putTArray("rec", data); + } + sendResponse(0, resData); + } + + /** + * 获取提取体力值详细 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_TAKE_LOG, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER_OR_MGR_OR_PARTNER) + public final void getHpLogTakeInfo() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + int beginTime = reqData.getInt("beginTime"); + int endTime = reqData.getInt("endTime"); + AccountBean acc = AccountCache.getAccount(session); + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + } + catch(Exception e) { + + } + if (tagId == 0) + { + tagId = acc.id; + } + ITObject resData = GroupLogService.getHpLogTakeInfo(groupId, acc.id, tagId, limit, num, beginTime, endTime); + sendResponse(0, resData); + } + + /** + * 获取提取体力值详细 + * @throws Exception + */ + @ActionKey(value = Protocol.GET_BANK_LOG, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP/*|WebInterceptor.V_GROUP_PARTNER*/) + public final void getHpLogTakeBankInfo() throws Exception { + ITObject reqData = this.getParams(); + String session = this.getSession(); + + int groupId = reqData.getInt("id"); + int limit = reqData.getInt("limit"); + // 数量 + int num = reqData.getInt("num"); + int beginTime = reqData.getInt("beginTime"); + int endTime = reqData.getInt("endTime"); + AccountBean acc = AccountCache.getAccount(session); + int tagId = 0; + try { + tagId = reqData.getInt("tagId"); + } + catch(Exception e) { + + } + if (tagId == 0) + { + tagId = acc.id; + } + ITObject resData = GroupLogService.getHpLogTakeBankInfo(groupId, acc.id, tagId, limit, num, beginTime, endTime); + sendResponse(0, resData); + } + + /** + * 获取体力值统计信息 + */ + @ActionKey(value = Protocol.GET_HP_COUNT_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR) + public final void getHpCountInfo() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + ITObject resData =GroupLogService.getHpCountInfo(groupId); + sendResponse(0, resData); + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/controller/GroupRoomController.java b/game_web/web_group_robot/src/main/java/com/group/controller/GroupRoomController.java new file mode 100644 index 0000000..d539b70 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/controller/GroupRoomController.java @@ -0,0 +1,66 @@ +package com.group.controller; + +import com.group.Protocol; +import com.group.WebInterceptor; +import com.group.service.GroupRoomService; +import com.taurus.core.entity.ITObject; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.routes.ActionKey; +import com.taurus.web.Controller; +import com.taurus.web.WebException; +import jdk.nashorn.internal.objects.Global; +import redis.clients.jedis.Jedis; + +public class GroupRoomController extends Controller{ + + /** + * 获取玩家列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_MATCH_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void matchRoom() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + int pid = reqData.getInt("pid"); + String platform = reqData.getString("platform"); + boolean is_null = reqData.containsKey("is_null")? reqData.getBoolean("is_null"):false; + + logger.info("matchRoom() ==> pid = "+pid); + + ITObject resData = GroupRoomService.matchRoom(groupId, pid, session,platform,is_null); + this.sendResponse(0, resData); + } + + /** + * 获取玩家列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_JOIN_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) + public final void joinRoom() throws Exception { + String session = this.getSession(); + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + String roomid = reqData.getString("room_id"); + String platform = reqData.getString("platform"); + + ITObject resData = GroupRoomService.joinRoom(groupId, roomid, session,platform); + this.sendResponse(0, resData); + } + + /** + * 获取玩家列表 + * + * @throws Exception + */ + @ActionKey(value = Protocol.GROUP_DEL_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) + public final void delRoom() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + String roomId = reqData.getString("roomId"); + ITObject obj = GroupRoomService.delRoom(groupId, roomId); + this.sendResponse(0, obj); + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/job/UpdatePlayRoomJob.java b/game_web/web_group_robot/src/main/java/com/group/job/UpdatePlayRoomJob.java new file mode 100644 index 0000000..6165fec --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/job/UpdatePlayRoomJob.java @@ -0,0 +1,871 @@ +package com.group.job; + +import com.data.bean.*; +import com.data.cache.*; +import com.data.util.ErrorCode; +import com.data.util.EventType; +import com.data.util.Utility; +import com.google.protobuf.ByteString; +import com.group.service.GroupPublisherService; +import com.taurus.core.entity.ITArray; +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TArray; +import com.taurus.core.entity.TObject; +import com.taurus.core.plugin.database.DataBase; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.plugin.redis.RedisLock; +import com.taurus.core.util.*; +import com.taurus.web.WebException; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobKey; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.ScanParams; +import redis.clients.jedis.ScanResult; +import com.taurus.core.util.StringUtil; +import java.io.InputStream; +import java.net.URL; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.*; + +public class UpdatePlayRoomJob implements Job{ + + private Logger logger = Logger.getLogger(UpdatePlayRoomJob.class); + + public static final String CHANNEL_NAME = "mgr_group"; + + private static final String CMD_DEL_ROOM="del_room"; + private static final String CMD_UPDATE_ROOM="update_room"; + + public UpdatePlayRoomJob() { + + } + + private void createPlayRoom(int groupId) + { + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + if (pids.size() == 0) { + return; + } + + GroupBean gb = GroupCache.getGroup(groupId); + if (gb == null) + { + return; + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + + for (String str : pids) { + int pid = Integer.parseInt(str); + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb == null) + continue; + + if (gpb.robot_room <= 0) + continue; + + try { + Set rooms = null; + Jedis jedis = Redis.use("group1_db11").getJedis(); + try { + int min_value = pid * 10000; + int max_value = pid * 10000 + 9999; + String grooms_key = GroupCache.genRoomsKey(groupId); + rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value); + int qfroomnum = 0; + for (String room : rooms) { + List room_list = Redis.use("group1_db0").hmget(room, "fake", "status", "round", "id", "times", "players"); + + String fake_json = room_list.get(0); + if (fake_json == null) { + continue; + } + qfroomnum++; + + String status = room_list.get(1); + if (StringUtil.isEmpty(status)) { + continue; + } + + String strRound = room_list.get(2); + if (StringUtil.isEmpty(strRound)) { + continue; + } + int round = Integer.parseInt(strRound); + + String roomId = room_list.get(3); + if (StringUtil.isEmpty(roomId)) { + continue; + } + + if (round == 0) { + roomUpdateEvent(room, groupId, roomId); + round++; + updateRound(room, groupId, roomId, round); + } + } + + if (qfroomnum >= gpb.robot_room || rooms.size() >= 20) + { + continue; + } + + String exist = Redis.use("group1_db1").get("robot_exist"); + if (StringUtil.isNotEmpty(exist)) + { + createGroupRoom(groupId, pid); + + } + }finally { + jedis.close(); + } + } + catch (Exception e) + { + + } + } + } finally { + jedis10.close(); + } + } + + private void updateBlackSpecial(int groupId) + { + Map mapString = Redis.use("group1_db1").hgetAll("gods_special"); + if (mapString == null) + return; + + for (Map.Entry entry : mapString.entrySet()) { + String strPlayerId = entry.getKey(); + String strPlayerValue = entry.getValue(); + int playerId = Integer.parseInt(strPlayerId); + GroupMemberBean gmb = GroupCache.getMember(groupId, playerId); + if (gmb == null) + continue; + if (Redis.use("group1_db1").sismember("gods", strPlayerId) == false) + { + String gm_key = GroupMemberCache.genKey(groupId, playerId); + String black_key = Redis.use("group1_db10").hget(gm_key, "group_black_key"); + if (StringUtil.isEmpty(black_key)) + { + return; + } + String strblack = Redis.use("group1_db10").hget(black_key, "black"); + int black = 0; + if (StringUtil.isNotEmpty(strblack)) + { + try { + black = Integer.parseInt(strblack); + if (black == 0) + { + logger.info("sadd gods " + strPlayerId); + Redis.use("group1_db1").sadd("gods", strPlayerId); + String StrWhiteValue = Redis.use("group1_db1").hget("gods_value", strPlayerId); + if (StringUtil.isEmpty(StrWhiteValue)) + { + Redis.use("group1_db1").hset("gods_value", strPlayerId, strPlayerValue); + } + } + } + catch (NumberFormatException e) { + black = 0; + } + } + } + } + } + + private void updatePlayRoom(int groupId) { + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + if (pids.size() == 0) { + return; + } + + GroupBean gb = GroupCache.getGroup(groupId); + if (gb == null) + { + return; + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + + for (String str : pids) { + int pid = Integer.parseInt(str); + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb == null) + continue; + + if (gpb.robot_room <= 0) + continue; + + try { + Set rooms = null; + Jedis jedis = Redis.use("group1_db11").getJedis(); + try { + int min_value = pid * 10000; + int max_value = pid * 10000 + 9999; + String grooms_key = GroupCache.genRoomsKey(groupId); + rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value); + long time = System.currentTimeMillis() / 1000; + for (String room : rooms) { + List room_list = Redis.use("group1_db0").hmget(room, "fake", "status", "round", "id", "times", "players", "create_time", "fake_existTime"); + + String roomId = room_list.get(3); + String createtime = room_list.get(6); + + + /*if (StringUtil.isEmpty(room_list.get(5))&&Integer.parseInt((System.currentTimeMillis() + "").substring(0, 10))>Integer.parseInt(createtime)+30) { + GroupPublisherService.delRoomEvt(groupId, roomId); + jedis.zrem(grooms_key, room); + Redis.use().hset(room, "status", 3 + ""); + Redis.use().hincrBy(room, "cache_ver", 1); + Redis.use().expire(room, 20); + logger.error("del 空 room:" + roomId + " player:"+room_list.get(5) + " fake_json:"); + continue; + }*/ + ITArray players = TArray.newFromJsonData(room_list.get(5)); + + /*if(players.size()==0) { + //清理空桌 + GroupPublisherService.delRoomEvt(groupId, roomId); + jedis.zrem(grooms_key, room); + Redis.use().hset(room, "status", 3 + ""); + Redis.use().hincrBy(room, "cache_ver", 1); + Redis.use().expire(room, 20); + logger.error("del 空 room:" + roomId + " player:"+room_list.get(5) + " fake_json:"); + continue; + }*/ + + String fake_json = room_list.get(0); + if (fake_json == null) + { + continue; + } + + String status = room_list.get(1); + if(StringUtil.isEmpty(status)) { + continue; + } + + String strRound = room_list.get(2); + if(StringUtil.isEmpty(strRound)) { + continue; + } + int round = Integer.parseInt(strRound); + + + if(StringUtil.isEmpty(roomId)) { + continue; + } + + String maxStrRound = (room_list.get(4)); + if(StringUtil.isEmpty(maxStrRound)) { + continue; + } + + int maxRound = Integer.parseInt(maxStrRound); + if (round == 0) { + roomUpdateEvent(room, groupId, roomId); + round++; + updateRound(room, groupId, roomId, round); + continue; + } + + Long createTime = Long.parseLong(room_list.get(6)); + Long useTime = time - createTime; + + String str_fake_existTime = room_list.get(7); + int fake_existTime = 30; + if (!StringUtil.isEmpty(str_fake_existTime)) + { + fake_existTime = Integer.parseInt(str_fake_existTime); + } + + if (fake_existTime * round >= useTime) + { + continue; + } + + boolean exitGame = false; + + if (round >= 1) + { + int fake_hp = (int)(Math.random() * 100000); + int rate = (int)(Math.random() * 100); + for (int i = 0; i < players.size(); i++) { + int player_id = players.getInt(i); + if (i % 2 == 0) + { + if (rate < 50) + { + Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", fake_hp); + } + else { + Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", -fake_hp); + } + } + else { + if (rate < 50) + { + Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", -fake_hp); + } + else { + Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", fake_hp); + } + } + String fakeHp = Redis.use("group1_db10").hget("fake_"+player_id, "fake_hp"); + if (!StringUtil.isEmpty(fakeHp)) + { + long curFakeHp = Long.parseLong(fakeHp); + if (curFakeHp <= 1000) + { + curFakeHp = (long)(Math.random() * 10000000); + Redis.use("group1_db10").hset("fake_"+player_id, "fake_hp", Long.toString(curFakeHp)); + exitGame = true; + break; + } + } + } + } + + round++; + + if (round > maxRound || exitGame) + { + for (int i = 0; i < players.size(); i++) { + int player_id = players.getInt(i); + Redis.use("group1_db1").srem("used_robot", Integer.toString(player_id)); + Redis.use("group1_db1").sadd("free_robot", Integer.toString(player_id)); + } + GroupPublisherService.delRoomEvt(groupId, roomId); + jedis.zrem(grooms_key, room); + Redis.use().hset(room, "status", 3 + ""); + Redis.use().hincrBy(room, "cache_ver", 1); + Redis.use().expire(room, 20); + // logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json); + continue; + } + updateRound(room, groupId, roomId, round); + } + }finally { + jedis.close(); + } + } + catch (Exception e) + { + + } + } + } finally { + jedis10.close(); + } + } + + /**解散时间*/ + private static final String[] DISMISS_TIME = {"30","60","90","180"}; + /**踢出时间*/ + private static final String[] KICK_TIME = {"30","60","120","180"}; + + private String createGroupRoom(int groupId, int pid) throws Exception { + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb==null) { + throw new WebException(ErrorCode.GROUP_PLAY_EXIST); + } + + int gameId = gpb.gameId; + GameBean gb = GameCache.getGame(gameId); + + String grooms_key = GroupCache.genRoomsKey(groupId); + GroupBean group = GroupCache.getGroup(groupId); + ITObject configData = TObject.newFromJsonData(gpb.config); + int maxPlayers = gpb.maxPlayers; + + int opt = configData.getInt("opt"); + String owner_session = AccountCache.genKey(group.owner); + + int dissolve_opt = group.dissolve_opt; + int kick_opt = group.kick_opt; + + String newRoomId = Redis.use("group1_db1").rpop("free_room"); + Redis.use("group1_db1").lpush("free_room", newRoomId); + String room_key = "room:" + newRoomId; + + long time = System.currentTimeMillis() / 1000; + Map roomMap = new HashMap(); + /** + * 玩家列表Seat映射 + */ + + roomMap.put("id", newRoomId); + roomMap.put("owner", owner_session); + roomMap.put("AA", "0"); + roomMap.put("agent", "1"); + roomMap.put("group", groupId+""); + roomMap.put("gpid", pid+""); + roomMap.put("payer", group.owner+""); + roomMap.put("maxPlayers", maxPlayers + ""); + roomMap.put("times", gb.opt.get(opt)+""); + roomMap.put("opt", opt + ""); + roomMap.put("status", "0"); + roomMap.put("fake", "1"); + int fake_existTime = (int)((Math.random() + 0.5) * 40); + roomMap.put("fake_existTime", fake_existTime + ""); + + roomMap.put("hpOnOff", gpb.hpOnOff+""); + roomMap.put("rewardType", gpb.rewardType+""); + roomMap.put("rewardValueType", gpb.rewardValueType+""); + roomMap.put("xipai_rewardType", gpb.xipai_rewardType+""); + roomMap.put("xipai_rewardValueType", gpb.xipai_rewardValueType+""); + roomMap.put("dismiss_time", DISMISS_TIME[dissolve_opt-1]); + roomMap.put("kick_time", KICK_TIME[kick_opt-1]); + roomMap.put("hp_times",gpb.hp_times+""); + if(gpb.hpOnOff == 1) { + ITObject hpObj = TObject.newFromJsonData(gpb.hpConfig); + if (hpObj.getInt("limitInRoom") != null) { + roomMap.put("limitInRoom", hpObj.getInt("limitInRoom") + ""); + } + configData.putTObject("hpData", hpObj); + } + + configData.del("opt"); + configData.del("AA"); + roomMap.put("options", configData.toJson()); + roomMap.put("game", gameId + ""); + roomMap.put("open", "1"); + roomMap.put("round", "0"); + roomMap.put("create_time", time + ""); + roomMap.put("cache_ver", "1"); + + String exist = Redis.use("group1_db1").get("robot_exist"); + if (StringUtil.isNotEmpty(exist)) + { + jedis0.hmset(room_key, roomMap); + + /** + * pid open status 剩余空位 + * 11 1 1 00 + */ + Redis.use("group1_db11").zadd(grooms_key, pid*10000+1101, room_key); + GroupPublisherService.addRoomEvt(groupId, newRoomId); + updateRedisMap(groupId, newRoomId, room_key, roomMap, maxPlayers); + return room_key; + } + return null; + } finally { + jedis0.close(); + } + } + + /** + * 更新redis回合 + */ + private void updateRound(String roomKey, int groupId,String roomid, int round) { + Redis.use().hset(roomKey, "round", Integer.toString(round)); + roomUpdateEvent(roomKey, groupId, roomid); + } + + /** + * list to TArray + * @param list + * @return + */ + public static final ITArray toTArray(List list) { + ITArray result = new TArray(); + for (Integer card : list) { + result.addInt(card); + } + return result; + } + + + /** + * 更新房间redis数据 + */ + public void updateRedisMap(int groupId, String roomId, String roomKey, Map redis_room_map, int maxPlayers) { + Map playerMapBySeat = new HashMap(); + for(int i = 1; i <= maxPlayers; i++) + { + playerMapBySeat.put(i, getRobot(maxPlayers)); + } + + Iterator> it = playerMapBySeat.entrySet().iterator(); + List seat_list = new ArrayList<>(); + List player_list = new ArrayList<>(); + while (it.hasNext()) { + Map.Entry entry = (Map.Entry) it.next(); + seat_list.add(entry.getKey()); + player_list.add(entry.getValue()); + } + redis_room_map.put("players", toTArray(player_list).toJson()); + redis_room_map.put("seats", toTArray(seat_list).toJson()); + Redis.use().hmset(roomKey, redis_room_map); + updateRound(roomKey, groupId, roomId, 0); + } + + /** + * 玩家加入房间刷新总服圈子缓存 + */ + public void roomUpdateEvent(String roomKey, int groupId,String roomid) { + Redis.use("group1_db0").hincrBy(roomKey, "cache_ver", 1); + updateRoomEvt(groupId, roomid); + } + + + /** + * 更新房间事件 + * @param groupId + * @param roomid + */ + public static void updateRoomEvt(int groupId,String roomid) { + if(groupId == 0)return; + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putUtfString("roomid", roomid); + data.putUtfString("cmd", CMD_UPDATE_ROOM); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + @Override + public void execute(JobExecutionContext context) { + + JobKey jobKey = context.getJobDetail().getKey(); + if(jobKey.getName().equals("update_play_room") ) { + //logger.info("执行成功" + jobKey.getName()); + Set robotGroup = Redis.use("group1_db1").smembers("robot_group"); + for(String strGroupId:robotGroup){ + updatePlayRoom(Integer.parseInt(strGroupId)); + updateBlackSpecial(Integer.parseInt(strGroupId)); + } + } + else if(jobKey.getName().equals("create_play_room") ) { + //logger.info("执行成功" + jobKey.getName()); + Set robotGroup = Redis.use("group1_db1").smembers("robot_group"); + for(String strGroupId:robotGroup){ + createPlayRoom(Integer.parseInt(strGroupId)); + } + } + } + + public int getRobot(int maxPlayers) + { + long freeRobotNum = Redis.use("group1_db1").scard("free_robot"); + if (freeRobotNum < maxPlayers) + { + long useRobotNum = Redis.use("group1_db1").scard("used_robot"); + if (useRobotNum >= 100) + { + logger.warn("robot not enough, cur used robot " + useRobotNum); + } + try { + createRobot(); + freeRobotNum = Redis.use("group1_db1").scard("free_robot"); + if (freeRobotNum < maxPlayers) + { + logger.error("create robot failed............"); + return 0; + } + + } + catch (Exception e) + { + logger.error(e); + } + } + + try { + while(freeRobotNum > 0) + { + String strRobotId = Redis.use("group1_db1").spop("free_robot"); + freeRobotNum = Redis.use("group1_db1").scard("free_robot"); + if (StringUtil.isEmpty(strRobotId)) + { + createRobot(); + continue; + } + else { + AccountBean acc_bean = AccountCache.getAccount(Integer.parseInt(strRobotId)); + if (acc_bean != null) + { + URL url = null; + try { + url = new URL(acc_bean.portrait); + InputStream in = url.openStream(); + String jsonStr = inputStreamToString(in); + String md5 = MD5.getInstance().getHash(jsonStr); + if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") ) + { + //logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5); + url = null; + } + //logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5); + } catch (Exception e1) { + url = null; + } + if (url == null) + { + logger.error("robot head error, this robot:"+ strRobotId + " will not use"); + continue; + } + } + else { + continue; + } + } + + Redis.use("group1_db1").sadd("used_robot", strRobotId); + int robotId = Integer.parseInt(strRobotId); + String fakeHp = Redis.use("group1_db10").hget("fake_"+strRobotId, "fake_hp"); + if (StringUtil.isEmpty(fakeHp)) + { + int fake_hp = (int)(Math.random() * 10000000); + Redis.use("group1_db10").hset("fake_"+strRobotId, "fake_hp", Integer.toString(fake_hp)); + } + return robotId; + } + } + catch (Exception e) + { + logger.error(e); + } + return 0; + } + + /** + * 登录 + * @throws Exception + */ + public final void createRobot() throws Exception { + int num = 100; + int mng = 9999; + + String listSql = "select * from old_account"; + ITArray resultArray = DataBase.use().executeQueryByTArray(listSql); + ArrayList nameList = new ArrayList<>(); + ArrayList headList = new ArrayList<>(); + for(int i = 0; i < resultArray.size(); i++) + { + ITObject userData = resultArray.getTObject(i); + String nick = userData.getUtfString("nick"); + nameList.add(nick); + String head = userData.getUtfString("portrait"); + headList.add(head); + } + + Math.random(); + Collections.shuffle(nameList); + Collections.shuffle(headList); + + for(int i = 0; i < num; i++) + { + String sql = ""; + int accountid = create_register(mng, "xx123456xx", nameList, headList); + AccountBean acc_bean = AccountCache.getAccount(accountid); + if (acc_bean == null) + { + sql = String.format("SELECT * FROM account WHERE id ='%d'", + accountid); + + ITArray resultArray2 = DataBase.use().executeQueryByTArray(sql); + if(resultArray2.size() ==0) { + throw new WebException(ErrorCode._FAILED); + } + + ITObject userData = resultArray2.getTObject(0); + UpdateUserData(userData, accountid); + + acc_bean = AccountCache.getAccount(accountid); + } + + Redis.use("group1_db1").sadd("free_robot", Integer.toString(acc_bean.id)); + int fake_hp = (int)(Math.random() * 10000000); + Redis.use("group1_db10").hset("fake_"+acc_bean.id, "fake_hp", Integer.toString(fake_hp)); + } + } + + /** + * + * @return + * @throws Exception + */ + private final int UpdateUserData(ITObject reqData,long id) throws Exception { + ITObject userData = TObject.newInstance(); + userData.putInt("id", (int)id); + + userData.putUtfString("acc", reqData.getUtfString("acc")); + userData.putUtfString("portrait", reqData.getUtfString("portrait")); + userData.putUtfString("nick", reqData.getUtfString("nick")); + int sex = reqData.getInt("sex"); + if(sex == 0) { + sex = 1; + reqData.putInt("sex", sex); + } + userData.putInt("sex", sex); + + userData.putInt("mng", 0); + userData.putInt("type", 0); + if(reqData.containsKey("diamo")) { + userData.putInt("diamo", reqData.getInt("diamo")); + } + + userData.putInt("invitation", 1); + updateSession(userData, (int) id); + return (int)id; + } + + + private static String updateSession(ITObject userData, int id) { + String session = AccountCache.genKey(id); + Map map = new HashMap(); + Utils.objectToMap(userData, map); + + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + jedis0.hmset(session, map); + BaseCache.updateCacheVer(jedis0, session); + }finally { + jedis0.close(); + } + + return session; + } + + + /** + * + * @description: 将输入流转换成字符串 + * @author: Jeff + * @date: 2019年12月15日 + * @param inputStream 输入流 + * @return + */ + private static String inputStreamToString(InputStream inputStream) { + StringBuffer buffer = new StringBuffer(); + InputStreamReader inputStreamReader; + try { + inputStreamReader = new InputStreamReader(inputStream, "utf-8"); + BufferedReader bufferedReader = new BufferedReader(inputStreamReader); + String str = null; + while ((str = bufferedReader.readLine()) != null) { + buffer.append(str); + } + // 释放资源 + bufferedReader.close(); + inputStreamReader.close(); + inputStream.close(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return buffer.toString(); + } + + private final int create_register(int mng, String password, ArrayList nickList, ArrayList headList) throws Exception { + int count = 0; + long id = 0; + ArrayList list = new ArrayList<>(); + for(int i = 0; i < 10; i++) + { + String strId = Redis.use("group1_db1").rpop("free_account"); + if (StringUtil.isEmpty(strId)) + { + break; + } + list.add(strId); + } + //logger.info("free_account:"+list.toString()); + + Collections.shuffle(list); + + do { + id = Long.parseLong(list.remove(0)); + String sql = "SELECT id FROM account WHERE id =" + id; + ITArray resultArray = DataBase.use().executeQueryByTArray(sql); + if (resultArray.size() == 0) + { + break; + } + }while(count++ <= 10); + + for(int i = 0; i < list.size(); i++) + { + Redis.use("group1_db1").lpush("free_account", list.get(i)); + } + + if (id == 0) + { + throw new WebException(ErrorCode._FAILED); + } + + ITObject userData = TObject.newInstance(); + userData.putInt("id", (int)id); + + userData.putUtfString("acc", "" + id); + userData.putUtfString("portrait", ""); + while (headList.size() > 0) + { + String head = null; + try { + head = headList.remove(0); + URL url = new URL(head); + InputStream in = url.openStream(); + String jsonStr = inputStreamToString(in); + String md5 = MD5.getInstance().getHash(jsonStr); + logger.info("robot:" + id + " head:" + head + " md5:" + md5); + if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") ) + { + head = null; + } + } catch (Exception e1) { + head = null; + } + if (head != null) + { + userData.putUtfString("portrait", head); //头像 + break; + } + } + + String nick = ""; + if (nickList.size() > 0) + { + nick = nickList.remove(0); + } + nick = nick.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5]", " "); + userData.putUtfString("nick", nick); + int sex = 1; + if(sex == 0) { + sex = 1; + } + userData.putInt("sex", sex); + userData.putInt("diamo", 0); + userData.putInt("mng", 0); + userData.putInt("regTime", mng); + userData.putInt("type", 0); + userData.putUtfString("password", Utils.getMD5Hash(password)); + long reg_time = System.currentTimeMillis() / 1000; + userData.putLong("reg_time", reg_time); + logger.info("create robot account:"+userData.toJson()+" password:" + password); + int result = DataBase.use().insert("account", userData); + if (result == -1) { + throw new WebException(ErrorCode._FAILED); + } + userData.putInt("invitation", 1); + String session = updateSession(userData, (int) id); + return (int)id; + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/job/UpdateRobotRoomJob.java b/game_web/web_group_robot/src/main/java/com/group/job/UpdateRobotRoomJob.java new file mode 100644 index 0000000..69f853c --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/job/UpdateRobotRoomJob.java @@ -0,0 +1,756 @@ +package com.group.job; + +import com.data.bean.*; +import com.data.cache.*; +import com.data.util.ErrorCode; +import com.group.service.GroupPublisherService; +import com.taurus.core.entity.ITArray; +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TArray; +import com.taurus.core.entity.TObject; +import com.taurus.core.plugin.database.DataBase; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.util.Logger; +import com.taurus.core.util.MD5; +import com.taurus.core.util.StringUtil; +import com.taurus.core.util.Utils; +import com.taurus.web.WebException; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobKey; +import org.slf4j.helpers.Util; +import redis.clients.jedis.Jedis; + +import java.io.*; +import java.net.URL; +import java.util.*; +import java.util.concurrent.CompletableFuture; + +import static com.group.service.GroupRoomService._getSvr; + +public class UpdateRobotRoomJob implements Job{ + + private Logger logger = Logger.getLogger(UpdateRobotRoomJob.class); + + public static final String CHANNEL_NAME = "mgr_group"; + + private static final String CMD_DEL_ROOM="del_room"; + private static final String CMD_UPDATE_ROOM="update_room"; + + public UpdateRobotRoomJob() { + + } + + + /**解散时间*/ + private static final String[] DISMISS_TIME = {"30","60","90","180"}; + /**踢出时间*/ + private static final String[] KICK_TIME = {"30","60","120","180"}; + + + + /** + * 更新redis回合 + */ + private void updateRound(String roomKey, int groupId,String roomid, int round) { + Redis.use().hset(roomKey, "round", Integer.toString(round)); + roomUpdateEvent(roomKey, groupId, roomid); + } + + /** + * list to TArray + * @param list + * @return + */ + public static final ITArray toTArray(List list) { + ITArray result = new TArray(); + for (Integer card : list) { + result.addInt(card); + } + return result; + } + + + /** + * 更新房间redis数据 + */ + public void updateRedisMap(int groupId, String roomId, String roomKey, Map redis_room_map, int maxPlayers) { + Map playerMapBySeat = new HashMap(); + for(int i = 1; i <= maxPlayers; i++) + { + playerMapBySeat.put(i, getRobot(maxPlayers)); + } + + Iterator> it = playerMapBySeat.entrySet().iterator(); + List seat_list = new ArrayList<>(); + List player_list = new ArrayList<>(); + while (it.hasNext()) { + Map.Entry entry = (Map.Entry) it.next(); + seat_list.add(entry.getKey()); + player_list.add(entry.getValue()); + } + redis_room_map.put("players", toTArray(player_list).toJson()); + redis_room_map.put("seats", toTArray(seat_list).toJson()); + Redis.use().hmset(roomKey, redis_room_map); + updateRound(roomKey, groupId, roomId, 0); + } + + /** + * 玩家加入房间刷新总服圈子缓存 + */ + public void roomUpdateEvent(String roomKey, int groupId,String roomid) { + Redis.use("group1_db0").hincrBy(roomKey, "cache_ver", 1); + updateRoomEvt(groupId, roomid); + } + + + /** + * 更新房间事件 + * @param groupId + * @param roomid + */ + public static void updateRoomEvt(int groupId,String roomid) { + if(groupId == 0)return; + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putUtfString("roomid", roomid); + data.putUtfString("cmd", CMD_UPDATE_ROOM); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + @Override + public void execute(JobExecutionContext context) { + + JobKey jobKey = context.getJobDetail().getKey(); + if(jobKey.getName().equals("update_robot_room") ) { + updateRobotRoom(); + }else if(jobKey.getName().equals("create_robot_room") ) { + createRobotRoom(); + } + } + + public void updateRobotRoom(){ + + Jedis js2 = Redis.use("group1_db2").getJedis(); + Jedis js0 = Redis.use("group1_db0").getJedis(); + Jedis js11 = Redis.use("group1_db11").getJedis(); + String wokelock = "wokelock"; + try{ + int groupId = 426149; + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 9, 66); + + if (pids.size() == 0) { + return; + } + GroupBean gb = GroupCache.getGroup(groupId); + if (gb == null) + { + return; + } + for (String str : pids) { + int pid = Integer.parseInt(str); + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + + + //获取所有房间 + + //Set rooms = js11.zrevrangeByScore("g{426149}:rooms", min_value, max_value); + String allrobotkeys = "{robot426149}"; + int min_value = pid * 10000; + int max_value = pid * 10000 + 9999; + String grooms_key = GroupCache.genRoomsKey(groupId); + Set rooms = js11.zrevrangeByScore(grooms_key, max_value, min_value); + long sttime = System.currentTimeMillis() / 1000; + for (String room : rooms) { + List room_list = js0.hmget(room, "robot", "status", "create_time", "id", "players","game"); + String robot = room_list.get(0); + if (robot == null) { + continue; + } + ITArray players = TArray.newFromJsonData(room_list.get(4)); + if (players.size() == 2) { + //同步状态 + //判断players是否有在机器人中 + + continue; + } + + String roomtime = room_list.get(2); + if (roomtime == null) { + continue; + } + String gameid = room_list.get(5); + if (gameid == null) { + continue; + } + + String roomId = room_list.get(3); + int time = Integer.parseInt(roomtime); + if (time+20 < sttime) { + if(players.size()>0){ + //判断是否存在 + String s = js2.get(wokelock+players.get(0)); + if(StringUtil.isNotEmpty(s)){ + js2.set(wokelock+players.get(0),1+""); + js2.expire(wokelock+players.get(0),20); + } + } + + //解散房间 + GroupPublisherService.delRoomEvt(groupId, roomId); + js11.zrem(grooms_key, room); + Redis.use().hset(room, "status", 3 + ""); + Redis.use().hincrBy(room, "cache_ver", 1); + Redis.use().expire(room, 20); + // logger.error("del 空 robot room:" + roomId + " player:"+room_list.get(4) + " fake_json:"); + continue; + } + + } + } + + }catch (Exception e){ + e.printStackTrace(); + }finally { + js0.close(); + js2.close(); + js11.close(); + } + } + + public void createRobotRoom() { + //1、获取对应的机器人id + Jedis js2 = Redis.use("group1_db2").getJedis(); + Jedis js11 = Redis.use("group1_db11").getJedis(); + String wokelock = "wokelock"; + try{ + int robotid = 0; + String allrobotkeys = "{robot426149}"; + int groupid = 426149; + //获取玩法列表 + Set pids = js11.keys("g{426149}:play:*"); + List okpids = new ArrayList<>(); + for (String pid : pids) { + String gameId = js11.hget(pid,"gameId"); + if(Integer.parseInt(gameId) == 10){ + String rpid = js11.hget(pid,"id"); + okpids.add(Integer.parseInt(rpid)); + + } + if(Integer.parseInt(gameId) == 22){ + String rpid = js11.hget(pid,"id"); + okpids.add(Integer.parseInt(rpid)); + } + /*if(Integer.parseInt(gameId) == 66){ + //if(Integer.parseInt(pid)==52||Integer.parseInt(pid)==26){ + String rpid = js11.hget(pid,"id"); + okpids.add(Integer.parseInt(rpid)); + //} + + }*/ + } + //随机生产 + int pidindex = 0; + int pidindex2 = 0; + int pidindex3 = 0; + int pidindex4 = 0; + int pidindex5 = 0; + pidindex = new Random().nextInt(okpids.size()-1); + pidindex2 = new Random().nextInt(okpids.size()-1); + pidindex3 = new Random().nextInt(okpids.size()-1); + pidindex4 = new Random().nextInt(okpids.size()-1); + pidindex5 = new Random().nextInt(okpids.size()-1); + + + List plist = new ArrayList<>(); + plist.add(okpids.get(pidindex)); + plist.add(okpids.get(pidindex2)); + plist.add(okpids.get(pidindex3)); + plist.add(okpids.get(pidindex4)); + plist.add(okpids.get(pidindex5)); + + for(Integer pid : plist) { + String gameIds = js11.hget("g{426149}:play:"+pid,"gameId"); + Map jsRobot= js2.hgetAll(allrobotkeys+gameIds); + + for (String key : jsRobot.keySet()) { + + int tr = new Random().nextInt(60); + String tmp = js2.get(wokelock+key); + if(StringUtil.isEmpty(tmp)){ + if(tr<20) { + //可以工作 + robotid = Integer.parseInt(key); + + } + } + + } + if (robotid > 0){ + //查询robotid是否在房间 + + Set rooms = null; + int min_value = 100000; + int max_value = 999999; + String grooms_key = GroupCache.genRoomsKey(groupid); + rooms = js11.zrevrangeByScore(grooms_key, max_value, min_value); + int qfroomnum = 0; + boolean flag = true; + for (String room : rooms) { + List room_list = Redis.use("group1_db0").hmget(room, "robot", "players"); + String robot = room_list.get(0); + if (robot == null) { + continue; + } + String playerstr = room_list.get(1); + if (playerstr.contains(robotid+"")) { + flag = false; + break; + } + + } + if(flag){ + js2.set(wokelock+robotid,1+""); + js2.expire(wokelock+robotid,900); + createGroupRoom(groupid,pid,robotid); + }else{ + js2.set(wokelock+robotid,1+""); + js2.expire(wokelock+robotid,900); + } + + } + } + + + }catch (Exception e) { + e.printStackTrace(); + }finally { + js2.close(); + js11.close(); + } + + + } + private String createGroupRoom(int groupId, int pid,int robotid) throws Exception { + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb==null) { + throw new WebException(ErrorCode.GROUP_PLAY_EXIST); + } + + int gameId = gpb.gameId; + GameBean gb = GameCache.getGame(gameId); + + String grooms_key = GroupCache.genRoomsKey(groupId); + GroupBean group = GroupCache.getGroup(groupId); + ITObject configData = TObject.newFromJsonData(gpb.config); + int maxPlayers = gpb.maxPlayers; + + int opt = configData.getInt("opt"); + String owner_session = AccountCache.genKey(group.owner); + + int dissolve_opt = group.dissolve_opt; + int kick_opt = group.kick_opt; + + String newRoomId = Redis.use("group1_db1").rpop("free_room"); + Redis.use("group1_db1").lpush("free_room", newRoomId); + String room_key = "room:" + newRoomId; + + + + + String svr = _getSvr(jedis0,gb); + if (svr == null) { + throw new WebException(ErrorCode.NO_SERVICE); + } + + Integer pay = gb.pay.get("pay"+opt+"_"+maxPlayers); + + + long time = System.currentTimeMillis() / 1000; + Map roomMap = new HashMap(); + /** + * 玩家列表Seat映射 + */ + roomMap.put("robot", "1"); + int robot_existTime = (int)((Math.random() + 0.5) * 40); + roomMap.put("robot_existTime", robot_existTime + ""); + + roomMap.put("id", newRoomId); + roomMap.put("owner", owner_session); + roomMap.put("svr", svr); + roomMap.put("AA", "0"); + roomMap.put("pay", pay+""); + roomMap.put("agent", "1"); + roomMap.put("group", groupId+""); + roomMap.put("gpid", pid+""); + roomMap.put("payer", group.owner+""); + roomMap.put("maxPlayers", maxPlayers + ""); + roomMap.put("times", gb.opt.get(opt)+""); + roomMap.put("opt", opt + ""); + roomMap.put("status", "0"); + roomMap.put("hpOnOff", gpb.hpOnOff+""); + roomMap.put("rewardType", gpb.rewardType+""); + roomMap.put("rewardValueType", gpb.rewardValueType+""); + roomMap.put("xipai_rewardType", gpb.xipai_rewardType+""); + roomMap.put("xipai_rewardValueType", gpb.xipai_rewardValueType+""); + roomMap.put("dismiss_time", DISMISS_TIME[dissolve_opt-1]); + roomMap.put("kick_time", KICK_TIME[kick_opt-1]); + roomMap.put("hp_times",gpb.hp_times+""); + if(gpb.hpOnOff == 1) { + ITObject hpObj = TObject.newFromJsonData(gpb.hpConfig); + if (hpObj.getInt("limitInRoom") != null) { + roomMap.put("limitInRoom", hpObj.getInt("limitInRoom") + ""); + } + configData.putTObject("hpData", hpObj); + } + + configData.del("opt"); + configData.del("AA"); + roomMap.put("options", configData.toJson()); + roomMap.put("game", gameId + ""); + roomMap.put("open", "1"); + roomMap.put("round", "0"); + roomMap.put("create_time", time + ""); + roomMap.put("cache_ver", "1"); + + + + + List seat_list = new ArrayList<>(); + List player_list = new ArrayList<>(); + + seat_list.add(1); + player_list.add(robotid); + + roomMap.put("players", toTArray(player_list).toJson()); + roomMap.put("seats", toTArray(seat_list).toJson()); + + + jedis0.hmset(room_key, roomMap); + + /** + * pid open status 剩余空位 + * 11 1 1 00 + */ + Redis.use("group1_db11").zadd(grooms_key, pid*10000+1101, room_key); + GroupPublisherService.addRoomEvt(groupId, newRoomId); + //updateRedisMap(groupId, newRoomId, room_key, roomMap, maxPlayers); + return room_key; + } finally { + jedis0.close(); + } + } + + public int getRobot(int maxPlayers) + { + long freeRobotNum = Redis.use("group1_db1").scard("free_robot"); + if (freeRobotNum < maxPlayers) + { + long useRobotNum = Redis.use("group1_db1").scard("used_robot"); + if (useRobotNum >= 100) + { + logger.warn("robot not enough, cur used robot " + useRobotNum); + } + try { + createRobot(); + freeRobotNum = Redis.use("group1_db1").scard("free_robot"); + if (freeRobotNum < maxPlayers) + { + logger.error("create robot failed............"); + return 0; + } + + } + catch (Exception e) + { + logger.error(e); + } + } + + try { + while(freeRobotNum > 0) + { + String strRobotId = Redis.use("group1_db1").spop("free_robot"); + freeRobotNum = Redis.use("group1_db1").scard("free_robot"); + if (StringUtil.isEmpty(strRobotId)) + { + createRobot(); + continue; + } + else { + AccountBean acc_bean = AccountCache.getAccount(Integer.parseInt(strRobotId)); + if (acc_bean != null) + { + URL url = null; + try { + url = new URL(acc_bean.portrait); + InputStream in = url.openStream(); + String jsonStr = inputStreamToString(in); + String md5 = MD5.getInstance().getHash(jsonStr); + if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") ) + { + //logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5); + url = null; + } + //logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5); + } catch (Exception e1) { + url = null; + } + if (url == null) + { + logger.error("robot head error, this robot:"+ strRobotId + " will not use"); + continue; + } + } + else { + continue; + } + } + + Redis.use("group1_db1").sadd("used_robot", strRobotId); + int robotId = Integer.parseInt(strRobotId); + String fakeHp = Redis.use("group1_db10").hget("fake_"+strRobotId, "fake_hp"); + if (StringUtil.isEmpty(fakeHp)) + { + int fake_hp = (int)(Math.random() * 10000000); + Redis.use("group1_db10").hset("fake_"+strRobotId, "fake_hp", Integer.toString(fake_hp)); + } + return robotId; + } + } + catch (Exception e) + { + logger.error(e); + } + return 0; + } + + /** + * 登录 + * @throws Exception + */ + public final void createRobot() throws Exception { + int num = 100; + int mng = 9999; + + String listSql = "select * from old_account"; + ITArray resultArray = DataBase.use().executeQueryByTArray(listSql); + ArrayList nameList = new ArrayList<>(); + ArrayList headList = new ArrayList<>(); + for(int i = 0; i < resultArray.size(); i++) + { + ITObject userData = resultArray.getTObject(i); + String nick = userData.getUtfString("nick"); + nameList.add(nick); + String head = userData.getUtfString("portrait"); + headList.add(head); + } + + Math.random(); + Collections.shuffle(nameList); + Collections.shuffle(headList); + + for(int i = 0; i < num; i++) + { + String sql = ""; + int accountid = create_register(mng, "xx123456xx", nameList, headList); + AccountBean acc_bean = AccountCache.getAccount(accountid); + if (acc_bean == null) + { + sql = String.format("SELECT * FROM account WHERE id ='%d'", + accountid); + + ITArray resultArray2 = DataBase.use().executeQueryByTArray(sql); + if(resultArray2.size() ==0) { + throw new WebException(ErrorCode._FAILED); + } + + ITObject userData = resultArray2.getTObject(0); + UpdateUserData(userData, accountid); + + acc_bean = AccountCache.getAccount(accountid); + } + + Redis.use("group1_db1").sadd("free_robot", Integer.toString(acc_bean.id)); + int fake_hp = (int)(Math.random() * 10000000); + Redis.use("group1_db10").hset("fake_"+acc_bean.id, "fake_hp", Integer.toString(fake_hp)); + } + } + + /** + * + * @return + * @throws Exception + */ + private final int UpdateUserData(ITObject reqData,long id) throws Exception { + ITObject userData = TObject.newInstance(); + userData.putInt("id", (int)id); + + userData.putUtfString("acc", reqData.getUtfString("acc")); + userData.putUtfString("portrait", reqData.getUtfString("portrait")); + userData.putUtfString("nick", reqData.getUtfString("nick")); + int sex = reqData.getInt("sex"); + if(sex == 0) { + sex = 1; + reqData.putInt("sex", sex); + } + userData.putInt("sex", sex); + + userData.putInt("mng", 0); + userData.putInt("type", 0); + if(reqData.containsKey("diamo")) { + userData.putInt("diamo", reqData.getInt("diamo")); + } + + userData.putInt("invitation", 1); + updateSession(userData, (int) id); + return (int)id; + } + + + private static String updateSession(ITObject userData, int id) { + String session = AccountCache.genKey(id); + Map map = new HashMap(); + Utils.objectToMap(userData, map); + + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + jedis0.hmset(session, map); + BaseCache.updateCacheVer(jedis0, session); + }finally { + jedis0.close(); + } + + return session; + } + + + /** + * + * @description: 将输入流转换成字符串 + * @author: Jeff + * @date: 2019年12月15日 + * @param inputStream 输入流 + * @return + */ + private static String inputStreamToString(InputStream inputStream) { + StringBuffer buffer = new StringBuffer(); + InputStreamReader inputStreamReader; + try { + inputStreamReader = new InputStreamReader(inputStream, "utf-8"); + BufferedReader bufferedReader = new BufferedReader(inputStreamReader); + String str = null; + while ((str = bufferedReader.readLine()) != null) { + buffer.append(str); + } + // 释放资源 + bufferedReader.close(); + inputStreamReader.close(); + inputStream.close(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return buffer.toString(); + } + + private final int create_register(int mng, String password, ArrayList nickList, ArrayList headList) throws Exception { + int count = 0; + long id = 0; + ArrayList list = new ArrayList<>(); + for(int i = 0; i < 10; i++) + { + String strId = Redis.use("group1_db1").rpop("free_account"); + if (StringUtil.isEmpty(strId)) + { + break; + } + list.add(strId); + } + //logger.info("free_account:"+list.toString()); + + Collections.shuffle(list); + + do { + id = Long.parseLong(list.remove(0)); + String sql = "SELECT id FROM account WHERE id =" + id; + ITArray resultArray = DataBase.use().executeQueryByTArray(sql); + if (resultArray.size() == 0) + { + break; + } + }while(count++ <= 10); + + for(int i = 0; i < list.size(); i++) + { + Redis.use("group1_db1").lpush("free_account", list.get(i)); + } + + if (id == 0) + { + throw new WebException(ErrorCode._FAILED); + } + + ITObject userData = TObject.newInstance(); + userData.putInt("id", (int)id); + + userData.putUtfString("acc", "" + id); + userData.putUtfString("portrait", ""); + while (headList.size() > 0) + { + String head = null; + try { + head = headList.remove(0); + URL url = new URL(head); + InputStream in = url.openStream(); + String jsonStr = inputStreamToString(in); + String md5 = MD5.getInstance().getHash(jsonStr); + // logger.info("robot:" + id + " head:" + head + " md5:" + md5); + if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") ) + { + head = null; + } + } catch (Exception e1) { + head = null; + } + if (head != null) + { + userData.putUtfString("portrait", head); //头像 + break; + } + } + + String nick = ""; + if (nickList.size() > 0) + { + nick = nickList.remove(0); + } + nick = nick.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5]", " "); + userData.putUtfString("nick", nick); + int sex = 1; + if(sex == 0) { + sex = 1; + } + userData.putInt("sex", sex); + userData.putInt("diamo", 0); + userData.putInt("mng", 0); + userData.putInt("regTime", mng); + userData.putInt("type", 0); + userData.putUtfString("password", Utils.getMD5Hash(password)); + long reg_time = System.currentTimeMillis() / 1000; + userData.putLong("reg_time", reg_time); + logger.info("create robot account:"+userData.toJson()+" password:" + password); + int result = DataBase.use().insert("account", userData); + if (result == -1) { + throw new WebException(ErrorCode._FAILED); + } + userData.putInt("invitation", 1); + String session = updateSession(userData, (int) id); + return (int)id; + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/GroupLogService.java b/game_web/web_group_robot/src/main/java/com/group/service/GroupLogService.java new file mode 100644 index 0000000..be23757 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/GroupLogService.java @@ -0,0 +1,2173 @@ +package com.group.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import com.data.bean.AccountBean; +import com.data.bean.GroupMemberBean; +import com.data.cache.AccountCache; +import com.data.cache.GroupCache; +import com.data.cache.GroupMemberCache; +import com.data.util.ConsumeCode; +import com.data.util.CountUtil; +import com.data.util.ErrorCode; +import com.data.util.Utility; +import com.taurus.core.entity.ITArray; +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TArray; +import com.taurus.core.entity.TObject; +import com.taurus.core.plugin.database.DataBase; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.plugin.redis.RedisLock; +import com.taurus.core.util.DateUtils; +import com.taurus.core.util.Logger; +import com.taurus.core.util.StringUtil; +import com.taurus.web.WebException; + +import redis.clients.jedis.Jedis; +import redis.clients.jedis.Pipeline; + + +public class GroupLogService { + + private static final Logger log = Logger.getLogger(GroupLogService.class); + //体力值变化 + private static final int CHOOSE_CHAGE = 1; + //操作上分 + private static final int CHOOSE_UPPER = 2; + //操作下分 + private static final int CHOOSE_SUB = 4; + //抽水 + private static final int CHOOSE_PUMP = 8; + //奖励 + private static final int CHOOSE_RWARD = 16; + //转账 + private static final int CHOOSE_TRADE = 32; + //提取 + private static final int CHOOSE_TAKE_REWARD = 64; + //洗牌 + private static final int CHOOSE_XIPAI = 128; + + //暗抽 + private static final int CHOOSE_ANCHOU = 256; + + /** + * 上下分记录类型 + */ + private static final int[] MGRLOG_TYPE = {ConsumeCode.HP_MGR_UPPER,ConsumeCode.HP_MGR_SUB,ConsumeCode.HP_PARTNER_UPPER,ConsumeCode.HP_PARTNER_SUB}; + /** + * 获取成员排行 + * @param groupId + * @param pid + * @param limit + * @param num + * @param beginTime + * @param endTime + * @return + * @throws Exception + */ + public static final ITObject getMemberRank(int groupId, int uid, int pid, int type, int limit,int num,int beginTime,int endTime) throws Exception{ + ITObject obj1 = TObject.newInstance(); + GroupMemberBean mng_bean = GroupCache.getMember(groupId, uid); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + int mgn_partner = mng_bean.partnerLev; + int mgn_lev = mng_bean.lev; + + String strGodsList = null; + Set godsList = Redis.use("group1_db1").smembers("gods"); + boolean findok = false; + if(!godsList.isEmpty()) { + for (String mem : godsList) { + if (strGodsList == null) { + strGodsList = mem; + } else { + strGodsList += "," + mem; + } + } + strGodsList = "("+strGodsList+")"; + findok = true; + } + + //log.info("getMemberRank strGodsList:"+strGodsList+" mgn_partner:"+mgn_partner + " mgn_lev:"+mgn_lev); + + + //if (mgn_lev == 1 && mgn_partner == 0) { + String sql = String.format("SELECT uid,SUM(win) AS win,SUM(round) as round,SUM(score) as score FROM group_member_log WHERE groupId = %s ",groupId); + if(pid > 0) { + sql = sql + " AND pid =" + pid; + } + if (findok){ + sql = sql+ " AND uid not in "+strGodsList; + } + if (type == 0) + { + sql = sql + String.format(" AND time >=%s AND time <%s GROUP BY uid ORDER BY round DESC limit %s,%s",beginTime,endTime,limit,num); + } + else if (type == 1) + { + sql = sql + String.format(" AND time >=%s AND time <%s GROUP BY uid ORDER BY score DESC limit %s,%s",beginTime,endTime,limit,num); + } + + //log.info("getMemberRank sql:"+sql); + ITArray arr =DataBase.use().executeQueryByTArray(sql); + for(int i=0;i 0 and time >=%s AND time <%s ", groupId, beginTime, endTime); + if (findok){ + sql2 = sql2+ " and uid not in "+strGodsList; + } + //log.info("getMemberRank sql2:"+sql2); + int allActiveNum = 0; + ITArray arr2 =DataBase.use().executeQueryByTArray(sql2); + if(arr2.size()>0) { + ITObject obj = arr2.getTObject(0); + allActiveNum = obj.getLong("num").intValue(); + } + obj1.putInt("allActiveNum", allActiveNum); + //} + + obj1.putInt("limit", limit); + return obj1; + } + + /** + * 获取战绩列表 + * @param platform + * @param groupId + * @param limit + * @param num + * @return + */ + public static ITObject getPersonRecords(String platform,int groupId,int timeType,int beginTime,int endTime,int limit,int num,int qid,int uid) throws Exception{ + String qid_sql = StringUtil.Empty; + qid_sql = "and uid="+qid; + + ITArray militaryList = TArray.newInstance(); + + ITObject obj1 = TObject.newInstance(); + if(timeType == 0) { + + beginTime = DateUtils.getBeginDay() ; + endTime = DateUtils.getBeginDay() + 3600 * 24; + }else if(timeType == 1) { + + beginTime = DateUtils.getBeginDay() - 3600 * 24 ; + endTime = DateUtils.getBeginDay(); + } + else if(timeType == 2) { + + beginTime = DateUtils.getBeginDay() - 3600 * 48 ; + endTime = DateUtils.getBeginDay() - 3600 * 24; + } + + int total = 0; + int consume = 0; + + String where = String.format("gid=%s and time>=%s and time<=%s",groupId,beginTime,endTime); + if(limit==0) { + + String count_sql = String.format("SELECT count(*) AS total FROM room_rec_log where %s %s",where,qid_sql); + ITArray arr =DataBase.use().executeQueryByTArray(count_sql); + if(arr.size()>0) { + ITObject obj = arr.getTObject(0); + total = obj.getLong("total").intValue(); + } + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + + String key = String.format("g%s:m%s:consume_hp", groupId,uid); + if(timeType >= 0 && timeType <=2) { + + String hp_key = String.format("%s:d%s",key,beginTime); + String r_str = jedis9.get(hp_key); + int r_num = 0; + if(StringUtil.isNotEmpty(r_str)) { + r_num = Integer.parseInt(r_str); + } + consume = r_num; + } + else{ + int timeBegin = beginTime; + while(timeBegin <= endTime) { + + String hp_key = String.format("%s:d%s",key,timeBegin); + String r_str = jedis9.get(hp_key); + int r_num = 0; + if(StringUtil.isNotEmpty(r_str)) { + r_num = Integer.parseInt(r_str); + } + consume += r_num; + timeBegin += 86400; + } + } + + getMemberData(jedis9,uid,obj1,groupId, 0,beginTime,endTime,false,false); + }finally { + jedis9.close(); + } + } + + String sql = String.format("select rec_key from room_rec_log where %s %s GROUP BY roomid ORDER BY time desc limit %s,%s", + where,qid_sql,limit,num); + ITArray list = DataBase.use().executeQueryByTArray(sql); + + if(list.size()>0) { + Jedis jedis5 = Redis.use("group1_db5").getJedis(); + try { + for(int i=0;i pids = Redis.use("group1_db11").zrangeByScore(gp_key, 10, 11); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + ITArray arr = TArray.newInstance(); + try { + for(String pid:pids) { + + ITObject objp = TObject.newInstance(); + + objp.putInt("pid", Integer.parseInt(pid)); + + if(timeType == 0) { + + String key = String.format("g{%s}:m%s:valid_round:p%s", groupId,uid,pid); + int round = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("round", round); + + key = String.format("g%s:hp_cost:m%s:p%s",groupId,uid,pid); + int pump = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("pump", pump); + + key = String.format("g{%s}:m%s:p%s:reward_log", groupId,uid,pid); + int award = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("award", award); + } + else if(timeType == 1) { + + String curMonth = ":m" + DateUtils.getBeginMonth(); + + String key = String.format("g{%s}:m%s:valid_round:p%s%s", groupId,uid,pid,curMonth); + int round = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("round", round); + + key = String.format("g%s:hp_cost:m%s:p%s%s",groupId,uid,pid,curMonth); + int pump = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("pump", pump); + + key = String.format("g{%s}:m%s:p%s:reward_log%s", groupId,uid,pid,curMonth); + int award = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("award", award); + } + else if(timeType == 2) { + + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + + String key = String.format("g{%s}:m%s:valid_round:p%s%s", groupId,uid,pid,curMonth); + int round = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("round", round); + + key = String.format("g%s:hp_cost:m%s:p%s%s",groupId,uid,pid,curMonth); + int pump = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("pump", pump); + + key = String.format("g{%s}:m%s:p%s:reward_log%s", groupId,uid,pid,curMonth); + int award = _getCountValue(jedis9,key,beginTime,endTime); + objp.putInt("award", award); + } + arr.addTObject(objp); + } + }finally { + jedis9.close(); + } + + obj.putTArray("members", arr); + obj.putInt("limit", limit); + + + return obj; + } + + + public static ITObject getDirectStatMember(int groupId,int uid,int rootUid,int limit, int num,int timeType,int beginTime, int endTime) throws Exception{ + + ITObject obj = TObject.newInstance(); + + String limitSql = String.format("limit %s,%s",limit, num); + String sql = String.format("SELECT uid, partnerLev" + + " FROM group_member" + + " WHERE groupId = %s and ((parentId=%s and partnerLev = 0) or uid = %s) GROUP BY uid %s", + groupId, uid, uid, limitSql); + + + ITArray temp = TArray.newInstance(); + + ITArray list = DataBase.use().executeQueryByTArray(sql); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + + for (int i = 0; i < list.size(); ++i) { + + ITObject objLine = list.getTObject(i); + if(objLine.containsKey("uid")) { + + int tagUid = objLine.getInt("uid"); + + AccountBean acc = AccountCache.getAccount(tagUid); + objLine.putString("nick", acc.nick); + + //int newBeginTime = beginTime - 86400*30; + getMemberData(jedis9,tagUid,objLine,groupId,timeType, beginTime,endTime,false,false); + + if(timeType == 0) { + { + String tmpKey = String.format("g{%s}:m%s:", groupId,tagUid); + int reward_hp = _getCountValue(jedis9,tmpKey + "reward_log",beginTime,endTime); + objLine.putInt("reward_tongji", reward_hp); + } + + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp = _getCountValue(jedis9,key,beginTime,endTime); + objLine.putInt("reward_hp", (int)reward_hp); + } + else if(timeType == 1){ + { + String key = String.format("g{%s}:m%s:", groupId,tagUid); + String curMonth = ":m" + DateUtils.getBeginMonth(); + int reward_hp = _getValue(jedis9,key + "reward_log" + curMonth); + objLine.putInt("reward_tongji", reward_hp); + } + + + String curMonth = ":m" + DateUtils.getBeginMonth(); + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp =_getValue(jedis9,key+ curMonth); + objLine.putInt("reward_hp", reward_hp); + } + else if(timeType == 2){ + { + String key = String.format("g{%s}:m%s:", groupId,tagUid); + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + int reward_hp = _getValue(jedis9,key + "reward_log" + curMonth); + objLine.putInt("reward_tongji", reward_hp); + } + + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp =_getValue(jedis9,key+ curMonth); + objLine.putInt("reward_hp", reward_hp); + } + temp.addTObject(objLine); + } + } + } + finally { + jedis9.close(); + } + + obj.putTArray("members", temp); + obj.putInt("limit", limit); + + + return obj; + } + + public static ITObject getXingYunHaoMember(int groupId, int limit, int num,int timeType,int beginTime, int endTime) throws Exception{ + ITObject obj = TObject.newInstance(); + + String limitSql = String.format("limit %s,%s",limit, num); + + String strGodsList = null; + Set godsList = Redis.use("group1_db1").smembers("gods"); + Map mapString = Redis.use("group1_db1").hgetAll("gods_special"); + for (Map.Entry entry : mapString.entrySet()) { + String strPlayerId = entry.getKey(); + godsList.remove(strPlayerId); + } + + List allList = new ArrayList(); + allList.addAll(godsList); + for(String mem : godsList) + { + if (strGodsList == null) + { + strGodsList = mem; + } + else { + strGodsList += "," + mem; + } + } + + String sql = String.format("SELECT uid, partnerLev" + + " FROM group_member" + + " WHERE groupId = %s and uid in (%s) GROUP BY uid %s", + groupId, strGodsList, limitSql); + + + + ITArray temp = TArray.newInstance(); + int allTotalWin = 0; + ITArray list = DataBase.use().executeQueryByTArray(sql); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + + for (int i = 0; i < list.size(); ++i) { + + ITObject objLine = list.getTObject(i); + if(objLine.containsKey("uid")) { + + int tagUid = objLine.getInt("uid"); + + AccountBean acc = AccountCache.getAccount(tagUid); + objLine.putString("nick", acc.nick); + + getMemberData(jedis9,tagUid,objLine,groupId,timeType, beginTime,endTime,false,false); + + temp.addTObject(objLine); + } + } + + for (String user : allList) { + String key = String.format("g{%s}:m%s:", groupId,user); + int total_win = _getCountValue(jedis9,key + "total_win_self",beginTime,endTime); + allTotalWin += total_win; + } + } + finally { + jedis9.close(); + } + + obj.putTArray("members", temp); + obj.putInt("limit", limit); + obj.putLong("all_total_win", allTotalWin); + + + return obj; + } + + public static ITObject getPartnerStatMember(int groupId,int uid,int rootUid,int limit, int num,int timeType,int beginTime, int endTime) throws Exception{ + + ITObject obj = TObject.newInstance(); + + String limitSql = String.format("limit %s,%s",limit, num); + + String sql = String.format("SELECT uid, partnerLev" + + " FROM group_member" + + " WHERE groupId = %s and (parentId=%s or uid = %s) and partnerLev > 0 GROUP BY uid %s", + groupId, uid, uid, limitSql); + + + + ITArray temp = TArray.newInstance(); + + ITArray list = DataBase.use().executeQueryByTArray(sql); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + + for (int i = 0; i < list.size(); ++i) { + + ITObject objLine = list.getTObject(i); + if(objLine.containsKey("uid")) { + + int tagUid = objLine.getInt("uid"); + + AccountBean acc = AccountCache.getAccount(tagUid); + objLine.putString("nick", acc.nick); + + if(tagUid != uid) { + //int newBeginTime = beginTime - 86400 * 30; + getMemberData(jedis9,tagUid,objLine,groupId,timeType, beginTime,endTime,false,true); + } + else { + //int newBeginTime = beginTime - 86400 * 30; + //getMemberData(jedis9,tagUid,objLine,groupId,timeType, beginTime,endTime,false,true); + getDirectMemberData(jedis9,tagUid,objLine,groupId,timeType,beginTime,endTime); + } + + + if(tagUid == uid) { + + if(timeType == 0) { + { + String tmpKey = String.format("g{%s}:m%s:", groupId,tagUid); + int reward_hp = _getCountValue(jedis9,tmpKey + "reward_log",beginTime,endTime); + objLine.putInt("reward_tongji", reward_hp); + } + + String key = String.format("g{%s}:m%s:d_reward", groupId,tagUid); + int reward_hp = _getCountValue(jedis9,key,beginTime,endTime); + objLine.putInt("reward_hp", reward_hp); + } + else if(timeType == 1){ + { + String key = String.format("g{%s}:m%s:", groupId,tagUid); + String curMonth = ":m" + DateUtils.getBeginMonth(); + int reward_hp = _getValue(jedis9,key + "reward_log" + curMonth); + + objLine.putInt("reward_tongji", reward_hp); + } + + String curMonth = ":m" + DateUtils.getBeginMonth(); + String key = String.format("g{%s}:m%s:d_reward", groupId,tagUid); + int reward_hp =_getValue(jedis9,key + curMonth); + objLine.putInt("reward_hp", reward_hp); + } + else if(timeType == 2){ + { + String key = String.format("g{%s}:m%s:", groupId, tagUid); + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + int reward_hp = _getValue(jedis9, key + "reward_log" + curMonth); + objLine.putInt("reward_tongji", reward_hp); + } + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + String key = String.format("g{%s}:m%s:d_reward", groupId,tagUid); + int reward_hp =_getValue(jedis9, key+curMonth); + objLine.putInt("reward_hp", reward_hp); + } + } + else { + if(timeType == 0) { + { + long reward_hp_total = 0; + List listParent = Utility.getChildParentList(groupId, tagUid, true); + for (Integer parId : listParent) { + String tmpKey = String.format("g{%s}:m%s:", groupId, parId); + int reward_hp = _getCountValue(jedis9, tmpKey + "reward_log", beginTime, endTime); + reward_hp_total += reward_hp; + } + objLine.putInt("reward_tongji", (int) reward_hp_total); + } + + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp = _getCountValue(jedis9,key,beginTime,endTime); + objLine.putInt("reward_hp", (int)reward_hp); + } + else if(timeType == 1){ + { + String key = String.format("g{%s}:m%s:", groupId, tagUid); + String curMonth = ":m" + DateUtils.getBeginMonth(); + int reward_hp = _getValue(jedis9, key + "reward_log" + curMonth); + objLine.putInt("reward_tongji", reward_hp); + } + + String curMonth = ":m" + DateUtils.getBeginMonth(); + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp =_getValue(jedis9,key + curMonth); + objLine.putInt("reward_hp", reward_hp); + } + else if(timeType == 2){ + { + String key = String.format("g{%s}:m%s:", groupId, tagUid); + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + int reward_hp = _getValue(jedis9, key + "reward_log" + curMonth); + + objLine.putInt("reward_tongji", reward_hp); + } + + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp =_getValue(jedis9, key+curMonth); + objLine.putInt("reward_hp", reward_hp); + } + } + + temp.addTObject(objLine); + } + } + } + finally { + jedis9.close(); + } + + obj.putTArray("members", temp); + obj.putInt("limit", limit); + + + return obj; + } + + public static ITObject findPartnerStatMember(int groupId,int uid,int rootUid,int tagId, int limit, int num,int timeType,int beginTime, int endTime) throws Exception{ + + ITObject obj = TObject.newInstance(); + + String limitSql = String.format("limit %s,%s",limit, num); + + String sql = String.format("SELECT uid, partnerLev" + + " FROM group_member" + + " WHERE groupId = %s and (parentId=%s or uid = %s) and partnerLev > 0 and uid=%s GROUP BY uid %s", + groupId, uid, uid, tagId, limitSql); + + + + ITArray temp = TArray.newInstance(); + + ITArray list = DataBase.use().executeQueryByTArray(sql); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + + for (int i = 0; i < list.size(); ++i) { + + ITObject objLine = list.getTObject(i); + if(objLine.containsKey("uid")) { + + int tagUid = objLine.getInt("uid"); + + AccountBean acc = AccountCache.getAccount(tagUid); + objLine.putString("nick", acc.nick); + + if(tagUid != uid) { + //int newBeginTime = beginTime - 86400 * 30; + getMemberData(jedis9,tagUid,objLine,groupId,timeType, beginTime,endTime,false,true); + } + else { + //int newBeginTime = beginTime - 86400 * 30; + //getMemberData(jedis9,tagUid,objLine,groupId,timeType, beginTime,endTime,false,true); + getDirectMemberData(jedis9,tagUid,objLine,groupId,timeType,beginTime,endTime); + } + + + if(tagUid == uid) { + + if(timeType == 0) { + { + String tmpKey = String.format("g{%s}:m%s:", groupId,tagUid); + int reward_hp = _getCountValue(jedis9,tmpKey + "reward_log",beginTime,endTime); + objLine.putInt("reward_tongji", reward_hp); + } + + String key = String.format("g{%s}:m%s:d_reward", groupId,tagUid); + int reward_hp = _getCountValue(jedis9,key,beginTime,endTime); + objLine.putInt("reward_hp", reward_hp); + } + else if(timeType == 1){ + { + String key = String.format("g{%s}:m%s:", groupId,tagUid); + String curMonth = ":m" + DateUtils.getBeginMonth(); + int reward_hp = _getValue(jedis9,key + "reward_log" + curMonth); + + objLine.putInt("reward_tongji", reward_hp); + } + + String curMonth = ":m" + DateUtils.getBeginMonth(); + String key = String.format("g{%s}:m%s:d_reward", groupId,tagUid); + int reward_hp =_getValue(jedis9,key + curMonth); + objLine.putInt("reward_hp", reward_hp); + } + else if(timeType == 2){ + { + String key = String.format("g{%s}:m%s:", groupId, tagUid); + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + int reward_hp = _getValue(jedis9, key + "reward_log" + curMonth); + objLine.putInt("reward_tongji", reward_hp); + } + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + String key = String.format("g{%s}:m%s:d_reward", groupId,tagUid); + int reward_hp =_getValue(jedis9, key+curMonth); + objLine.putInt("reward_hp", reward_hp); + } + } + else { + if(timeType == 0) { + { + long reward_hp_total = 0; + List listParent = Utility.getChildParentList(groupId, tagUid, true); + for (Integer parId : listParent) { + String tmpKey = String.format("g{%s}:m%s:", groupId, parId); + int reward_hp = _getCountValue(jedis9, tmpKey + "reward_log", beginTime, endTime); + reward_hp_total += reward_hp; + } + objLine.putInt("reward_tongji", (int) reward_hp_total); + } + + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp = _getCountValue(jedis9,key,beginTime,endTime); + objLine.putInt("reward_hp", (int)reward_hp); + } + else if(timeType == 1){ + { + String key = String.format("g{%s}:m%s:", groupId, tagUid); + String curMonth = ":m" + DateUtils.getBeginMonth(); + int reward_hp = _getValue(jedis9, key + "reward_log" + curMonth); + objLine.putInt("reward_tongji", reward_hp); + } + + String curMonth = ":m" + DateUtils.getBeginMonth(); + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp =_getValue(jedis9,key + curMonth); + objLine.putInt("reward_hp", reward_hp); + } + else if(timeType == 2){ + { + String key = String.format("g{%s}:m%s:", groupId, tagUid); + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + int reward_hp = _getValue(jedis9, key + "reward_log" + curMonth); + + objLine.putInt("reward_tongji", reward_hp); + } + + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + String key = String.format("g{%s}:m%s:reward_log_to:par%s", groupId,tagUid,uid); + int reward_hp =_getValue(jedis9, key+curMonth); + objLine.putInt("reward_hp", reward_hp); + } + } + + temp.addTObject(objLine); + } + } + } + finally { + jedis9.close(); + } + + obj.putTArray("members", temp); + obj.putInt("limit", limit); + + + return obj; + } + + + public static ITObject getPartnerStat(int groupId,int uid,int limit, int num,int timeType,int beginTime, int endTime) throws Exception{ + + ITObject obj = TObject.newInstance(); + GroupMemberBean gmb = GroupCache.getMember(groupId, uid); + int lev = gmb.lev; + boolean mgr = lev < 3; + ITArray list = null; + String limitSql = String.format("limit %s,%s",limit, num); + if (mgr) { + + String sql = String.format("SELECT A.uid,A.partnerLev, A.autoscore," + + "(SELECT COUNT(uid) FROM group_member B where B.groupId = %s AND B.parentId = A.uid) AS total " + + "FROM group_member AS A" + + " where A.groupId= %s and A.partnerLev=1 %s", + groupId,groupId, limitSql); + + list = DataBase.use().executeQueryByTArray(sql); + } else { + + String sql = String.format( + "SELECT A.uid,A.partnerLev, A.autoscore, (SELECT COUNT(uid) FROM group_member B where B.groupId = %s AND B.parentId = A.uid) AS total " + + "FROM group_member AS A" + + " where A.groupId= %s and (A.parentId=%s or A.uid=%s) AND A.partnerLev >0 %s", + groupId,groupId, uid, uid, limitSql); + + list = DataBase.use().executeQueryByTArray(sql); + } + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + + try { + + for (int i = 0; i < list.size(); ++i) { + + ITObject objLine = list.getTObject(i); + int tagUid = objLine.getInt("uid"); + AccountBean acc = AccountCache.getAccount(tagUid); + objLine.putString("nick", acc.nick); + + getMemberData(jedis9,tagUid,objLine,groupId,timeType,beginTime,endTime,true,true); + } + } + finally { + jedis9.close(); + jedis10.close(); + } + + obj.putTArray("members", list); + obj.putInt("limit", limit); + + return obj; + } + + public static ITObject findPartnerStat(int groupId,int uid, int tagId, int limit, int num,int timeType,int beginTime, int endTime) throws Exception{ + + ITObject obj = TObject.newInstance(); + GroupMemberBean gmb = GroupCache.getMember(groupId, uid); + int lev = gmb.lev; + boolean mgr = lev < 3; + ITArray list = null; + String limitSql = String.format("limit %s,%s",limit, num); + if (mgr) { + + String sql = String.format("SELECT A.uid,A.partnerLev, A.autoscore," + + "(SELECT COUNT(uid) FROM group_member B where B.groupId = %s AND B.parentId = A.uid) AS total " + + "FROM group_member AS A" + + " where A.groupId= %s and A.uid=%s %s", + groupId,groupId, tagId, limitSql); + + list = DataBase.use().executeQueryByTArray(sql); + } else { + if (uid != tagId) + { + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + finally { + jedis10.close(); + } + + } + + String sql = String.format( + "SELECT A.uid,A.partnerLev, A.autoscore, (SELECT COUNT(uid) FROM group_member B where B.groupId = %s AND B.parentId = A.uid) AS total " + + "FROM group_member AS A" + + " where A.groupId= %s AND A.uid=%s %s", + groupId,groupId, tagId, limitSql); + + list = DataBase.use().executeQueryByTArray(sql); + } + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + + try { + + for (int i = 0; i < list.size(); ++i) { + + ITObject objLine = list.getTObject(i); + int tagUid = objLine.getInt("uid"); + AccountBean acc = AccountCache.getAccount(tagUid); + objLine.putString("nick", acc.nick); + + getMemberData(jedis9,tagUid,objLine,groupId,timeType,beginTime,endTime,true,true); + } + } + finally { + jedis9.close(); + jedis10.close(); + } + + obj.putTArray("members", list); + obj.putInt("limit", limit); + + return obj; + } + + public static void getMemberData(Jedis jedis9, + int uid, + ITObject param, + int groupId, + int timeType,int beginTime, int endTime, + boolean rewardHP,boolean total) { + + String key = String.format("g{%s}:m%s:", groupId,uid); + String self = total ? "" : "_self"; + if(timeType == 0) { + + if(rewardHP) { +// int reward_hp = _getCountValue(jedis9,key + "reward_log",beginTime,endTime); +// param.putInt("reward_hp", reward_hp); + + // 包含下级合伙人 + long reward_hp_total = 0; + List listParent = Utility.getChildParentList(groupId, uid, true); + for(Integer parId : listParent) { + String tmpKey = String.format("g{%s}:m%s:", groupId,parId); + int reward_hp = _getCountValue(jedis9,tmpKey + "reward_log",beginTime,endTime); + reward_hp_total += reward_hp; + } + param.putLong("reward_hp", reward_hp_total); + } + + int valid_round = _getCountValue(jedis9,key + "valid_round"+ self,beginTime,endTime); + param.putInt("valid_round" , valid_round); + + int total_round = _getCountValue(jedis9,key + "round_log"+ self,beginTime,endTime); + param.putInt("total_round" , total_round); + + int total_win = _getCountValue(jedis9,key + "total_win"+ self,beginTime,endTime); + param.putInt("total_win" , total_win); + + int xipai_reward_log = _getCountValue(jedis9,key + "xipai_reward_log"+ self,beginTime,endTime); + param.putInt("xipai_reward_log" , xipai_reward_log); + } + else if(timeType == 1){ + + String curMonth = ":m" + DateUtils.getBeginMonth(); + + if(rewardHP) { + int reward_hp = _getValue(jedis9,key + "reward_log" + curMonth); + param.putInt("reward_hp", reward_hp); + } + + + int valid_round = _getValue(jedis9,key + "valid_round"+ self + curMonth); + param.putInt("valid_round" , valid_round); + + int total_round = _getValue(jedis9,key + "round_log" + self + curMonth); + param.putInt("total_round", total_round); + + int total_win = _getValue(jedis9,key + "total_win" + self + curMonth); + param.putInt("total_win", total_win); + + int xipai_reward_log = _getValue(jedis9,key + "xipai_reward_log" + self + curMonth); + param.putInt("xipai_reward_log", xipai_reward_log); + + } + else if(timeType == 2){ + + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + + if(rewardHP) { + int reward_hp = _getValue(jedis9,key + "reward_log" + curMonth); + param.putInt("reward_hp", reward_hp); + } + + int valid_round = _getValue(jedis9,key + "valid_round" + self + curMonth); + param.putInt("valid_round", valid_round); + + int total_round = _getValue(jedis9,key + "round_log" + self + curMonth); + param.putInt("total_round" , total_round); + + int total_win = _getValue(jedis9,key + "total_win"+ self + curMonth); + param.putInt("total_win" , total_win); + int xipai_reward_log = _getValue(jedis9,key + "xipai_reward_log"+ self + curMonth); + param.putInt("xipai_reward_log" , xipai_reward_log); + } + } + + private static void getDirectMemberData(Jedis jedis9, + int uid, + ITObject param, + int groupId, + int timeType,int beginTime, int endTime) { + + String key = String.format("g{%s}:m%s:", groupId,uid); + + if(timeType == 0) { + + int valid_round = _getCountValue(jedis9,key + "d_valid_round",beginTime,endTime); + param.putInt("valid_round" , valid_round); + + int total_round = _getCountValue(jedis9,key + "d_round_log",beginTime,endTime); + param.putInt("total_round" , total_round); + + int total_win = _getCountValue(jedis9,key + "d_total_win",beginTime,endTime); + param.putInt("total_win" , total_win); + + int xipai_reward_log = _getCountValue(jedis9,key + "xipai_reward_log_to",beginTime,endTime); + param.putInt("xipai_reward_log" , xipai_reward_log); + } + else if(timeType == 1){ + + String curMonth = ":m" + DateUtils.getBeginMonth(); + + int valid_round = _getValue(jedis9,key + "d_valid_round"+ curMonth); + param.putInt("valid_round" , valid_round); + + int total_round = _getValue(jedis9,key + "d_round_log" + curMonth); + param.putInt("total_round", total_round); + + int total_win = _getValue(jedis9,key + "d_total_win" + curMonth); + param.putInt("total_win", total_win); + int xipai_reward_log = _getValue(jedis9,key + "xipai_reward_log_to" + curMonth); + param.putInt("xipai_reward_log", xipai_reward_log); + } + else if(timeType == 2){ + + String curMonth = ":m" + DateUtils.getBeginLastMonth(); + + int valid_round = _getValue(jedis9,key + "d_valid_round" + curMonth); + param.putInt("valid_round", valid_round); + + int total_round = _getValue(jedis9,key + "d_round_log" + curMonth); + param.putInt("total_round" , total_round); + + int total_win = _getValue(jedis9,key + "d_total_win"+ curMonth); + param.putInt("total_win" , total_win); + + int xipai_reward_log = _getValue(jedis9,key + "xipai_reward_log_to"+ curMonth); + param.putInt("xipai_reward_log" , xipai_reward_log); + } + } + + /** + * 获取战绩列表 + * @param platform + * @param groupId + * @param limit + * @param num + * @return + */ + public static ITObject getMemberStat(int groupId, int uid, int qid,int partnerId,int limit,int num,int timeType,int beginTime,int endTime) throws Exception{ + + ITObject obj1 = TObject.newInstance(); + + String qid_sql = StringUtil.Empty; + if(qid > 0) { + + GroupMemberBean mng_bean = GroupCache.getMember(groupId, uid); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + int mgn_partner = mng_bean.partnerLev; + int mgn_lev = mng_bean.lev; + if (mgn_lev == 3 && mgn_partner == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + + if (mgn_lev == 3) { + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + List par_list = Utility.getMemberParents(jedis10, groupId, qid, false); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + finally { + jedis10.close(); + } + + } + + qid_sql = " AND A.uid="+qid; + } + else if(partnerId > 0) { + + String ugm_key = GroupMemberCache.genKey(groupId, partnerId); + String lev = Redis.use("group1_db10").hget(ugm_key, "lev"); + boolean mgr = StringUtil.isNotEmpty(lev) && Integer.parseInt(lev) < 3; + + String p = Utility.getChildParentSql(groupId, partnerId, true); + if(mgr) { + p = p + ",0"; + } + + qid_sql = String.format(" AND (A.parentId in(%s) or A.uid = %s)", p, partnerId); + } + + if(timeType == 0) { + + beginTime = DateUtils.getBeginDay() ; + endTime =DateUtils.getEndDay(); + }else if(timeType == 1) { + + beginTime = DateUtils.getBeginDay() - 3600 * 24 ; + endTime = DateUtils.getBeginDay(); + } + else if(timeType == 2) { + + beginTime = DateUtils.getBeginDay() - 3600 * 48 ; + endTime = DateUtils.getBeginDay() - 3600 * 24; + } + + String sql = String.format("SELECT IFNULL(SUM(B.win), 0) AS win,IFNULL(SUM(B.round), 0) AS round,IFNULL(SUM(B.score), 0) AS score,A.uid,A.hp,A.lev,A.partnerLev " + + "FROM group_member AS A " + + "LEFT JOIN group_member_log AS B ON A.groupId = B.groupId and A.uid = B.uid AND B.time >=%s AND B.time <%s " + + "WHERE A.groupId = %s %s " + + "GROUP BY A.uid " + + "ORDER BY round DESC " + + "limit %s,%s", + beginTime,endTime,groupId,qid_sql,limit,num); + + ITArray arr = DataBase.use().executeQueryByTArray(sql); + if (arr.size() > 0) { + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + for (int i = 0; i < arr.size(); ++i) { + + ITObject obj = arr.getTObject(i); + AccountBean acc = AccountCache.getAccount(obj.getInt("uid")); + if (acc != null) { + obj.putString("nick", acc.nick); + } else { + obj.putString("nick", StringUtil.Empty); + } + } + } finally { + jedis9.close(); + } + } + obj1.putTArray("members", arr); + obj1.putInt("limit", limit); + + return obj1; + } + + /** + * 获取战绩列表 + * @param platform + * @param groupId + * @param limit + * @param num + * @return + */ + public static ITObject getRecords(String platform,int groupId, + int limit,int num, + int qid,int uid,int includeMembers, + int timeType,int beginTime,int endTime) throws Exception{ + + boolean find = true; + boolean mgr = true; + boolean tagIsPartner = false; + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + + GroupMemberBean mng = GroupCache.getMember(groupId, uid); + int _lev = mng.lev; + mgr = _lev < 3; + + if(qid>0) { + + GroupMemberBean tag = GroupCache.getMember(groupId, qid); + if (tag!=null) { + + int parentId = tag.parentId; + if(!mgr) { + + if(parentId==0) { + + find = false; + }else { + + if(tag.partnerLev > 0) { + tagIsPartner= true; + } + List par_list = Utility.getMemberParents(jedis10, groupId, includeMembers == 0 ? parentId : qid, true); + if(par_list==null || !par_list.contains(uid)) { + + find = false; + } + } + } + }else { + + find = false; + } + } + }finally { + jedis10.close(); + } + + + ITArray militaryList = TArray.newInstance(); + if(find) { + + String where = StringUtil.Empty; + if(timeType == 0) { + + where = String.format("gid=%s and time>=%s and time<=%s",groupId,beginTime,endTime); + } + else if(timeType == 1) { + + beginTime = DateUtils.getBeginMonth(); + where = String.format("gid=%s and time>=%s",groupId,beginTime); + } + else if(timeType == 2) { + + beginTime = DateUtils.getBeginLastMonth(); + endTime = DateUtils.getBeginMonth(); + where = String.format("gid=%s and time>=%s and time<=%s",groupId,beginTime,endTime); + } + else { + beginTime = DateUtils.getBeginDay() - 259200; + endTime = DateUtils.getEndDay(); + where = String.format("gid=%s and time>=%s and time<=%s",groupId,beginTime,endTime); + } + + if(qid==0) { + if (!mgr) + { + String p = Utility.getChildParentSql(groupId, uid, true); + where += String.format(" and (parentId in(%s) or uid = %s)", p, uid); + } + }else { + + if(includeMembers == 1) { + + String p; + if(tagIsPartner) { + p = Utility.getChildParentSql(groupId, qid, true); + where += String.format(" and (parentId in(%s) or uid = %s)", p, qid); + } + else { + where += " and uid="+qid; + } + } + else { + where += " and uid="+qid; + } + } + + + + String sql = String.format("select rec_key from room_rec_log where %s ORDER BY time desc limit %s,%s", + where,limit,num); + + + ITArray list = DataBase.use().executeQueryByTArray(sql); + + if(list.size()>0) { + Jedis jedis5 = Redis.use("group1_db5").getJedis(); + try { + for(int i=0;i=%s", + groupId,roomid,time3last); + ITArray list = DataBase.use().executeQueryByTArray(sql); + if(list.size()==0)return null; + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean mng = GroupCache.getMember(groupId, uid); + int _lev = mng.lev; + boolean mgr = _lev < 3; + if(!mgr) { + for(int i=0;i par_list = Utility.getMemberParents(jedis10,groupId, par, true); + if(par_list!=null&&par_list.contains(uid)) { + find = true; + break; + } + } + }else { + find = true; + } + }finally { + jedis10.close(); + } + if(!find)return null; + + ITArray militaryList = TArray.newInstance(); + Jedis jedis5 = Redis.use("group1_db5").getJedis(); + try { + for(int i = 0; i < list.size(); i++) { + String rec_key = list.getTObject(i).getString("rec_key"); + ITObject data = Utility.getMilitaryList(jedis5,rec_key, platform); + boolean flag = true; + for(int j = 0; j < militaryList.size(); j++) { + ITObject temp = militaryList.getTObject(j); + String temp_create_time = temp.getString("create_time"); + String create_time = data.getString("create_time"); + String temp_rec_key = temp.getString("military_id"); + + if (temp_rec_key.equals(rec_key) && create_time.equals(temp_create_time)) + { + flag = false; + break; + } + } + + if (flag) + { + militaryList.addTObject(data); + } + } + + return militaryList; + }finally { + jedis5.close(); + } + } + + + /** + * + * @param groupId + * @param uid + * @param limit + * @param num + * @param type 1上分 2下分 3合伙人上分 4合伙人下分 + * @return + * @throws Exception + */ + public static final ITObject getHpLogMgr(int groupId,int uid,int limit,int num,int type,int qid,String tagName) throws Exception { + GroupMemberBean mng = GroupCache.getMember(groupId, uid); + int beginDay = DateUtils.getBeginDay(); + int beginTime = beginDay - 9 * 24 *3600; + if (mng.lev >= 3) + { + beginTime = beginDay - 2 * 24 *3600; + } + + long endTime = DateUtils.getEndDay(); + + int reason = MGRLOG_TYPE[type-1]; + String mgr_sql = StringUtil.Empty; + String qid_sql = StringUtil.Empty; + + ITArray arr = null; + + if(type > 2) { + + mgr_sql = "and A.mgr_id="+uid; + + if(StringUtil.isNotEmpty(tagName) || qid > 0) { + + if(qid > 0) { + + qid_sql = "and A.uid="+qid; + + String where_sql = String.format("WHERE A.gid = %s " + + "and A.reason = %s " + + "and A.time>=%s " + + "and A.time <=%s %s %s",groupId,reason,beginTime,endTime,mgr_sql,qid_sql); + + String sql = String.format("SELECT uid,mgr_id,hp,cur_hp,time FROM group_hp_log as A %s ORDER BY time desc limit %s,%s",where_sql,limit,num); + arr =DataBase.use().executeQueryByTArray(sql); + } + + if(StringUtil.isNotEmpty(tagName)) { + + String where_sql = String.format("WHERE A.gid = %s " + + "and A.reason = %s " + + "and A.time>=%s " + + "and A.time <=%s %s %s",groupId,reason,beginTime,endTime,mgr_sql,qid_sql); + + String sql = String.format("SELECT A.uid,A.mgr_id,A.hp,A.cur_hp,A.time " + + "FROM group_hp_log as A " + + "RIGHT JOIN account as B " + + "ON A.uid = B.id and B.nick like '%%%s%%' " + + "%s ORDER BY time desc " + + "limit %s,%s",tagName,where_sql,limit,num); + + ITArray temp = DataBase.use().executeQueryByTArray(sql); + if(temp.size() > 0) { + if(arr == null) { + arr = temp; + } + else { + + for(int i = 0; i 0 && mo.getInt("uid") == qid) { + continue; + } + arr.addTObject(temp.getTObject(i)); + } + } + } + } + } + else { + String where_sql = String.format("WHERE A.gid = %s " + + "and A.reason = %s " + + "and A.time>=%s " + + "and A.time <=%s %s %s",groupId,reason,beginTime,endTime,mgr_sql,qid_sql); + + String sql = String.format("SELECT uid,mgr_id,hp,cur_hp,time FROM group_hp_log as A %s ORDER BY time desc limit %s,%s",where_sql,limit,num); + arr =DataBase.use().executeQueryByTArray(sql); + } + } + else { + + if(StringUtil.isNotEmpty(tagName) || qid > 0) { + + if(qid > 0) { + qid_sql = "and (A.uid="+qid; + qid_sql +=" or A.mgr_id="+qid + ")"; + + String where_sql = String.format("WHERE A.gid = %s " + + "and A.reason = %s " + + "and A.time>=%s " + + "and A.time <=%s %s %s",groupId,reason,beginTime,endTime,mgr_sql,qid_sql); + + String sql = String.format("SELECT uid,mgr_id,hp,cur_hp,time FROM group_hp_log as A %s ORDER BY time desc limit %s,%s",where_sql,limit,num); + arr =DataBase.use().executeQueryByTArray(sql); + } + + if(StringUtil.isNotEmpty(tagName)) { + + String where_sql = String.format("WHERE A.gid = %s " + + "and A.reason = %s " + + "and A.time>=%s " + + "and A.time <=%s %s %s",groupId,reason,beginTime,endTime,mgr_sql,qid_sql); + + String sql = String.format("SELECT A.uid,A.mgr_id,A.hp,A.cur_hp,A.time " + + "FROM group_hp_log as A " + + "RIGHT JOIN account as B " + + "ON (A.uid = B.id OR A.mgr_id = B.id) and B.nick like '%%%s%%' " + + "%s ORDER BY time desc " + + "limit %s,%s",tagName,where_sql,limit,num); + + ITArray temp = DataBase.use().executeQueryByTArray(sql); + if(temp.size() > 0) { + if(arr == null) { + arr = temp; + } + else { + + for(int i = 0; i 0 && mo.getInt("uid") == qid) { + continue; + } + arr.addTObject(temp.getTObject(i)); + } + } + } + + } + }else { + + String where_sql = String.format("WHERE A.gid = %s " + + "and A.reason = %s " + + "and A.time>=%s " + + "and A.time <=%s %s %s",groupId,reason,beginTime,endTime,mgr_sql,qid_sql); + + String sql = String.format("SELECT uid,mgr_id,hp,cur_hp,time FROM group_hp_log as A %s ORDER BY time desc limit %s,%s",where_sql,limit,num); + arr =DataBase.use().executeQueryByTArray(sql); + } + + } + + ITObject resData = TObject.newInstance(); + resData.putInt("limit", limit); + + if(arr != null) { + + for(int i=0;i=%s and time <=%s",groupId,ConsumeCode.HP_PUMP,beginTime,endTime); + + String sql = String.format("SELECT uid,hp,roomid,pid,time FROM group_hp_log %s ORDER BY time desc limit %s,%s",where_sql,limit,num); + ITArray arr =DataBase.use().executeQueryByTArray(sql); + for(int i=0;i %s",groupId,tagId,reason_sql,time); + String sql = String.format("SELECT mgr_id,hp,reason,cur_hp,time,info,roomid " + + "FROM group_hp_log %s " + + "ORDER BY time desc " + + "limit %s,%s", + where_sql,limit,num); + log.info("jefe sql:"+sql); + ITArray arr =DataBase.use().executeQueryByTArray(sql); + for(int i=0;i0) { + AccountBean acc = AccountCache.getAccount(obj.getInt("mgr_id")); + obj.putString("m_nick", acc.nick); + } + } + ITObject resData = TObject.newInstance(); + resData.putInt("limit", limit); + resData.putTArray("hp_logs", arr); + return resData; + } + + /** + * 体力值详情 + * @param groupId + * @param tagId + * @param limit + * @param num + * @param choose + * @return + */ + public static final ITObject getHpLogDetailInfo(int groupId,int tagId,String roomId,int time) throws Exception{ + String reason_sql = StringUtil.Empty; + reason_sql += ConsumeCode.HP_CLEARING+ ","; + reason_sql += ConsumeCode.HP_PUMP+ ","; + reason_sql += ConsumeCode.HP_XIPAI_PUMP+ ","; + reason_sql += ConsumeCode.HP_ANCHOU_PUMP + ","; + if(StringUtil.isNotEmpty(reason_sql)) { + reason_sql = reason_sql.substring(0, reason_sql.length()-1); + }else { + reason_sql = "0"; + } + + String where_sql = String.format("WHERE gid = %s and uid =%s and reason in(%s) and roomId ='%s' and time >= %s and time <= %s",groupId,tagId,reason_sql,roomId,time - 7200,time + 3600); + String sql = String.format("SELECT mgr_id,hp,reason,cur_hp,time,info,roomid " + + "FROM group_hp_log %s " + + "ORDER BY time desc", + where_sql); + try { + ITArray arr =DataBase.use().executeQueryByTArray(sql); + for(int i=0;i0) { + AccountBean acc = AccountCache.getAccount(obj.getInt("mgr_id")); + obj.putString("m_nick", acc.nick); + } + } + ITObject resData = TObject.newInstance(); + resData.putTArray("hp_logs", arr); + return resData; + } + catch (Exception e) + { + log.info("sql error:"+sql); + log.error(e); + } + + ITObject resData = TObject.newInstance(); + return resData; + } + + private static final int _getCountValue(Jedis jedis9,String key,int beginTime,int endTime) { + String str = null; + int tem = beginTime; + int tem_day = (endTime - beginTime) /86400; + int count =0; + for(int k=0;k=%s and time <=%s and uid=%s and hp != 0", + groupId,ConsumeCode.HP_PARTNER_REWARD,ConsumeCode.HP_PARTNER_XIPAI_REWARD,ConsumeCode.HP_PARTNER_ANCHOU_REWARD,beginTime,endTime,tagId); + int total_num = 0; + int total_hp = 0; + if(limit==0) { + String count_sql = String.format("SELECT IFNULL(SUM(round),0) AS num,IFNULL(SUM(hp),0) AS total_hp FROM group_hp_log %s",where_sql); + ITArray arr =DataBase.use().executeQueryByTArray(count_sql); + if(arr.size()>0) { + ITObject obj = arr.getTObject(0); + total_num = obj.getDouble("num").intValue(); + total_hp = obj.getDouble("total_hp").intValue(); + } + } + + String sql = String.format("SELECT hp,pid,roomid,time,round,reason,info FROM group_hp_log %s ORDER BY time desc limit %s,%s",where_sql,limit,num); + ITArray arr =DataBase.use().executeQueryByTArray(sql); + ITObject resData = TObject.newInstance(); + resData.putInt("limit", limit); + resData.putTArray("reward_logs", arr); + resData.putInt("total_num", total_num); + resData.putInt("total_hp", total_hp); + return resData; + } + + /** + * 奖励统计 + * @param groupId + * @param pid + * @param beginTime + * @param endTime + * @return + */ + public static final ITObject getRewardLogCount(int groupId,int pid,int beginTime,int endTime) { + String p_key = pid>0?(":p"+pid):StringUtil.Empty; + String valid_key = String.format("g%s:valid_room%s",groupId,p_key); + String round_key = String.format("g%s:round%s",groupId,p_key); + String hp_cost_key = String.format("g%s:hp_cost%s",groupId,p_key); + String hp_reward_key = String.format("g%s:hp_reward%s",groupId,p_key); + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + int v_round = _getCountValue(jedis9,valid_key,beginTime,endTime); + int round = _getCountValue(jedis9,round_key,beginTime,endTime); + int hp_cost = _getCountValue(jedis9,hp_cost_key,beginTime,endTime); + int hp_reward = _getCountValue(jedis9,hp_reward_key,beginTime,endTime); + ITObject resData = TObject.newInstance(); + resData.putInt("v_round", v_round); + resData.putInt("round", round); + resData.putInt("hp_cost", hp_cost); + resData.putInt("gains", hp_cost-hp_reward); + return resData; + }finally { + jedis9.close(); + } + + } + + /** + * 体力值提取记录 + * @param groupId + * @param tagid + * @param limit + * @param num + * @param beginTime + * @param endTime + * @return + * @throws Exception + */ + public static final ITObject getHpLogTakeInfo(int groupId,int uid, int tagId, int limit,int num,int beginTime,int endTime) throws Exception{ + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10.close(); + } + + String where_sql = String.format("WHERE gid = %s and uid=%s and reason = %s and time>=%s and time <=%s",groupId,tagId,ConsumeCode.HP_TAKE_REWARD,beginTime,endTime); + + String sql = String.format("SELECT hp,time FROM group_hp_log %s ORDER BY time desc limit %s,%s",where_sql,limit,num); + ITArray arr =DataBase.use().executeQueryByTArray(sql); + ITObject resData = TObject.newInstance(); + resData.putInt("limit", limit); + resData.putTArray("hp_logs", arr); + return resData; + } + + public static final ITObject getHpLogTakeBankInfo(int groupId,int uid, int tagId,int limit,int num,int beginTime,int endTime) throws Exception{ + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10.close(); + } + + String where_sql = String.format("WHERE gid = %s and uid=%s and (reason = %s or reason = %s) and time>=%s and time <=%s",groupId,tagId,ConsumeCode.HP_TAKE_BANK,ConsumeCode.HP_SAVE_BANK,beginTime,endTime); + + String sql = String.format("SELECT hp,time FROM group_hp_log %s ORDER BY time desc limit %s,%s",where_sql,limit,num); + ITArray arr =DataBase.use().executeQueryByTArray(sql); + ITObject resData = TObject.newInstance(); + resData.putInt("limit", limit); + resData.putTArray("hp_logs", arr); + return resData; + } + + + + /** + * 获取消耗统计 + * @param groupId + * @return + */ + public static final ITArray getCostCount(int groupId, int uid, int beginTime,int endTime) { + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 10, 11); + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + ITArray arr = TArray.newInstance(); + try { + if (uid_bean.lev < 3) + { + for(String pid:pids) { + + ITObject obj = TObject.newInstance(); + + String round_key = String.format("g%s:round:p%s",groupId,pid); + obj.putInt("round", _getCountValue(jedis9,round_key,beginTime,endTime)*100); + + String valid_key = String.format("g%s:valid_room:p%s",groupId,pid); + obj.putInt("valid", _getCountValue(jedis9,valid_key,beginTime,endTime)*100); + + String no_valid_key = String.format("g%s:no_valid_room:p%s",groupId,pid); + obj.putInt("no_valid", _getCountValue(jedis9,no_valid_key,beginTime,endTime)*100); + + String diamo_cost_key = String.format("g%s:diamo_cost:p%s",groupId,pid); + obj.putInt("diamo_cost", _getCountValue(jedis9,diamo_cost_key,beginTime,endTime)*100); + + obj.putInt("pid", Integer.parseInt(pid)); + + arr.addTObject(obj); + } + } + else { + for(String pid:pids) { + + ITObject obj = TObject.newInstance(); + String round_key = String.format("g{%s}:m%s:all_count:p%s", groupId, uid,pid); + int all_round = _getCountValue(jedis9,round_key,beginTime,endTime); + obj.putInt("round", all_round); + + String valid_key = String.format("g{%s}:m%s:valid_round2:p%s", groupId,uid,pid); + int valid = _getCountValue(jedis9,valid_key,beginTime,endTime); + obj.putInt("valid", valid); + + int no_valid_key = all_round - valid; + obj.putInt("no_valid", no_valid_key); + + String diamo_cost_key = String.format("g{%s}:m%s:valid_diamo:p%s", groupId,uid,pid); + obj.putInt("diamo_cost", _getCountValue(jedis9,diamo_cost_key,beginTime,endTime)); + + obj.putInt("pid", Integer.parseInt(pid)); + + arr.addTObject(obj); + } + } + }finally { + jedis9.close(); + } + return arr; + } + + /** + * 获取局数统计 + * @param groupId + * @return + */ + public static final ITArray getRoundCount(int groupId,int pid) { + int bengin = DateUtils.getBeginDay() - 29 *86400; + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + ITArray arr = TArray.newInstance(); + try { + String p_key = pid>0?(":p"+pid):StringUtil.Empty; + for(int i=0;i<30;++i) { + String round_key = String.format("g%s:round%s:d%s",groupId,p_key,bengin); + String r_str = jedis9.get(round_key); + ITObject obj = TObject.newInstance(); + obj.putInt("time", bengin); + int r_num = 0; + if(StringUtil.isNotEmpty(r_str)) { + r_num = Integer.parseInt(r_str); + } + obj.putInt("num", r_num); + arr.addTObject(obj); + bengin +=86400; + } + }finally { + jedis9.close(); + } + return arr; + } + + /** + * 获取体力值消耗统计 + * @param groupId + * @return + */ + public static final ITArray getHpConsumeCount(int groupId,int uid) { + int bengin = DateUtils.getBeginDay() - 2 *86400; + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + ITArray arr = TArray.newInstance(); + try { + String key = String.format("g%s:m%s:consume_hp", groupId,uid); + for(int i=0;i<3;++i) { + String hp_key = String.format("%s:d%s",key,bengin); + String r_str = jedis9.get(hp_key); + ITObject obj = TObject.newInstance(); + obj.putInt("time", bengin); + int r_num = 0; + if(StringUtil.isNotEmpty(r_str)) { + r_num = Integer.parseInt(r_str); + } + obj.putInt("num", r_num); + arr.addTObject(obj); + bengin +=86400; + } + }finally { + jedis9.close(); + } + return arr; + } + + /** + * 获取体力值统计信息 + * @param groupId + * @return + * @throws Exception + */ + public static final ITObject getHpCountInfo(int groupId) throws Exception { + String sql = String.format("SELECT uid FROM group_member WHERE groupId=%s" + + " AND partnerLev >0",groupId); + ITArray list = DataBase.use().executeQueryByTArray(sql); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + int _t_hp = 0; + try { + for(int i=0;i0) t_hp1," + + " (SELECT IFNULL(SUM(ABS(hp)),0) %s AND hp <0) t_hp2", where, where); + ITArray arr = DataBase.use().executeQueryByTArray(count_sql); + ITObject obj1 = TObject.newInstance(); + if (arr.size() > 0) { + ITObject obj = arr.getTObject(0); + obj1.putLong("hp_num1", obj.getDouble("t_hp1").longValue()); + obj1.putLong("hp_num2", obj.getDouble("t_hp2").longValue()); + } else { + obj1.putLong("hp_num1", 0); + obj1.putLong("hp_num2", 0); + } + obj1.putLong("hp_num3", _t_hp); + return obj1; + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/GroupPublisherService.java b/game_web/web_group_robot/src/main/java/com/group/service/GroupPublisherService.java new file mode 100644 index 0000000..a01848d --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/GroupPublisherService.java @@ -0,0 +1,117 @@ +package com.group.service; + +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TObject; +import com.taurus.core.plugin.redis.Redis; + +public class GroupPublisherService { + public static final String CHANNEL_NAME = "mgr_group"; + + private static final String CMD_ADD_ROOM = "add_room"; + private static final String CMD_DEL_ROOM = "del_room"; + private static final String CMD_DEL_PLAY = "del_play"; + private static final String CMD_ADD_PLAY = "add_play"; + private static final String CMD_UPDATE_PLAY = "update_play"; + private static final String CMD_DEL_GROUP = "del_group"; + private static final String CMD_UPDATE_GROUP = "update_group"; + + private static final String CMD_UPDATE_JOINS = "update_joins"; + private static final String CMD_UPDATE_MAIL_TIP = "update_mail_tip"; +// private static final String CMD_UPDATE_MEMBER = "update_member"; + + public static void addRoomEvt(int groupId, String roomid) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putString("roomid", roomid); + data.putString("cmd", CMD_ADD_ROOM); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + public static void delRoomEvt(int groupId, String roomid) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putString("roomid", roomid); + data.putString("cmd", CMD_DEL_ROOM); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + public static void delPlayEvt(int groupId, int pid) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putInt("pid", pid); + data.putString("cmd", CMD_DEL_PLAY); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + public static void addPlayEvt(int groupId, int pid) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putInt("pid", pid); + data.putString("cmd", CMD_ADD_PLAY); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + public static void updatePlayEvt(int groupId, int pid) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putInt("pid", pid); + data.putString("cmd", CMD_UPDATE_PLAY); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + public static void delGroupEvt(int groupId) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putString("cmd", CMD_DEL_GROUP); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + public static void updateGroupEvt(int groupId, String name, boolean ban,String notice,int option,int showNum) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putString("cmd", CMD_UPDATE_GROUP); + data.putString("name", name); + data.putBoolean("ban", ban); + data.putString("notice", notice); + data.putInt("option", option); + data.putInt("show_num", showNum); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + public static void updateJoinsEvt(int groupId, int joins) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putInt("joins", joins); + data.putString("cmd", CMD_UPDATE_JOINS); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + public static void updateMailTipEvt(int groupId, int uid) { + ITObject data = TObject.newInstance(); + data.putInt("gid", groupId); + data.putInt("uid", uid); + data.putString("cmd", CMD_UPDATE_MAIL_TIP); + Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } + + /** + * 1 hp 2 等级 3 合伙人等级 + * + * @param groupId + * @param uid + * @param type + * @param value + */ + public static void updateMemberEvt(int groupId, int uid, int type, int value) { +// if (type == 1) { +// return; +// } +// ITObject data = TObject.newInstance(); +// data.putInt("gid", groupId); +// data.putInt("uid", uid); +// data.putInt("type", type); +// data.putInt("value", value); +// data.putString("cmd", CMD_UPDATE_MEMBER); +// Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson()); + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/GroupRoomService.java b/game_web/web_group_robot/src/main/java/com/group/service/GroupRoomService.java new file mode 100644 index 0000000..a6daccd --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/GroupRoomService.java @@ -0,0 +1,1302 @@ +package com.group.service; + +import java.util.*; +import java.util.concurrent.CompletableFuture; + +import com.data.bean.*; +import com.data.cache.AccountCache; +import com.data.cache.BaseCache; +import com.data.cache.GameCache; +import com.data.cache.GroupCache; +import com.data.cache.GroupMemberCache; +import com.data.util.ErrorCode; +import com.data.util.EventType; +import com.data.util.Utility; +import com.taurus.core.entity.ITArray; +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TArray; +import com.taurus.core.entity.TObject; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.plugin.redis.RedisLock; +import com.taurus.core.util.ICallback; +import com.taurus.core.util.Logger; +import com.taurus.core.util.StringUtil; +import com.taurus.web.WebException; + +import jdk.nashorn.internal.objects.Global; +import redis.clients.jedis.Jedis; + +import static java.lang.Thread.sleep; + +public class GroupRoomService { + private static final Logger log = Logger.getLogger(GroupRoomService.class); + + /**解散时间*/ + private static final String[] DISMISS_TIME = {"30","60","90","180"}; + /**踢出时间*/ + private static final String[] KICK_TIME = {"30","60","120","180"}; + + public static final String _getSvr(Jedis jedis0,GameBean gb){ + String svr=null; + Set gamesvrs = gb.svr_list; + Integer conns = null; + for(String str : gamesvrs) { + String currConns = jedis0.hget(str, "conns"); + if (conns == null && currConns != null || (conns != null && currConns != null && Integer.parseInt(currConns) < conns)) { + conns = Integer.parseInt(currConns); + svr = str; + } + } + return svr; + } + + + + private final static String createGroupRoom(String session, int groupId, int pid) throws Exception { + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb==null) { + throw new WebException(ErrorCode.GROUP_PLAY_EXIST); + } + + int gameId = gpb.gameId; + GameBean gb = GameCache.getGame(gameId); + String svr = _getSvr(jedis0,gb); + if (svr == null) { + log.error("createGroupRoom gameId:" + gameId + " svr:"+svr); + throw new WebException(ErrorCode.NO_SERVICE); + } + + String grooms_key = GroupCache.genRoomsKey(groupId); + GroupBean group = GroupCache.getGroup(groupId); + ITObject configData = TObject.newFromJsonData(gpb.config); + int maxPlayers = gpb.maxPlayers; + + int opt = configData.getInt("opt"); + + String owner_session = AccountCache.genKey(group.owner); + Integer pay = gb.pay.get("pay"+opt+"_"+maxPlayers); + if(pay == null) { + log.warn("pay no set!"); + throw new WebException(ErrorCode._FAILED); + } + + if(pay > 0) { + ArrayList result_list = Utility.payDiamo(jedis0, owner_session,pay); + if(result_list==null) { + throw new WebException(ErrorCode._FAILED); + } + long result = result_list.get(0); + if(result !=0) { + log.error("createGroupRoom groupId:" + groupId + " pid:"+pid + " group.owner:"+group.owner+" no diamo"); + throw new WebException(ErrorCode.NO_DIAMO); + } + long cur_diamo = result_list.get(1); + Utility.payDiamo(EventType.REDIS_EVENT_GROUP_ROOM, group.owner, gameId, pay,(int)cur_diamo, groupId,pid); + } + + int dissolve_opt = group.dissolve_opt; + int kick_opt = group.kick_opt; + + String newRoomId = Redis.use("group1_db1").rpop("free_room"); + Redis.use("group1_db1").lpush("free_room", newRoomId); + String room_key = "room:" + newRoomId; + + long time = System.currentTimeMillis() / 1000; + Map roomMap = new HashMap(); + roomMap.put("id", newRoomId); + roomMap.put("owner", owner_session); + roomMap.put("svr", svr); + roomMap.put("AA", "0"); + roomMap.put("pay", pay+""); + roomMap.put("agent", "1"); + roomMap.put("group", groupId+""); + roomMap.put("gpid", pid+""); + roomMap.put("payer", group.owner+""); + roomMap.put("maxPlayers", maxPlayers + ""); + roomMap.put("times", gb.opt.get(opt)+""); + roomMap.put("opt", opt + ""); + roomMap.put("status", "0"); + roomMap.put("hpOnOff", gpb.hpOnOff+""); + roomMap.put("rewardType", gpb.rewardType+""); + roomMap.put("rewardValueType", gpb.rewardValueType+""); + roomMap.put("xipai_rewardType", gpb.xipai_rewardType+""); + roomMap.put("xipai_rewardValueType", gpb.xipai_rewardValueType+""); + roomMap.put("dismiss_time", DISMISS_TIME[dissolve_opt-1]); + roomMap.put("kick_time", KICK_TIME[kick_opt-1]); + roomMap.put("hp_times",gpb.hp_times+""); + if(gpb.hpOnOff == 1) { + ITObject hpObj = TObject.newFromJsonData(gpb.hpConfig); + if (hpObj.getInt("limitInRoom") != null) { + roomMap.put("limitInRoom", hpObj.getInt("limitInRoom") + ""); + } + configData.putTObject("hpData", hpObj); + } + + configData.del("opt"); + configData.del("AA"); + roomMap.put("options", configData.toJson()); + roomMap.put("game", gameId + ""); + roomMap.put("open", "1"); + roomMap.put("round", "0"); + roomMap.put("create_time", time + ""); + roomMap.put("cache_ver", "1"); + jedis0.hmset(room_key, roomMap); + + /** + * pid open status 剩余空位 + * 11 1 1 00 + */ + + String fake = jedis0.hget(room_key, "fake"); + if (StringUtil.isNotEmpty(fake)) + { + log.info("create room:"+newRoomId + " session:" + session + " fake:" + fake + " pay:"+ pay + " players:" + jedis0.hget(room_key, "players")); + Redis.use().hset(room_key, "status", 3 + ""); + Redis.use().hincrBy(room_key, "cache_ver", 1); + Redis.use().expire(room_key, 20); + } + else { + Redis.use("group1_db11").zadd(grooms_key, pid*10000+1101, room_key); + GroupPublisherService.addRoomEvt(groupId, newRoomId); + } + return room_key; + } finally { + jedis0.close(); + } + + } + + /** + * 检测成员在不在房间里 + * @param groupId + * @param session + * @return + */ + public static final boolean checkRoom(int groupId,int uid) { + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + String session = AccountCache.genKey(uid); + String oldRoom = Utility.getOldRoomV2(jedis0,0,session,uid); + if(StringUtil.isNotEmpty(oldRoom)) { + return true; + } + }finally { + jedis0.close(); + } + return false; + } + + + public static final boolean checkRoom(String room_key,Jedis jedis0) { + RedisLock lock = new RedisLock(room_key, jedis0); + lock.lock(); + try { + String status = jedis0.hget(room_key, "status"); + if (StringUtil.isEmpty(status) || status.equals("2")) { + return false; + } + return true; + }finally { + lock.unlock(false); + } + } + + public static final boolean checkFakeRoom(String room_key,Jedis jedis0) { + RedisLock lock = new RedisLock(room_key, jedis0); + lock.lock(); + try { + String fake = jedis0.hget(room_key, "fake"); + if (!StringUtil.isEmpty(fake)) { + return true; + } + return false; + }finally { + lock.unlock(false); + } + } + + + + private static final ITObject publicJoinRoom(int groupId,String session, String room_key,String platform) throws Exception { + List x_room_list = Redis.use("group1_db0").hmget(room_key, "fake"); + String fake_json = x_room_list.get(0); + if (fake_json != null) + { + log.error("session:"+session + " public join room:"+room_key+" fail, fake != null"); + throw new WebException(ErrorCode.ROOM_CLOSE); + } + + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + RedisLock lock = null; + try { + String finalRoom = room_key; + + boolean enter_old = false; + int uid = AccountCache.getAccount(session).id; + String oldRoom = Utility.getOldRoomV2(jedis0,0,session,uid); + if(StringUtil.isNotEmpty(oldRoom)) { + String group = jedis0.hget(oldRoom, "group"); + if(StringUtil.isEmpty(group) || Integer.parseInt(group)!=groupId) { + throw new WebException(ErrorCode.GROUP_NOT_CURGROUP_ROOM); + } + enter_old = true; + finalRoom = oldRoom; + } + + lock = new RedisLock(session, jedis0); + lock.lock(); + List room_list = jedis0.hmget(finalRoom,"hpOnOff","hp_times","limitInRoom","status","open","svr","game","gpid","group","maxPlayers","AA","opt","players"); + String status = room_list.get(3); + if(StringUtil.isEmpty(status)) { + throw new WebException(ErrorCode.GROUP_ROOM_DEL); + } + int _status = Integer.parseInt(status); + + if (_status == 2 ||_status == 3) { + Utility.delRoomBySession(jedis0, session, finalRoom); + throw new WebException(ErrorCode.GROUP_ROOM_DEL); + } + + + String gm_key = GroupMemberCache.genKey(groupId, uid); + int hp_times = 1; + String group = room_list.get(8); + if(StringUtil.isNotEmpty(group)) { + String hp_times_str = room_list.get(1); + hp_times = Integer.parseInt(group) > 0?Integer.parseInt(hp_times_str):1; + } + int gameId = Integer.parseInt(room_list.get(6)); + int hpOnOff =Integer.parseInt(room_list.get(0)); + GameBean gb = GameCache.getGame(gameId); + String svr = room_list.get(5); + if (svr == null || !jedis0.exists(svr)) { + svr = _getSvr(jedis0,gb); + } + if (svr == null) { + log.error("publicJoinRoom room_key:"+room_key+" gm_key:"+gm_key+" svr:"+svr); + throw new WebException(ErrorCode.NO_SERVICE); + } + jedis0.hset(finalRoom, "svr", svr); + + int gpid = Integer.parseInt(room_list.get(7)); + GroupBean group_bean = GroupCache.getGroup(groupId); + if(!enter_old) { + int _maxPlayers = Integer.parseInt(room_list.get(9)); + String _players = room_list.get(12); + if(StringUtil.isNotEmpty(_players)) { + ITArray arr = TArray.newFromJsonData(_players); + if (arr.size() >= _maxPlayers) + { + boolean flag = true; + for (int i = 0; i < arr.size(); i++) { + int player_id = arr.getInt(i); + if (player_id == uid) + { + flag = false; + } + } + + if (flag) + { + log.info("publicJoinRoom enter group fail, room full:" + gm_key + " room_key:" + room_key); + throw new WebException(ErrorCode.ROOM_CLOSE); + } + } + } + + String open = room_list.get(4); + if ((StringUtil.isEmpty(open) || open.equals("0"))) { + log.info("publicJoinRoom enter group fail, room open close:" + gm_key + " room_key:" + room_key); + throw new WebException(ErrorCode.ROOM_CLOSE); + } + int AA = Integer.parseInt(room_list.get(10)); + if (AA == 1) { + int maxPlayers = Integer.parseInt(room_list.get(9)); + int opt = Integer.parseInt(room_list.get(11)); + + Integer pay = gb.pay.get("pay"+opt+"_"+maxPlayers); + if(pay == null) { + log.warn("pay no set!"); + throw new WebException(ErrorCode._FAILED); + } + pay = (int) Math.ceil((double) pay / maxPlayers); + int result =Utility.checkRoomDiamo(jedis0, session, pay); + if(result!=0) { + log.error("publicJoinRoom groupId:" + groupId + " no diamo"); + throw new WebException(result); + } + } + + + if(group_bean.ban == 1) { + throw new WebException(ErrorCode.GROUP_BAN); + } + GroupPlayBean gpb = GroupCache.getPlay(groupId, gpid); + if(gpb==null || gpb.ban == 1) { + throw new WebException(ErrorCode.GROUP_BAN_PLAY); + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock2 = new RedisLock(gm_key, jedis10); + try { + lock2.lock(); + List list = jedis10.hmget(gm_key, "ban","hp"); + String ban = list.get(0); + if(StringUtil.isNotEmpty(ban)&&ban.equals("1")) { + throw new WebException(ErrorCode.GROUP_MEMBER_BAN); + } + + String ban_key = "ban{" + groupId + "}:" + uid; + Set ban_set = Redis.use("group1_db11").smembers(ban_key); + if(ban_set.size() >0) { + String players = room_list.get(12); + if(StringUtil.isNotEmpty(players)) { + ITArray arr = TArray.newFromJsonData(players); + for(int i=0;i Integer.MAX_VALUE) + { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + if (uid_hp <= 0) + { + throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP); + } + + if(hpOnOff==1) { + String hp = list.get(1); + String limitInRoom = room_list.get(2); + if (Long.parseLong(hp) > Integer.MAX_VALUE) + { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + + boolean pass = Redis.use("group1_db1").sismember("pass_games", gameId+""); + if(!pass&&StringUtil.isNotEmpty(limitInRoom)) { + if(Integer.parseInt(hp)< Integer.parseInt(limitInRoom)) { + throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP); + } + } + } + jedis0.hset(session, "room", finalRoom); + + GroupMemberBean gmb = GroupCache.getMember(groupId, uid); + + + List t_list = Utility.getMemberParents(jedis10,groupId, uid,true); + if(t_list!=null) { + // 奖励还是佣金? + ITArray list1 = TArray.newInstance(); + String p_reward_key = GroupCache.genRewardKey(groupId,gpid); + String p_xipai_reward_key = GroupCache.genXiPaiRewardKey(groupId,gpid); + String p_anchou_reward_key = GroupCache.genAnChouRewardKey(groupId,gpid); + for(Integer par : t_list) { + Double val = jedis10.zscore(p_reward_key, par.toString()); + int r = 0; + if(val != null) { + r = val.intValue(); + } + int x = 0; + int a = 0; + Double xipai_val = jedis10.zscore(p_xipai_reward_key, par.toString()); + Double anchou_val = jedis10.zscore(p_anchou_reward_key,par.toString()); + if(xipai_val != null) { + x = xipai_val.intValue(); + } + if (anchou_val != null){ + a = anchou_val.intValue(); + } + if(r>0 || x>0 || a>0) { + ITObject obj = TObject.newInstance(); + obj.putInt("p", par); + if (r > 0) { + obj.putInt("r", r); + } + if (x > 0) { + obj.putInt("x", x); + } + if (a > 0) { + obj.putInt("a", a); + } + list1.addTObject(obj); + } + } + jedis0.hset(finalRoom, "prs_"+uid, list1.toJson()); + } + }finally { + lock2.unlock(); + } + } + + ITObject resData = TObject.newInstance(); + resData.putString("room_id", finalRoom.replace("room:", "")); + resData.putInt("hp_times", hp_times); + ITObject gameObj = gb.getTObject(); + resData.putTObject("game_info",gameObj); + resData.putInt("status", _status); + List server_ip = jedis0.hmget(svr, "ip", "port", "intranet"); + //resData.putString("server_ip", server_ip.get(0)); + resData.putString("server_ip", server_ip.get(2)); + resData.putString("server_port", server_ip.get(1)); + resData.putInt("groupId", groupId); + resData.putInt("pid", gpid); + resData.putInt("hpOnOff", hpOnOff); + resData.putBoolean("ban_chat1", group_bean.ban_chat1); + resData.putBoolean("ban_chat2", group_bean.ban_chat2); + String lev_str = Redis.use("group1_db10").hget(gm_key, "lev"); + int lev = 3; + if(StringUtil.isNotEmpty(lev_str)) { + lev = Integer.parseInt(lev_str); + } + resData.putInt("lev", lev); + return resData; + } finally { + if (lock != null) + lock.unlock(false); + jedis0.close(); + } + } + + /** + * 加入房间 + * @param groupId + * @param roomid + * @param session + * @param platform + * @return + * @throws Exception + */ + public static ITObject joinRoom(int groupId,String roomid,String session,String platform) throws Exception{ + String grooms_key = GroupCache.genRoomsKey(groupId); + String room_key = "room:"+roomid; + Long tem = Redis.use("group1_db11").zrank(grooms_key, room_key); + if(tem==null) { + throw new WebException(ErrorCode.NO_ROOM_NUM); + } + + List room_list = Redis.use("group1_db0").hmget(room_key, "fake"); + String fake_json = room_list.get(0); + if (fake_json != null) + { + throw new WebException(ErrorCode.ROOM_CLOSE); + } + AccountBean acc = AccountCache.getAccount(session); + List s_list = Redis.use("group1_db0").hmget(session, "regTime"); + String robotInfo = s_list.get(0); + if(StringUtil.isNotEmpty(robotInfo) && robotInfo.equals("9999")) { + log.error("robot:"+acc.id + " match room error"); + throw new WebException(ErrorCode.ROOM_CLOSE); + } + int uid = AccountCache.getAccount(session).id; + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + List t_list = Utility.getMemberParents(jedis10,groupId, uid,true); + jedis10.close(); + + if(t_list!=null) { + // 判断阀值 + for (Integer par : t_list){ + // get aoto_score + String gm_par_key = GroupMemberCache.genKey(groupId, par); + String autoscore1 = Redis.use("group1_db10").hget(gm_par_key, "autoscore"); + Integer autoscore = 0; + if (!StringUtil.isEmpty(autoscore1) ){ + autoscore = Integer.parseInt(autoscore1); + } + + if (autoscore > 0){ + ITObject totalHp = GroupService.getHpTotal(groupId, par, 30); + Long hp = totalHp.getLong("hp"); + if (hp < autoscore){ + throw new WebException(ErrorCode.GROUP_PARTNER_HP_NOT_ENOUGH); + } + } + } + } + + boolean xingyuhao = false; + if (Redis.use("group1_db1").sismember("gods", Integer.toString(uid))) { + xingyuhao = true; + } + + if (xingyuhao) { + boolean isSpecialGods = false; + { + String specail = Redis.use("group1_db1").hget("gods_special", Integer.toString(uid)); + if (StringUtil.isNotEmpty(specail)) { + isSpecialGods = true; + } + } + + { + List player_list = Redis.use("group1_db0").hmget(room_key, "players"); + + String players_json = player_list.get(0); + if (StringUtil.isNotEmpty(players_json)) { + ITArray players = TArray.newFromJsonData(players_json); + for (int i = 0; i < players.size(); i++) { + int player_id = players.getInt(i); + if (player_id == uid) + continue; + + if (Redis.use("group1_db1").sismember("gods", Integer.toString(player_id))) { + boolean isPlayerSpecialGods = false; + String specail = Redis.use("group1_db1").hget("gods_special", Integer.toString(player_id)); + if (StringUtil.isNotEmpty(specail)) { + isPlayerSpecialGods = true; + } + + if (!isSpecialGods && isPlayerSpecialGods) { + + } else { + if (isSpecialGods && isPlayerSpecialGods) + { + + } + else { + log.error("xingyun:" + acc.id + " can't join rooms:" + room_key + " xingyun playerId:" + player_id); + throw new WebException(ErrorCode.GROUP_BAN_DESK); + } + } + } + } + } + } + } + + try { + ITObject resData = publicJoinRoom(groupId,session, room_key,platform); + sendRoboJointData(resData.getString("room_id"),groupId); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + jedis11.zremrangeByScore(grooms_key, 0, 0); + jedis11.close(); + return resData; + }catch (WebException e) { + if(e.getCode() == ErrorCode.GROUP_ROOM_DEL || e.getCode() == ErrorCode.NO_ROOM_NUM) { + Redis.use("group1_db11").zrem(grooms_key, room_key); + } + throw e; + }finally { + + } + } + + /** + * //发起机器人请求 + * @return + */ + public static ITObject sendRoboJointData(String roomid,int groupid){ + System.out.println("sendRoboJointData"); + Jedis js0 = Redis.use("group1_db0").getJedis(); + String robot = js0.hget("room:"+roomid,"robot"); + System.out.println(robot); + String plays = js0.hget("room:"+roomid,"players"); + System.out.println(plays); + if (StringUtil.isEmpty(plays)) { + return null; + } + System.out.println(plays); + ITArray players = TArray.newFromJsonData(plays); + if (players.size()!=1){ + return null; + } + int robotid = players.getInt(0); + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + System.out.println("sendRobotData"); + // 执行任务 + + try { + Thread eventThread = new Thread(() -> { + while (true) { + NetManager.processEvents(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + break; + } catch (Exception e) { + } + } + }, "tstse"); + + eventThread.setDaemon(true); // 设置为守护线程 + eventThread.start(); + // + if(robotid!=0){ + TaurusClient client = new TaurusClient("127.0.0.1:8701", "games", TaurusClient.ConnectionProtocol.Tcp); + client.setSession("abbccccd"); + client.connect(); + sleep(2000); + ITObject params = TObject.newInstance(); + params.putString("roomid",roomid); + params.putInt("groupid",groupid); + params.putInt("robotid",robotid); + System.out.println("ssss"); + System.out.println(client.isConnected()); + Message msg= client.send("225", params, response -> { + System.out.println("abcd"); + + }); + sleep(10000); + eventThread.stop(); + js0.hset("g{330800}:robot",robotid+"", String.valueOf(1)); + } + log.info("sendRoboJointData :"+roomid+"robotid:"+robotid); + }catch (Exception e){ + + }finally { + js0.close(); + } + return "执行结果"; + }); + + + + //client.killConnection(); + return null; + } + + /** + * //发起机器人请求 + * @return + */ + public static ITObject sendRobotData(String roomid,int groupid){ + log.info("=====================sendRobotData :"+roomid+"groupid:"+groupid); + Jedis js1 = Redis.use("group1_db2").getJedis(); + + String flag = js1.get("roomsend"+roomid); + if(flag!=null){ + return null; + } + + + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + // 执行任务 + //Jedis js1 = Redis.use("group1_db2").getJedis(); + js1.set("roomsend"+roomid,1+""); + js1.expire("roomsend"+roomid,5); + try { + Thread eventThread = new Thread(() -> { + while (true) { + NetManager.processEvents(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + break; + } catch (Exception e) { + } + } + }, "tstse"); + + eventThread.setDaemon(true); // 设置为守护线程 + eventThread.start(); + int robotid = 0; + // + Map jsRobot = js1.hgetAll("{robot426149}"); + + for (String key : jsRobot.keySet()) { + if(Integer.parseInt(jsRobot.get(key))==0){ + robotid = Integer.parseInt(key); + } + } + if(robotid!=0){ + TaurusClient client = new TaurusClient("127.0.0.1:8701", "games", TaurusClient.ConnectionProtocol.Tcp); + client.setSession("abbccccd"); + client.connect(); + sleep(2000); + ITObject params = TObject.newInstance(); + params.putString("roomid",roomid); + params.putInt("groupid",groupid); + params.putInt("robotid",robotid); + System.out.println("ssss"); + System.out.println(client.isConnected()); + log.info("=====================sendRobotData发送前 :"+roomid+"robotid:"+robotid); + Message msg= client.send("225", params, response -> { + System.out.println("abcd"); + }); + log.info("=====================sendRobotData发送了 :"+roomid+"robotid:"+robotid); + sleep(10000); + eventThread.stop(); + js1.hset("{robot426149}",robotid+"", String.valueOf(1)); + } + log.info("sendRobotData :"+roomid+"robotid:"+robotid); + }catch (Exception e){ + + }finally { + js1.close(); + + } + return "执行结果"; + }); + + //client.killConnection(); + return null; + } + + + /** + * 匹配房间 + * @param groupId + * @param pid + * @param session + * @param platform + * @return + * @throws Exception + */ + public static ITObject matchRoom(int groupId,int pid,String session,String platform,boolean is_null) throws Exception{ + int min_value = pid*10000 + 1101; + int max_value = pid*10000 + (is_null ? 1101 :9999); + String grooms_key = GroupCache.genRoomsKey(groupId); + ITObject resData = null; + Set rooms = null; + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + Jedis jedis = Redis.use("group1_db11").getJedis(); + try { + rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value); + Set delRooms = new HashSet(); + for (String room : rooms) { + List room_list = Redis.use("group1_db0").hmget(room, "fake"); + + String fake_json = room_list.get(0); + if (fake_json == null) + { + continue; + } + + delRooms.add(room); + } + rooms.removeAll(delRooms); + }finally { + jedis.close(); + } + + + + boolean isWhite = false; + boolean isBlack = false; + boolean xingyuhao = false; + AccountBean acc = AccountCache.getAccount(session); + List s_list = Redis.use("group1_db0").hmget(session, "regTime"); + String robotInfo = s_list.get(0); + if(StringUtil.isNotEmpty(robotInfo) && robotInfo.equals("9999")) { + log.error("robot:"+acc.id + " match room error"); + throw new WebException(ErrorCode.ROOM_CLOSE); + } + int uid = acc.id; + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + List t_list = Utility.getMemberParents(jedis10,groupId, uid,true); + String gm_keyx = GroupMemberCache.genKey(groupId, uid); + String blackx = jedis10.hget(gm_keyx, "black"); + if(StringUtil.isNotEmpty(blackx)&&blackx.equals("2")) { + isWhite = true; + } + if(StringUtil.isNotEmpty(blackx)&&blackx.equals("1")) { + isBlack = true; + } + jedis10.close(); + + if(t_list!=null) { + // 判断阀值 + for (Integer par : t_list){ + // get aoto_score + String gm_par_key = GroupMemberCache.genKey(groupId, par); + String autoscore1 = Redis.use("group1_db10").hget(gm_par_key, "autoscore"); + Integer autoscore = 0; + if (!StringUtil.isEmpty(autoscore1) ){ + autoscore = Integer.parseInt(autoscore1); + } + + if (autoscore > 0){ + ITObject totalHp = GroupService.getHpTotal(groupId, par, 30); + Long hp = totalHp.getLong("hp"); + if (hp < autoscore){ + throw new WebException(ErrorCode.GROUP_PARTNER_HP_NOT_ENOUGH); + } + } + } + } + + if (Redis.use("group1_db1").sismember("gods", Integer.toString(uid))) { + xingyuhao = true; + } + + if (xingyuhao) { + List blackRooms = new ArrayList<>(); + List whiteRooms = new ArrayList<>(); + List genralRooms = new ArrayList<>(); + for (String room : rooms) { + List room_list = Redis.use("group1_db0").hmget(room,"players"); + + String players_json = room_list.get(0); + if (players_json == null) + { + continue; + } + + ITArray players = TArray.newFromJsonData(players_json); + + boolean hasblack = false; + boolean haswhite = false; + for (int i = 0; i < players.size(); i++) { + int player_id = players.getInt(i); + if (player_id == uid) + continue; + if (Redis.use("group1_db1").sismember("gods", Integer.toString(player_id))) { + haswhite = true; + } + String gm_key = GroupMemberCache.genKey(groupId, player_id); + String black = Redis.use("group1_db10").hget(gm_key, "black"); + if(StringUtil.isNotEmpty(black)&&black.equals("2")) { + haswhite = true; + } + if(StringUtil.isNotEmpty(black)&&black.equals("1")) { + hasblack = true; + } + } + + if (haswhite) + { + whiteRooms.add(room); + } + if (hasblack) + { + blackRooms.add(room); + } + if (haswhite == false && hasblack == false){ + genralRooms.add(room); + } + } + + if (blackRooms.size() == 0) + { + blackRooms.addAll(genralRooms); + //if (blackRooms.size() == 0) + //{ + // blackRooms.addAll(whiteRooms); + //} + } + + if (blackRooms.size() > 0) + { + Collections.shuffle(blackRooms); + + for (String room : blackRooms) { + try { + resData = publicJoinRoom(groupId,session, room,platform); + break; + }catch (WebException e) { + int code = e.getCode(); + if(code == ErrorCode.GROUP_ROOM_DEL || code == ErrorCode.NO_ROOM_NUM) { + Redis.use("group1_db11").zrem(grooms_key, room); + }else if(code == ErrorCode.NO_SERVICE ||code == ErrorCode.GROUP_BAN || + code == ErrorCode.GROUP_LIMIT_NO_HP || code == ErrorCode.GROUP_MEMBER_BAN || code == ErrorCode.GROUP_BAN_PLAY) { + throw e; + } + } + } + } + } + else if (isWhite) { + List blackRooms = new ArrayList<>(); + List whiteRooms = new ArrayList<>(); + List genralRooms = new ArrayList<>(); + for (String room : rooms) { + List room_list = Redis.use("group1_db0").hmget(room,"players"); + + String players_json = room_list.get(0); + if (players_json == null) + { + continue; + } + + ITArray players = TArray.newFromJsonData(players_json); + + boolean hasblack = false; + boolean haswhite = false; + for (int i = 0; i < players.size(); i++) { + int player_id = players.getInt(i); + if (Redis.use("group1_db1").sismember("gods", Integer.toString(player_id))) { + haswhite = true; + } + String gm_key = GroupMemberCache.genKey(groupId, player_id); + String black = Redis.use("group1_db10").hget(gm_key, "black"); + if(StringUtil.isNotEmpty(black)&&black.equals("2")) { + haswhite = true; + } + if(StringUtil.isNotEmpty(black)&&black.equals("1")) { + hasblack = true; + } + } + + if (haswhite) + { + whiteRooms.add(room); + } + if (hasblack) + { + blackRooms.add(room); + } + if (hasblack == false && haswhite == false){ + genralRooms.add(room); + } + } + + if (blackRooms.size() == 0) + { + blackRooms.addAll(genralRooms); + if (blackRooms.size() == 0) + { + blackRooms.addAll(whiteRooms); + } + } + + if (blackRooms.size() > 0) + { + Collections.shuffle(blackRooms); + + for (String room : blackRooms) { + try { + resData = publicJoinRoom(groupId,session, room,platform); + break; + }catch (WebException e) { + int code = e.getCode(); + if(code == ErrorCode.GROUP_ROOM_DEL || code == ErrorCode.NO_ROOM_NUM) { + Redis.use("group1_db11").zrem(grooms_key, room); + }else if(code == ErrorCode.NO_SERVICE ||code == ErrorCode.GROUP_BAN || + code == ErrorCode.GROUP_LIMIT_NO_HP || code == ErrorCode.GROUP_MEMBER_BAN || code == ErrorCode.GROUP_BAN_PLAY) { + throw e; + } + } + } + } + else { + for (String room : rooms) { + try { + resData = publicJoinRoom(groupId,session, room,platform); + break; + }catch (WebException e) { + int code = e.getCode(); + if(code == ErrorCode.GROUP_ROOM_DEL || code == ErrorCode.NO_ROOM_NUM) { + Redis.use("group1_db11").zrem(grooms_key, room); + }else if(code == ErrorCode.NO_SERVICE ||code == ErrorCode.GROUP_BAN || + code == ErrorCode.GROUP_LIMIT_NO_HP || code == ErrorCode.GROUP_MEMBER_BAN || code == ErrorCode.GROUP_BAN_PLAY) { + throw e; + } + } + } + } + } + else if (isBlack) + { + List blackRooms = new ArrayList<>(); + List whiteRooms = new ArrayList<>(); + List genralRooms = new ArrayList<>(); + for (String room : rooms) { + List room_list = Redis.use("group1_db0").hmget(room,"players"); + + String players_json = room_list.get(0); + if (players_json == null) + { + continue; + } + + ITArray players = TArray.newFromJsonData(players_json); + + boolean hasblack = false; + boolean haswhite = false; + for (int i = 0; i < players.size(); i++) { + int player_id = players.getInt(i); + if (Redis.use("group1_db1").sismember("gods", Integer.toString(player_id))) { + haswhite = true; + } + String gm_key = GroupMemberCache.genKey(groupId, player_id); + String black = Redis.use("group1_db10").hget(gm_key, "black"); + if(StringUtil.isNotEmpty(black)&&black.equals("1")) { + hasblack = true; + } + if(StringUtil.isNotEmpty(black)&&black.equals("2")) { + haswhite = true; + } + } + + if (haswhite) + { + whiteRooms.add(room); + } + if (hasblack) + { + blackRooms.add(room); + } + if (haswhite == false && hasblack == false){ + genralRooms.add(room); + } + } + + if (whiteRooms.size() == 0) + { + whiteRooms.addAll(genralRooms); + if (whiteRooms.size() == 0) + { + whiteRooms.addAll(blackRooms); + } + } + + if (whiteRooms.size() > 0) + { + Collections.shuffle(whiteRooms); + + for (String room : whiteRooms) { + try { + resData = publicJoinRoom(groupId,session, room,platform); + break; + }catch (WebException e) { + int code = e.getCode(); + if(code == ErrorCode.GROUP_ROOM_DEL || code == ErrorCode.NO_ROOM_NUM) { + Redis.use("group1_db11").zrem(grooms_key, room); + }else if(code == ErrorCode.NO_SERVICE ||code == ErrorCode.GROUP_BAN || + code == ErrorCode.GROUP_LIMIT_NO_HP || code == ErrorCode.GROUP_MEMBER_BAN || code == ErrorCode.GROUP_BAN_PLAY) { + throw e; + } + } + } + } + else { + for (String room : rooms) { + try { + resData = publicJoinRoom(groupId,session, room,platform); + break; + }catch (WebException e) { + int code = e.getCode(); + if(code == ErrorCode.GROUP_ROOM_DEL || code == ErrorCode.NO_ROOM_NUM) { + Redis.use("group1_db11").zrem(grooms_key, room); + }else if(code == ErrorCode.NO_SERVICE ||code == ErrorCode.GROUP_BAN || + code == ErrorCode.GROUP_LIMIT_NO_HP || code == ErrorCode.GROUP_MEMBER_BAN || code == ErrorCode.GROUP_BAN_PLAY) { + throw e; + } + } + } + } + } + else + { + List blackRooms = new ArrayList<>(); + List whiteRooms = new ArrayList<>(); + List genralRooms = new ArrayList<>(); + for (String room : rooms) { + List room_list = Redis.use("group1_db0").hmget(room,"players"); + + String players_json = room_list.get(0); + if (players_json == null) + { + continue; + } + + ITArray players = TArray.newFromJsonData(players_json); + + boolean hasblack = false; + boolean haswhite = false; + for (int i = 0; i < players.size(); i++) { + int player_id = players.getInt(i); + if (Redis.use("group1_db1").sismember("gods", Integer.toString(player_id))) { + haswhite = true; + } + String gm_key = GroupMemberCache.genKey(groupId, player_id); + String black = Redis.use("group1_db10").hget(gm_key, "black"); + if(StringUtil.isNotEmpty(black)&&black.equals("1")) { + hasblack = true; + } + if(StringUtil.isNotEmpty(black)&&black.equals("2")) { + haswhite = true; + } + } + + if (haswhite) + { + whiteRooms.add(room); + } + if (hasblack) + { + blackRooms.add(room); + } + if (hasblack == false && haswhite == false){ + genralRooms.add(room); + } + } + + if (genralRooms.size() == 0) + { + genralRooms.addAll(blackRooms); + if (genralRooms.size() == 0) + { + genralRooms.addAll(whiteRooms); + } + } + + if (genralRooms.size() > 0) + { + Collections.shuffle(genralRooms); + + for (String room : genralRooms) { + try { + resData = publicJoinRoom(groupId,session, room,platform); + break; + }catch (WebException e) { + int code = e.getCode(); + if(code == ErrorCode.GROUP_ROOM_DEL || code == ErrorCode.NO_ROOM_NUM) { + Redis.use("group1_db11").zrem(grooms_key, room); + }else if(code == ErrorCode.NO_SERVICE ||code == ErrorCode.GROUP_BAN || + code == ErrorCode.GROUP_LIMIT_NO_HP || code == ErrorCode.GROUP_MEMBER_BAN || code == ErrorCode.GROUP_BAN_PLAY) { + throw e; + } + } + } + } + else { + for (String room : rooms) { + try { + resData = publicJoinRoom(groupId,session, room,platform); + break; + }catch (WebException e) { + int code = e.getCode(); + if(code == ErrorCode.GROUP_ROOM_DEL || code == ErrorCode.NO_ROOM_NUM) { + Redis.use("group1_db11").zrem(grooms_key, room); + }else if(code == ErrorCode.NO_SERVICE ||code == ErrorCode.GROUP_BAN || + code == ErrorCode.GROUP_LIMIT_NO_HP || code == ErrorCode.GROUP_MEMBER_BAN || code == ErrorCode.GROUP_BAN_PLAY) { + throw e; + } + } + } + } + } + + + if(resData == null) { + String key = createGroupRoom(session, groupId, pid); + resData = publicJoinRoom(groupId,session, key,platform); + } + + System.out.println("resData:"+resData); + String roomid = resData.getString("room_id"); + String playersStr = jedis0.hget("room:" + roomid, "players"); + //String players = playersStr.substring(1, playersStr.length() - 1); + ITArray players = TArray.newFromJsonData(playersStr); + System.out.println("players:"+playersStr); + if (players.size() ==2 ) { + System.out.println("******************房间是2个人空的:"+roomid); + sendRoboJointData(roomid, groupId); + }else { + System.out.println("******************房间是有人的:"+roomid); + if (Integer.parseInt(players.get(0).toString())!=acc.id){ + sendRoboJointData(roomid, groupId); + }else{ + sendRobotData(roomid,groupId); + } + + } + + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + try { + jedis11.zremrangeByScore(grooms_key, 0, 0); + }finally { + jedis0.close(); + jedis11.close(); + } + return resData; + } + + /** + * 删除房间 + * @param groupId + * @param roomId + * @return + * @throws Exception + */ + public static final ITObject delRoom(int groupId,String roomId) throws Exception { + String tag_key = "room:" + roomId; + Jedis jedis0 = Redis.use("group1_db0").getJedis(); +// String svr = StringUtil.Empty; + + RedisLock lock = new RedisLock(tag_key, jedis0); + try { + lock.lock(); + List list = jedis0.hmget(tag_key, "AA", "payer", "pay", "group","game","status","gpid", "fake", "players"); + String status = list.get(5); + if(StringUtil.isEmpty(status)) { + throw new WebException(ErrorCode.NO_ROOM_NUM); + } + int _status = Integer.parseInt(status); + if(_status == 2 || _status == 3) { + throw new WebException(ErrorCode.GROUP_ROOM_DEL); + } + String group = list.get(3); + int _gid = 0; + if(StringUtil.isNotEmpty(group)) { + _gid = Integer.parseInt(group); + } + + String strGpid = list.get(6); + int _gpid = 0; + if(StringUtil.isNotEmpty(strGpid)) { + _gpid = Integer.parseInt(strGpid); + } + if(_gid !=groupId) { + throw new WebException(ErrorCode.GROUP_NOT_CURGROUP_ROOM); + } + String strFake = list.get(7); + if(_status==0) { + if (strFake == null) + { + int gameId = Integer.parseInt(list.get(4)); + boolean pay_AA = Integer.parseInt(list.get(0)) == 1; + if (!pay_AA) { + int payer = Integer.parseInt(list.get(1)); + int pay = Integer.parseInt(list.get(2)); + Utility.payDiamo(EventType.REDIS_EVENT_BACK_PAY, payer, gameId, pay, groupId,_gpid); + } + } + } + if (strFake != null) + { + try { + ITArray players = TArray.newFromJsonData(list.get(8)); + for (int i = 0; i < players.size(); i++) { + int player_id = players.getInt(i); + Redis.use("group1_db1").srem("used_robot", Integer.toString(player_id)); + //Redis.use("group1_db1").sadd("free_robot", Integer.toString(player_id)); + + } + } + catch(Exception e) + { + + } + } + jedis0.hset(tag_key, "status", "2"); + BaseCache.updateCacheVer(jedis0, tag_key); + GroupPublisherService.delRoomEvt(groupId, roomId); +// svr = jedis0.hget(tag_key, "svr"); +// +// List server_ip = Redis.use("group1_db0").hmget(svr, "ip", "port"); +// String ip = server_ip.get(0); +// if(StringUtil.isEmpty(ip)) { +// throw new WebException(ErrorCode.NO_SERVICE); +// } +// String port =server_ip.get(1); + ITObject obj = TObject.newInstance(); +// obj.putString("ip", ip); +// obj.putInt("port", Integer.parseInt(port)); + return obj; + }finally { + lock.unlock(); + } + + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/GroupService.java b/game_web/web_group_robot/src/main/java/com/group/service/GroupService.java new file mode 100644 index 0000000..12a785c --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/GroupService.java @@ -0,0 +1,5812 @@ +package com.group.service; + +import java.util.*; + +import com.data.bean.AccountBean; +import com.data.bean.GameBean; +import com.data.bean.GroupBean; +import com.data.bean.GroupMemberBean; +import com.data.bean.GroupPlayBean; +import com.data.cache.AccountCache; +import com.data.cache.BaseCache; +import com.data.cache.GameCache; +import com.data.cache.GroupCache; +import com.data.cache.GroupMemberCache; +import com.data.util.ConsumeCode; +import com.data.util.CountUtil; +import com.data.util.ErrorCode; +import com.data.util.Utility; +import com.group.MainServer; +import com.taurus.core.entity.*; +import com.taurus.core.plugin.database.DataBase; +import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.plugin.redis.RedisLock; +import com.taurus.core.util.DateUtils; +import com.taurus.core.util.Logger; +import com.taurus.core.util.StringUtil; +import com.taurus.web.WebException; + +import redis.clients.jedis.Jedis; +import redis.clients.jedis.Pipeline; + +public class GroupService { + private final static Logger log; + + static { + log = Logger.getLogger(GroupService.class); + } + /** 普通圈子3000 */ + public static final int TYPE_1_NUM = 3000000; + /** 大联盟20000 */ + public static final int TYPE_2_NUM = 3000000; + + /** 删除玩家 */ + public static final int PERMISSION_DEL_MEMBER = 1; + /** 添加玩家 */ + public static final int PERMISSION_ADD_MEMBER = 2; + /** 增减体力值 */ + public static final int PERMISSION_HP_OPT = 4; + /** 禁止娱乐 */ + public static final int PERMISSION_BAN = 8; + /** 禁止同桌 */ + public static final int PERMISSION_BAN_DESKMATE = 16; + + private static ITObject getGroupData(int uid, int groupId, Jedis jedis11, Jedis jedis10) { + GroupBean gb = GroupCache.getGroup(groupId); + if (gb == null) + return null; + GroupMemberBean gmb = GroupCache.getMember(groupId, uid); + if (gmb == null) { + return null; + } + if (uid == gb.owner) + { + Redis.use("group1_db1").sadd("robot_group", Integer.toString(groupId)); + } + ITObject obj = TObject.newInstance(); + obj.putInt("id", groupId); + obj.putString("name", gb.name); + int owner = gb.owner; + if (gmb.lev == 1) + { + obj.putInt("owner", owner); + } + else { + obj.putInt("owner", 0); + } + obj.putInt("type", gb.type); + + obj.putInt("pay_type", gb.pay_type); + obj.putInt("member_num", gb.gms); + obj.putInt("option", gb.option); + obj.putInt("show_num", gb.show_num); + String grooms_key = GroupCache.genRoomsKey(groupId); + Set rooms = jedis11.zrangeByScore(grooms_key, 100000, 2000000); + obj.putInt("room_num", rooms.size()); + obj.putInt("top_time", gmb.top_time); + AccountBean acc = AccountCache.getAccount(owner); + if (acc != null) { + obj.putString("o_nick", acc.nick); + obj.putString("o_portrait", acc.portrait); + } else { + obj.putString("o_nick", StringUtil.Empty); + obj.putString("o_portrait", StringUtil.Empty); + } + //Redis.use("group1_db1").hset("alllook",uid+"","1"); + String fp = Redis.use("group1_db1").hget("alllook",uid+""); + if (fp!=null){ + obj.putInt("lev", 1); + }else{ + obj.putInt("lev", gmb.lev); + } + + + return obj; + } + + /** + * 获取圈子列表 + * + * @param uid + * @return + * @throws Exception + */ + public static final ITArray getGroups(int uid) throws Exception { + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + ITArray list = TArray.newInstance(); + String key = GroupCache.genGroupsKey(uid); + Set groups = jedis11.zrevrange(key, 0, -1); + for (String tem : groups) { + ITObject obj = getGroupData(uid, Integer.parseInt(tem), jedis11, jedis10); + if (obj == null) { + jedis11.zrem(key, tem); + continue; + } + list.addTObject(obj); + } + + return list; + } finally { + jedis11.close(); + jedis10.close(); + } + } + + /** + * 获取圈子预览 + * + * @param uid + * @return + * @throws Exception + */ + public static final ITObject getPreview(int uid) throws Exception { + String key = GroupCache.genGroupsKey(uid); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + try { + Set groups = jedis11.zrevrange(key, 0, -1); + ITObject obj = TObject.newInstance(); + for (String tem : groups) { + int groupId = Integer.parseInt(tem); + + GroupBean gb = GroupCache.getGroup(groupId); + if (gb == null) { + continue; + } + obj.putInt("id", gb.id); + obj.putString("name", gb.name); + obj.putInt("type", gb.type); + obj.putInt("member_num", gb.gms); + String grooms_key = GroupCache.genRoomsKey(groupId); + Set rooms = jedis11.zrangeByScore(grooms_key, 100000, 1000000); + obj.putInt("room_num", rooms.size()); + obj.putBoolean("is_group", true); + return obj; + } + obj.putBoolean("is_group", false); + return obj; + } finally { + jedis11.close(); + } + + } + + private static final Map groupToRedis(String groupId, String name, int owner, int type, + int pay_type) { + Map redis_map = new HashMap<>(); + redis_map.put("id", groupId); + redis_map.put("name", name); + redis_map.put("owner", owner + ""); + redis_map.put("type", type + ""); + redis_map.put("pay_type", pay_type + ""); + redis_map.put("opt", "1"); + redis_map.put("ban", "0"); + redis_map.put("dissolve_opt", "1"); + redis_map.put("kick_opt", "1"); + redis_map.put("ban_apply", "0"); + redis_map.put("create_time", System.currentTimeMillis() / 1000 + ""); + redis_map.put("gms", "1"); + redis_map.put("option", "0"); + return redis_map; + } + + private static final Map memberToRedis(String groupId, int uid, int lev, int partnerLev, + int parentId, long time) { + Map redis_map = new HashMap<>(); + redis_map.put("groupId", groupId); + redis_map.put("uid", uid + ""); + redis_map.put("lev", lev + ""); + redis_map.put("opt", "1"); + redis_map.put("hp", "0"); + redis_map.put("ban", "0"); + redis_map.put("join_time", time + ""); + redis_map.put("top_time", "0"); + redis_map.put("partnerLev", partnerLev + ""); + redis_map.put("parentId", parentId + ""); + redis_map.put("hp_opt", "1"); + redis_map.put("permission", "0"); + return redis_map; + } + + private static final Map payToRedis(int groupId, int pid, int gameId, String name, int deskId, String config, + String hpData, int hpOnOff, int hp_times, int reward, int rewardType,int rewardValueType, int xipai_reward, int xipai_rewardType,int xipai_rewardValueType,int anchou_reward, int anchou_rewardType,int anchou_rewardValueType, int robot_room) { + Map redis_map = new HashMap<>(); + redis_map.put("groupId", groupId + ""); + redis_map.put("id", pid + ""); + redis_map.put("name", name); + redis_map.put("deskId", deskId + ""); + redis_map.put("gameId", gameId + ""); + redis_map.put("config", config); + redis_map.put("hpData", hpData); + redis_map.put("hpOnOff", hpOnOff + ""); + redis_map.put("reward", reward + ""); + redis_map.put("rewardType", rewardType + ""); + redis_map.put("rewardValueType", rewardValueType + ""); + redis_map.put("xipai_reward", xipai_reward + ""); + redis_map.put("xipai_rewardType", xipai_rewardType + ""); + redis_map.put("xipai_rewardValueType", xipai_rewardValueType + ""); + + redis_map.put("anchou_reward", anchou_reward + ""); + redis_map.put("anchou_rewardType", anchou_rewardType + ""); + redis_map.put("anchou_rewardValueType", anchou_rewardValueType + ""); + + redis_map.put("hp_times", hp_times + ""); + redis_map.put("ban", "0"); + redis_map.put("robot_room", robot_room + ""); + return redis_map; + } + +// private static final String DEF_PROMOTION_DATA = "[{\"num\":0,\"val\":0}]"; + + /** + * 创建圈子 + * + * @param name + * @param owner + * @param type + * 1普通圈子 2大联盟 + * @param pay_type + * 1 房主支付 2AA支付 + * @return + * @throws Exception + */ + public static final ITObject createGroup(String name, int owner, int type, int pay_type, int num) + throws Exception { + log.info("createGroup name:"+name+" owner:"+owner + " type:"+type + " pay_type:" + pay_type + " num:" + num); + + String groupId = null; + Jedis jedis1 = Redis.use("group1_db1").getJedis(); + try { + if (num > 0) { + groupId = num + ""; + if (!jedis1.sismember("lh_ids", groupId)) { + throw new WebException(ErrorCode.GROUP_NO_EXIST); + } + } else { + groupId = jedis1.rpop("free_group"); + if (jedis1.sismember("lh_ids", groupId)) { + throw new WebException(ErrorCode._FAILED); + } + } + + String sql = String.format("SELECT id FROM groups WHERE owner=%s", owner); + ITArray arr = DataBase.use().executeQueryByTArray(sql); + if (arr.size() > 0) { + if(num<=0) { + jedis1.lpush("free_group", groupId); + } + throw new WebException(ErrorCode.GROUP_TYPE2_ONLY_1); + } + + }finally { + jedis1.close(); + } + + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + int gid = Integer.parseInt(groupId); + String key = GroupCache.genKey(Integer.parseInt(groupId)); + RedisLock lock = null; + try { + lock = new RedisLock(key, jedis11); + lock.lock(); + + String sql = String.format("{call sp_create_group(%s,'%s',%s,%s,%s)}", groupId, name, owner, type, pay_type); + Utility.evtdb(gid, 2, sql); + + Map redis_map = groupToRedis(groupId, name, owner, type, pay_type); + jedis11.hmset(key, redis_map); + BaseCache.updateCacheVer(jedis11, key); + long time = System.currentTimeMillis() / 1000; + redis_map = memberToRedis(groupId, owner, 1, 0, 0, time); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + String gm_key = GroupMemberCache.genKey(Integer.parseInt(groupId), owner); + jedis10.hmset(gm_key, redis_map); + BaseCache.updateCacheVer(jedis10, gm_key); + } finally { + jedis10.close(); + } + + ITObject info = TObject.newInstance(); + info.putInt("id", gid); + info.putString("name", name); + String gpids_key = GroupCache.genPidsKey(gid); + Pipeline pipeline = jedis11.pipelined(); + pipeline.del(gpids_key); + for (int i = 10; i < 210; ++i) { + pipeline.zadd(gpids_key, time, i + ""); + time++; + } + pipeline.sync(); + + String gs_key = GroupCache.genGroupsKey(owner); + jedis11.zadd(gs_key, 0, groupId); + return info; + + + } catch (Exception ex) { + Redis.use("group1_db1").lpush("free_group", groupId); + if (ex instanceof WebException) { + throw ex; + } else { + log.error(ex); + } + + } finally { + if (lock != null) { + lock.unlock(); + } + } + return null; + } + + /** + * 删除圈子 + * + * @param groupId + * @param uid + * @return + * @throws Exception + */ + public static final void delGroup(int groupId, int uid) throws Exception { + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + String key = GroupCache.genKey(groupId); + + RedisLock lock = new RedisLock(key, jedis11); + try { + lock.lock(); + String opt = jedis11.hget(key, "opt"); + if (StringUtil.isEmpty(opt) || Integer.parseInt(opt) != 1) { + throw new WebException(ErrorCode.GROUP_NO_EXIST); + } + String grooms_key = GroupCache.genRoomsKey(groupId); + jedis11.zremrangeByScore(grooms_key, 0, 0); + Set rooms = jedis11.zrangeByScore(grooms_key, 100000, 1000000); + if (rooms.size() > 0) { + throw new WebException(ErrorCode.GROUP_EXIST_ROOMS); + } + + jedis11.hset(key, "opt", "2"); + GroupPublisherService.delGroupEvt(groupId); + jedis11.expire(key, 30); + String gpids_key = GroupCache.genPidsKey(groupId); + String gs_key = GroupCache.genGroupsKey(uid); + jedis11.del(gpids_key); + jedis11.zrem(gs_key, groupId + ""); + Set play_list = jedis11.keys("g{" + groupId + "}:*"); + Pipeline pipeline = jedis11.pipelined(); + for (String p_key : play_list) { + pipeline.expire(p_key, 30); + } + pipeline.sync(); + Set members = jedis10.keys("g{" + groupId + "}:*"); + pipeline = jedis10.pipelined(); + for (String m_key : members) { + pipeline.expire(m_key, 30); + } + pipeline.sync(); + + String sql = String.format("{call sp_del_group(%s)}", groupId); + Utility.evtdb(groupId, 2, sql); + } finally { + lock.unlock(); + jedis10.close(); + } + } + + /** + * 退出圈子 + * + * @param groupId + * @param uid + * @throws Exception + */ + public static final void exitGroup(int groupId, int uid) throws Exception { + GroupBean gb = GroupCache.getGroup(groupId); + if (gb.exit_opt == 1) { + throw new WebException(ErrorCode.GROUP_TYPE2_NOT_EXIT); + } + + if ((gb.option & 2) == 0) { + throw new WebException(ErrorCode.GROUP_TYPE2_NOT_EXIT); + } + + delMember(groupId, gb.owner, uid); + } + + /** + * 申请加入牌友圈 + * + * @param groupId + * @param uid + * @return + * @throws Exception + */ + public static final int applyGroup(int groupId, int uid) throws Exception { + String joins_key = GroupCache.genJoinsKey(groupId); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + RedisLock lock = new RedisLock(joins_key, jedis11); + try { + lock.lock(); + GroupBean gb = GroupCache.getGroup(groupId); + if (gb == null) { + throw new WebException(ErrorCode.GROUP_NO_EXIST); + } + if (gb.ban_apply == 2) { + return ErrorCode.GROUP_BAN_APPLY; + } + int type = gb.type; + int gms = gb.gms; + if (type == 1 && gms >= TYPE_1_NUM) { + return ErrorCode.GROUP_MEMBER_IS_FULL; + } + if (type == 2 && gms >= TYPE_2_NUM) { + return ErrorCode.GROUP_MEMBER_IS_FULL; + } + String tag_key = GroupMemberCache.genKey(groupId, uid); + String member_opt = Redis.use("group1_db10").hget(tag_key, "opt"); + if (StringUtil.isNotEmpty(member_opt) && member_opt.equals("1")) { + return ErrorCode.GROUP_MEMBER_EXIST; + } + if (jedis11.sismember(joins_key, uid + "")) { + return ErrorCode.GROUP_JOIN_EXIST; + } + jedis11.sadd(joins_key, uid + ""); + int joins = jedis11.scard(joins_key).intValue(); + GroupPublisherService.updateJoinsEvt(groupId, joins); + } finally { + lock.unlock(); + } + return 0; + } + + /** + * 验证加入牌友圈 + * + * @param groupId + * @param uid + * @param tagId + * @param allow + * @return + * @throws Exception + */ + public static final int verifyJoinGroup(int groupId, int uid, int tagId, boolean allow) throws Exception { + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + String member_key = GroupMemberCache.genKey(groupId, tagId); + RedisLock lock1 = new RedisLock(member_key, jedis10); + String joins_key = GroupCache.genJoinsKey(groupId); + RedisLock lock = new RedisLock(joins_key, jedis11); + try { + lock.lock(); + lock1.lock(); + long len = jedis11.srem(joins_key, tagId + ""); + String member_opt = jedis10.hget(member_key, "opt"); + if (StringUtil.isNotEmpty(member_opt) && member_opt.equals("1")) { + return ErrorCode.GROUP_MEMBER_EXIST; + } + String g_key = GroupCache.genKey(groupId); + List list = jedis11.hmget(g_key, "type", "gms"); + int type = Integer.parseInt(list.get(0)); + int gms = Integer.parseInt(list.get(1)); + if (type == 1 && gms >= TYPE_1_NUM) { + return ErrorCode.GROUP_MEMBER_IS_FULL; + } + if (type == 2 && gms >= TYPE_2_NUM) { + return ErrorCode.GROUP_MEMBER_IS_FULL; + } + if (len > 0 && allow) { + long time = System.currentTimeMillis() / 1000; + String sql = String.format( + "INSERT INTO group_member(uid,groupId,join_time,parentId) VALUES(%s,%s,%s,%s)", tagId, groupId, + time, 0); + Utility.evtdb(groupId, 1, sql); + Map redis_map = memberToRedis(groupId + "", tagId, 3, 0, 0, time); + jedis10.hmset(member_key, redis_map); + BaseCache.updateCacheVer(jedis10, member_key); + jedis11.hincrBy(g_key, "gms", 1); + BaseCache.updateCacheVer(jedis11, g_key); + String key = GroupCache.genGroupsKey(tagId); + jedis11.zadd(key, 0, groupId + ""); + } + int joins = jedis11.scard(joins_key).intValue(); + GroupPublisherService.updateJoinsEvt(groupId, joins); + return 0; + } finally { + lock.unlock(); + lock1.unlock(); + } + } + + private static String getSvr(Jedis jedis11) { + Set svr_list = jedis11.zrange("mgr_group", 0, -1); + if (svr_list.size() > 0) { + for (String str : svr_list) { + if (jedis11.exists(str)) { + return str; + } + } + } + return null; + } + + /** + * 进入圈子 + * + * @param groupId + * @param uid + * @return + * @throws Exception + */ + public static final ITObject enterGroup(int groupId, int uid) throws Exception { + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + try { + String svr = getSvr(jedis11); + if (StringUtil.isEmpty(svr)) { + log.error("enterGroup fail groupId:" + groupId + " svr:"+svr + " uid:" + uid); + throw new WebException(ErrorCode.NO_SERVICE); + } + String group_key = GroupCache.genKey(groupId); + + String host = jedis11.hget(svr, "host"); + ITObject data = TObject.newInstance(); + data.putString("host", host); + String notice = Redis.use("group1_db11").hget(group_key, "notice"); + data.putString("notice", StringUtil.isEmpty(notice) ? StringUtil.Empty : notice); + String hide_action = Redis.use("group1_db11").hget(group_key, "hide_action"); + data.putInt("hide_action", StringUtil.isEmpty(hide_action) ? 0 : Integer.parseInt(hide_action)); + return data; + } finally { + jedis11.close(); + } + } + + /** + * 获得玩家信息 + * + * @param tagId + * @return + * @throws Exception + */ + public static final ITObject getPlayerInfo(int uid) throws Exception { + AccountBean acc = AccountCache.getAccount(uid); + if (acc == null) + { + return null; + } + + ITObject obj = TObject.newInstance(); + obj.putInt("uid", uid); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + return obj; + } + + /** + * 添加成员 + * + * @param groupId + * @param uid + * @param tagId + * @return + * @throws Exception + */ + public static final int addMember(int groupId, int uid, int tagId) throws Exception { + log.info("addMember uid:"+uid+" tagId:"+tagId); + GroupBean gb = GroupCache.getGroup(groupId); + String g_key = gb.redis_key; + int type = gb.type; + int gms = gb.gms; + if (type == 1 && gms >= TYPE_1_NUM) { + return ErrorCode.GROUP_MEMBER_IS_FULL; + } + if (type == 2 && gms >= TYPE_2_NUM) { + return ErrorCode.GROUP_MEMBER_IS_FULL; + } + String tag_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(tag_key, jedis10); + RedisLock lock1 = null; + try { + lock.lock(); + String session_key = AccountCache.genKey(tagId); + List s_list = Redis.use("group1_db0").hmget(session_key, "id", "invitation"); + if (StringUtil.isEmpty(s_list.get(0))) { + return ErrorCode._FAILED; + } + int invitation = 0; + if (StringUtil.isNotEmpty(s_list.get(1))) { + invitation = Integer.parseInt(s_list.get(1)); + } + if (invitation == 0) { + return ErrorCode.GROUP_CLOSE_INVITATION; + } + String mng_key = GroupMemberCache.genKey(groupId, uid); + lock1 = new RedisLock(mng_key, jedis10); + lock1.lock(); + GroupMemberBean mng_bean = GroupCache.getMember(groupId, uid); + + if (mng_bean == null) { + return ErrorCode.GROUP_NOT_MEMBER; + } + + int mgn_lev = mng_bean.lev; + int mgn_partnerLev = mng_bean.partnerLev; + if (mgn_lev == 3 && mgn_partnerLev == 0) { + return ErrorCode.GROUP_NOT_PARTNER; + } + if (mgn_lev == 2) { + if ((mng_bean.permission & PERMISSION_ADD_MEMBER) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + String member_opt = jedis10.hget(tag_key, "opt"); + boolean exits = StringUtil.isNotEmpty(member_opt) && member_opt.equals("1"); + if (exits) { + return ErrorCode.GROUP_MEMBER_EXIST; + } + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + if (!exits) { + String joins_key = GroupCache.genJoinsKey(groupId); + log.info("addMember joins_key:"+joins_key); + if (jedis11.sismember(joins_key, tagId + "")) { + jedis11.srem(joins_key, tagId + ""); + int joins = jedis11.scard(joins_key).intValue(); + log.info("addMember joins:"+joins); + GroupPublisherService.updateJoinsEvt(groupId, joins); + } + } + + try { + int mgn_uid = mgn_lev == 3 ? uid : 0; + String sql = String.format("{call sp_add_member(%s,%s,%s)}", groupId, mgn_uid, tagId); + log.info("addMember addsql:"+sql); + Utility.evtdb(groupId, 2, sql); + + long time = System.currentTimeMillis() / 1000; + log.info("addMember time:"+time); + Map redis_map = memberToRedis(groupId + "", tagId, 3, 0, mgn_uid, time); + + Map hashData = jedis10.hgetAll("g{"+groupId+"}:ban:"+uid); + if (!hashData.isEmpty()){ + for(Map.Entry entry: hashData.entrySet()){ + jedis10.hset(GroupCache.genBanKey(groupId, tagId), entry.getKey(), entry.getValue()+""); + } + } + redis_map.put("queueid",mng_bean.queueid+""); + //redis_map.put("seeid",mng_bean.seeid+""); + + jedis10.hmset(tag_key, redis_map); + BaseCache.updateCacheVer(jedis10, tag_key); + jedis11.hincrBy(g_key, "gms", 1); + BaseCache.updateCacheVer(jedis11, g_key); + String key = GroupCache.genGroupsKey(tagId); + jedis11.zadd(key, 0, groupId + ""); + + String group_ban = jedis10.hget(mng_key, "group_ban"); + if (!StringUtil.isEmpty(group_ban) && Integer.parseInt(group_ban) == 1) + { + sql = String.format("update group_member set ban = %s where uid = %s AND groupId = %s", group_ban, tagId,groupId); + Utility.evtdb(groupId, 1, sql); + jedis10.hset(tag_key, "ban", group_ban); + jedis10.hset(tag_key, "group_ban", group_ban); + BaseCache.updateCacheVer(jedis10, tag_key); + } + } finally { + jedis11.close(); + } + return 0; + } finally { + log.info("lock1 time:"+lock1); + if (lock1 != null) { + lock1.unlock(false); + } + log.info("lock time:"+lock); + lock.unlock(); + } + } + + /** + * 设置合伙人 + * + * @param groupId + * @param uid + * @param tagId + * @return + * @throws Exception + */ + public static final ITObject setParent(int groupId, int uid, int tagId) throws Exception { + log.info("setParent uid:" + uid + " tagId:"+tagId); + String tag_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(tag_key, jedis10); + RedisLock lock1 = null; + try { + lock.lock(); + GroupMemberBean tag_bean = GroupCache.getMember(groupId, tagId); + if (tag_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + String mng_key = GroupMemberCache.genKey(groupId, uid); + lock1 = new RedisLock(mng_key, jedis10); + lock1.lock(); + GroupMemberBean mng = GroupCache.getMember(groupId, uid); + if (mng == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + int mgn_lev = mng.lev; + int mgn_partner = mng.partnerLev; + if (mgn_lev == 3 && mgn_partner == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + + int member_lev = tag_bean.lev; + if (member_lev < 3) { + throw new WebException(ErrorCode.GROUP_TAG_ISMGR); + } + int member_partner = tag_bean.partnerLev; + if (member_partner > 0) { + throw new WebException(ErrorCode.GROUP_ALREADY_PARTNER); + } + int member_parentId = tag_bean.parentId; + if (member_parentId > 0 && uid != member_parentId) { + throw new WebException(ErrorCode.GROUP_MEMBER_EXIST_PARTENER); + } + GroupBean gb = GroupCache.getGroup(groupId); + int tag_partner_lev = 1; + int parent = uid; + if (mgn_lev < 3) { + parent = gb.owner; + } else { + tag_partner_lev = (mgn_partner + 1); + } + + String sql = String.format( + "update group_member set parentId = %s,partnerLev=%s " + "WHERE uid = %s and groupId = %s", parent, + tag_partner_lev, tagId, groupId); + Utility.evtdb(groupId, 1, sql); + GroupPublisherService.updateMemberEvt(groupId, tagId, 3, tag_partner_lev); + jedis10.hset(tag_key, "parentId", parent + ""); + jedis10.hset(tag_key, "partnerLev", tag_partner_lev + ""); + BaseCache.updateCacheVer(jedis10, tag_key); + if (mgn_lev == 3) { + List list = Utility.getMemberParents(jedis10, groupId, uid, true); + for (Integer par : list) { + String pl_key = GroupCache.genParListKey(groupId, par); + jedis10.sadd(pl_key, tagId + ""); + } + } + // int member_hp = Integer.parseInt(jedis10.hget(tag_key, "hp")); + // String ph_key = String.format("g{%s}:par_hp:%s", groupId,tagId); + // jedis10.incrBy(ph_key, member_hp); + ITObject resData = TObject.newInstance(); + resData.putInt("parentId", parent); + resData.putInt("partnerLev", tag_partner_lev); + + return resData; + + } finally { + if (lock1 != null) { + lock1.unlock(false); + } + lock.unlock(); + + } + } + + /** + * 设置备注值 + * + * @param groupId + * @param uid + * @param tagId + * @param score + * @return + * @throws Exception + */ + public static final void updateMemberScore(int groupId, int uid, int tagId, int score) throws Exception { + log.info("updateMemberScore uid:"+uid+" tagId:"+tagId+" score:"+score); + GroupMemberBean tag_bean = GroupCache.getMember(groupId, tagId); + if (tag_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + GroupMemberBean mng_bean = GroupCache.getMember(groupId, uid); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + if (mng_bean.lev >= 3) { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, false); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + jedis10.hset(tag_bean.redis_key, "score", score + ""); + BaseCache.updateCacheVer(jedis10, GroupMemberCache.genKey(groupId, tagId)); + } + finally { + jedis10.close(); + } + } + + /** + * 设置备注值 + * + * @param groupId + * @param uid + * @param tagId + * @param queueid + * @return + * @throws Exception + */ + public static final void updateMemberQueue(int groupId, int uid, int tagId, int queueid) throws Exception { + log.info("updateMemberQueue uid:"+uid+" tagId:"+tagId+" queue:"+queueid); + GroupMemberBean tag_bean = GroupCache.getMember(groupId, tagId); + if (tag_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + GroupMemberBean mng_bean = GroupCache.getMember(groupId, uid); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + /* + try { + if (mng_bean.lev >= 3) { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, false); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + jedis10.hset(tag_bean.redis_key, "queueid", queueid + ""); + BaseCache.updateCacheVer(jedis10, GroupMemberCache.genKey(groupId, tagId)); + } + finally { + jedis10.close(); + }*/ + + + + String gm_key = GroupMemberCache.genKey(groupId, tagId); + //Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + + jedis10.hset(tag_bean.redis_key, "queueid", queueid + ""); + BaseCache.updateCacheVer(jedis10, GroupMemberCache.genKey(groupId, tagId)); + + String opt1 = jedis10.hget(gm_key, "opt"); + if (StringUtil.isEmpty(opt1) || Integer.parseInt(opt1) != 1) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + String mng_key = GroupMemberCache.genKey(groupId, uid); + RedisLock lock1 = new RedisLock(mng_key, jedis10); + try { + lock1.lock(); + int mgn_lev = Integer.parseInt(jedis10.hget(mng_key, "lev")); + if (mgn_lev == 2) { + String permission = jedis10.hget(mng_key, "permission"); + if (StringUtil.isEmpty(permission) || (Integer.parseInt(permission) & PERMISSION_BAN) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + else if (mgn_lev >= 3) + { + if (uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + //log.info("uid:" + uid + " ban_member:" + tagId + " par_list:" + par_list); + } + } + + String group_ban = jedis10.hget(mng_key, "group_ban"); + if (!StringUtil.isEmpty(group_ban) && Integer.parseInt(group_ban) == 1) { + throw new WebException(ErrorCode.GROUP_MEMBER_BAN); + } + } finally { + lock1.unlock(false); + } + + //log.info("uid:" + uid + " ban_member:" + tagId + " optType:" + optType + " ban:" + ban); + + boolean isPartner = false; + GroupMemberBean gmb = GroupCache.getMember(groupId, tagId); + if( gmb.partnerLev > 0) { + isPartner = true; + } + + String sql; + //String _ban = ban + ""; + if(isPartner) { + HashSet hashSet = new HashSet<>(); + hashSet.add(tagId); + ArrayList arrayList = new ArrayList<>(); + arrayList.add(tagId); + + gm_key = GroupMemberCache.genKey(groupId, tagId); + //jedis10.hset(gm_key, "ban", _ban); + //jedis10.hset(gm_key, "group_ban", _ban); + BaseCache.updateCacheVer(jedis10, gm_key); + + while(!arrayList.isEmpty()) + { + ArrayList arrayListTemp = new ArrayList<>(); + arrayListTemp.addAll(arrayList); + arrayList.clear(); + + for(int i = 0; i < arrayListTemp.size(); ++i) + { + int tmpTagId = arrayListTemp.get(i); + String child_list2 = Utility.getChildParentSql(groupId, tmpTagId, true); + + //sql = String.format("update group_member set ban = %s where groupId = %s and (parentId in(%s) or uid = %s)", _ban, groupId,child_list2,tmpTagId); + //Utility.evtdb(groupId, 1, sql); + + sql = String.format("select uid from group_member where groupId = %s and (parentId in(%s) or uid = %s)", groupId,child_list2, tmpTagId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql); + if(tmplist.size()>0) { + for(int j=0; j= 3) { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, false); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + jedis10.hset(tag_bean.redis_key, "seeid", seeid + ""); + BaseCache.updateCacheVer(jedis10, GroupMemberCache.genKey(groupId, tagId)); + } + finally { + jedis10.close(); + } + } + + /** + * 设置体力值 + * + * @param groupId + * @param uid + * @param tagId + * @param hp + * @return + * @throws Exception + */ + public static final ITObject updateMemberHp(int groupId, int uid, int tagId, int hp, boolean self, int otherId) throws Exception { + + String tag_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(tag_key, jedis10); + try { + lock.lock(); + GroupMemberBean tag_bean = GroupCache.getMember(groupId, tagId); + if (tag_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + GroupMemberBean mng_bean = GroupCache.getMember(groupId, uid); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + // 正在游戏不允许下分操作 + if (hp < 0) { + if (GroupRoomService.checkRoom(groupId, uid)) { + throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP); + } + if (GroupRoomService.checkRoom(groupId, tagId)) { + throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP); + } + } + + if (hp > 0) { + int pre_hp = Integer.parseInt(jedis10.hget(tag_key, "hp")); + + if ((long)pre_hp + (long)hp > Integer.MAX_VALUE) + { + throw new WebException(ErrorCode._FAILED); + } + } + + int mgn_partner = mng_bean.partnerLev; + int mgn_lev = mng_bean.lev; + if (tag_bean.lev == 1) + { + if (uid != tagId) + { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + else if (tag_bean.lev == 2) { + if (mgn_lev != 1) + { + if (uid != tagId) + { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + + if (mgn_lev == 3 && mgn_partner == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + if (mgn_lev == 2) { + if ((mng_bean.permission & PERMISSION_HP_OPT) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + if (self == false && mgn_lev != 1 && uid == tagId) { + throw new WebException(ErrorCode._FAILED); + } + + if (mgn_lev == 3) { + if (!self) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, false); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + else + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + String lua = MainServer.lua_map.get("mgr"); + Object obj = jedis10.evalsha(lua, Arrays.asList(mng_bean.redis_key, tag_key), + Arrays.asList(hp + "", mgn_lev + "")); + if (obj == null) { + throw new WebException(ErrorCode._FAILED); + } + if (obj instanceof Long) { + Long code = (Long) obj; + if (code == 3) { + throw new WebException(ErrorCode.GROUP_TAG_MGR_HP); + } else if (code == 4) { + throw new WebException(ErrorCode.GROUP_TAG_NO_HP); + } + } else { + ArrayList arr = (ArrayList) obj; + ITObject resData = TObject.newInstance(); + int mhp = arr.get(0).intValue(); + int thp = arr.get(1).intValue(); + resData.putInt("mhp", (int) mhp); + resData.putInt("hp", (int) thp); + + String sql = String.format("{call sp_update_hp_mgr2(%s,%s,%s,%s,%s,%s,%s,%s)}", groupId, uid, hp, mhp, thp, tagId, mgn_lev,otherId); + Utility.evtdb(groupId, 2, sql); + + if (!self) + log.info("updateMemberHp uid:"+uid + " tagId:"+tagId + " hp:" + hp/1000); + + // ------------------------邮件 ------------------- + ITObject mail_data = TObject.newInstance(); + mail_data.putInt("mgr_id", uid); + AccountBean acc = AccountCache.getAccount(uid); + mail_data.putString("nick", acc.nick); + mail_data.putString("headurl", acc.portrait); + mail_data.putInt("hp", hp); + mail_data.putInt("type", 1); + int time = (int) (System.currentTimeMillis() / 1000); + mail_data.putInt("time", time); + String mail_key = GroupCache.genMailKey(groupId, tagId); + jedis10.zadd(mail_key, time, mail_data.toJson()); + String mail_tip_key = GroupCache.genMailTipKey(groupId); + jedis10.zadd(mail_tip_key, 1, tagId + ""); + GroupPublisherService.updateMailTipEvt(groupId, tagId); + //----------------------------------------------- + + String c_tem = hp > 0 ? "upper" : "sub"; + if (mgn_lev < 3) { + String hp_mgr_key = String.format("g%s:hp_mgr:%s", groupId, c_tem); + String hp_mgr_id_key = String.format("g%s:hp_mgr:%s:u%s", groupId, c_tem, uid); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + hp = Math.abs(hp); + CountUtil.countLogByDay(hp_mgr_key, hp, jedis9); + CountUtil.countLogByDay(hp_mgr_id_key, hp, jedis9); + } finally { + jedis9.close(); + } + } else { + String hp_par_id_key = String.format("g%s:hp_par:%s:u%s", groupId, c_tem, uid); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + hp = Math.abs(hp); + CountUtil.countLogByDay(hp_par_id_key, hp, jedis9); + } finally { + jedis9.close(); + } + } + return resData; + } + return null; + } finally { + lock.unlock(); + + } + } + + + /** + * 获取奖励数据 + * + * @param groupId + * @param uid + * @return + */ + public static final ITObject getTakeInfo(int groupId, int uid, int tagId) throws Exception { + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10.close(); + } + + + String rhp_key = String.format("g{%s}:m%s:reward_hp", groupId, tagId); + String r_hp = Redis.use("group1_db10").get(rhp_key); + int _r_hp = 0; + if (StringUtil.isNotEmpty(r_hp)) { + _r_hp = Integer.parseInt(r_hp); + } + + long day_rewad = 0; + long day_rewad_1 = 0; + long day_rewad_2 = 0; +// int all_day_reward = 0; + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + String key = String.format("g%s:hp_reward:m%s", groupId, tagId); + day_rewad = CountUtil.getCountLogByDay(key, jedis9); + String day_key_1 = key + ":d"+(DateUtils.getBeginDay() - 3600 * 24); + day_rewad_1 = CountUtil.getCountLog(day_key_1, 0, jedis9); + String day_key_2 = key + ":d"+(DateUtils.getBeginDay() - 3600 * 48); + day_rewad_2 = CountUtil.getCountLog(day_key_2, 0, jedis9); + } finally { + jedis9.close(); + } + ITObject resData = TObject.newInstance(); + resData.putLong("total_hp", _r_hp); + //resData.putInt("bank_hp", _b_hp); + resData.putLong("day_rewad", day_rewad); + resData.putLong("day_rewad_1", day_rewad_1); + resData.putLong("day_rewad_2", day_rewad_2); + return resData; + } + + + public static final ITObject getBankInfo(int groupId, int uid, int tagId) throws Exception { + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10.close(); + } + + String mng_key = GroupMemberCache.genKey(groupId, tagId); + //String rhp_key = String.format("g{%s}:m%s:reward_hp", groupId, tagId); + //String r_hp = Redis.use("group1_db10").get(rhp_key); + String r_hp = Redis.use("group1_db10").hget(mng_key, "hp"); + long _r_hp = 0; + if (StringUtil.isNotEmpty(r_hp)) { + _r_hp = Long.parseLong(r_hp); + } + String b_hp = Redis.use("group1_db10").hget(mng_key, "bank_hp"); + long _b_hp = 0; + if (StringUtil.isNotEmpty(b_hp)) { + _b_hp = Long.parseLong(b_hp); + } + + int day_rewad = 0; + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + String key = String.format("g%s:hp_reward:m%s", groupId, tagId); + day_rewad = CountUtil.getCountLogByDay(key, jedis9); + } finally { + jedis9.close(); + } + ITObject resData = TObject.newInstance(); + resData.putLong("total_hp", _r_hp); + resData.putLong("bank_hp", _b_hp); + //resData.putInt("day_rewad", day_rewad); + return resData; + } + + /** + * 提取体力值 + * + * @param groupId + * @param uid + * @param hp + * @return + * @throws Exception + */ + public static final ITObject takeHp(int groupId, int uid, int tagId, long hp) throws Exception { + log.info("takeHp uid:" + uid + " tagId:" + tagId + " hp:" + hp/1000); + if (hp <= 0) { + throw new WebException(ErrorCode._FAILED); + } + + if (hp > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + + String mng_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(mng_key, jedis10); + try { + lock.lock(); + + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + GroupMemberBean mng_bean = GroupCache.getMember(groupId, tagId); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + String key = String.format("g{%s}:m%s:reward_hp", groupId, tagId); + String r_hp = jedis10.get(key); + if (StringUtil.isEmpty(r_hp)) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + + if (Long.parseLong(r_hp) < hp) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + + long tag_hp = Long.parseLong(jedis10.hget(mng_key, "hp")); + if (tag_hp + hp > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + + if (GroupRoomService.checkRoom(groupId, tagId)) { + throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP); + } + + String lua = MainServer.lua_map.get("take_hp"); + Object obj = jedis10.evalsha(lua, Arrays.asList(key,mng_key), Arrays.asList((int)hp + "")); + if (obj == null) { + throw new WebException(ErrorCode._FAILED); + } + if (obj instanceof Long) { + Long code = (Long) obj; + if (code == 3) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + } else { + ArrayList arr = (ArrayList) obj; + int _r_hp = arr.get(0).intValue(); + int mhp = arr.get(1).intValue(); + String sql = String.format("{call sp_take_reward_hp(%s,%s,%s,%s)}", groupId, tagId, (int)hp, mhp); + Utility.evtdb(groupId, 2, sql); + sql = String.format("update group_member set reward_hp = %s where uid = %s AND groupId = %s", _r_hp, tagId,groupId); + Utility.evtdb(groupId, 1, sql); + ITObject resData = TObject.newInstance(); + resData.putInt("hp", mhp); + resData.putLong("r_hp", _r_hp); + return resData; + } + return null; + } finally { + lock.unlock(); + + } + } + + /** + * 提取体力值 + * + * @param groupId + * @param uid + * @param hp + * @return + * @throws Exception + */ + public static final void groupTakeHp(int groupId, int uid, int tagId) throws Exception { + log.info("groupTakeHp uid:" + uid + " tagId:" + tagId); + String gm_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + String opt1 = jedis10.hget(gm_key, "opt"); + if (StringUtil.isEmpty(opt1) || Integer.parseInt(opt1) != 1) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + String mng_key = GroupMemberCache.genKey(groupId, uid); + RedisLock lock1 = new RedisLock(mng_key, jedis10); + try { + lock1.lock(); + int mgn_lev = Integer.parseInt(jedis10.hget(mng_key, "lev")); + if (mgn_lev != 1) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } finally { + lock1.unlock(false); + } + + boolean isPartner = false; + GroupMemberBean gmb = GroupCache.getMember(groupId, tagId); + if(gmb.partnerLev > 0) { + isPartner = true; + } + + String sql; + if(isPartner) { + HashSet hashSet = new HashSet<>(); + hashSet.add(tagId); + ArrayList arrayList = new ArrayList<>(); + arrayList.add(tagId); + + String key = String.format("g{%s}:m%s:reward_hp", groupId, tagId); + String r_hp = jedis10.get(key); + if (!StringUtil.isEmpty(r_hp)) { + try { + long allRewardHp = Long.parseLong(r_hp); + GroupService.takeHp(groupId, uid, tagId, allRewardHp); + } + catch (Exception e) + { + + } + } + + String tag_gm_key = GroupMemberCache.genKey(groupId, tagId); + String b_hp = jedis10.hget(tag_gm_key, "bank_hp"); + if (!StringUtil.isEmpty(b_hp)) { + try { + long allBankHp = Long.parseLong(b_hp); + GroupService.takeBankHp(groupId, uid, tagId, allBankHp); + } + catch (Exception e) + { + + } + } + + while(!arrayList.isEmpty()) + { + ArrayList arrayListTemp = new ArrayList<>(); + arrayListTemp.addAll(arrayList); + arrayList.clear(); + + for(int i = 0; i < arrayListTemp.size(); ++i) + { + int tmpTagId = arrayListTemp.get(i); + String child_list2 = Utility.getChildParentSql(groupId, tmpTagId, true); + + sql = String.format("select uid from group_member where groupId = %s and (parentId in(%s) or uid = %s)", groupId,child_list2, tmpTagId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql); + if(tmplist.size()>0) { + for(int j=0; j Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + String mng_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(mng_key, jedis10); + try { + lock.lock(); + + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + GroupMemberBean mng_bean = GroupCache.getMember(groupId, tagId); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + String r_hp = jedis10.hget(mng_key, "bank_hp"); + if (StringUtil.isEmpty(r_hp)) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + + if (Long.parseLong(r_hp) < hp) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + + long tag_hp = Long.parseLong(jedis10.hget(mng_key, "hp")); + if (tag_hp + hp > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + + if (GroupRoomService.checkRoom(groupId, tagId)) { + throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP); + } + + String lua = MainServer.lua_map.get("bank_hp"); + Object obj = jedis10.evalsha(lua, Arrays.asList(mng_key,mng_key, "bank_hp"), Arrays.asList((int)hp + "", "0")); + if (obj == null) { + throw new WebException(ErrorCode._FAILED); + } + if (obj instanceof Long) { + Long code = (Long) obj; + if (code == 3) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + } else { + ArrayList arr = (ArrayList) obj; + int mhp = arr.get(0).intValue(); + int b_hp = arr.get(1).intValue(); + String sql = String.format("{call sp_bank_hp(%s,%s,%s,%s)}", groupId, tagId, -(int)hp, mhp); + Utility.evtdb(groupId, 2, sql); + sql = String.format("update group_member set bank_hp = %s where uid = %s AND groupId = %s", b_hp, tagId,groupId); + Utility.evtdb(groupId, 1, sql); + ITObject resData = TObject.newInstance(); + resData.putInt("hp", mhp); + resData.putLong("b_hp", b_hp); + return resData; + } + return null; + } finally { + lock.unlock(); + } + } + + + public static final ITObject saveBankHp(int groupId, int uid, int tagId, long hp) throws Exception { + log.info("saveBankHp uid:"+uid+" tagId:"+tagId+ " hp:"+hp/1000); + if (hp <= 0) { + throw new WebException(ErrorCode._FAILED); + } + if (hp > Integer.MAX_VALUE) { + throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); + } + + String mng_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(mng_key, jedis10); + try { + lock.lock(); + + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + GroupMemberBean mng_bean = GroupCache.getMember(groupId, tagId); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + String cur_hp = jedis10.hget(mng_key, "hp"); + if (StringUtil.isEmpty(cur_hp)) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + + if (Long.parseLong(cur_hp) < hp) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + + if (GroupRoomService.checkRoom(groupId, tagId)) { + throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP); + } + + String lua = MainServer.lua_map.get("bank_hp"); + Object obj = jedis10.evalsha(lua, Arrays.asList(mng_key,mng_key, "bank_hp"), Arrays.asList(hp + "", "1")); + if (obj == null) { + throw new WebException(ErrorCode._FAILED); + } + if (obj instanceof Long) { + Long code = (Long) obj; + if (code == 3) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); + } + } else { + ArrayList arr = (ArrayList) obj; + long mhp = arr.get(0).longValue(); + long b_hp = arr.get(1).longValue(); + String sql = String.format("{call sp_bank_hp(%s,%s,%s,%s)}", groupId, tagId, hp, mhp); + Utility.evtdb(groupId, 2, sql); + + sql = String.format("update group_member set bank_hp = %s where uid = %s AND groupId = %s", b_hp, tagId,groupId); + Utility.evtdb(groupId, 1, sql); + + ITObject resData = TObject.newInstance(); + resData.putLong("hp", mhp); + resData.putLong("b_hp", b_hp); + return resData; + } + return null; + } finally { + lock.unlock(); + } + } + + + /** + * 删除成员 + * + * @param groupId + * @param uid + * @param tagId + * @return + * @throws Exception + */ + public static final void delMember(int groupId, int uid, int tagId) throws Exception { + log.info("delMember uid:"+uid + " tagId"+tagId); + String tag_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + + int dellev = 3; + RedisLock lock = null; + try { + lock = new RedisLock(tag_key, jedis10); + lock.lock(); + GroupMemberBean tag_bean = GroupCache.getMember(groupId, tagId); + if (tag_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + dellev = tag_bean.lev; + + GroupMemberBean mgn = GroupCache.getMember(groupId, uid); + + if (mgn == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + int mgn_lev = mgn.lev; + int mgn_partner = mgn.partnerLev; + if (mgn_lev == 3 && mgn_partner == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + + if (mgn_lev == 2) { + if ((mgn.permission & PERMISSION_DEL_MEMBER) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + long hp = Long.parseLong(jedis10.hget(tag_key, "hp")); + if (hp != 0) { + throw new WebException(ErrorCode.GROUP_HP_NOT_0); + } + + int tag_lev = tag_bean.lev; + if (mgn_lev < 3 && tag_lev <= mgn_lev) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + if (mgn_lev == 3 && mgn_partner > 0) { + + GroupBean gb = GroupCache.getGroup(groupId); + if((gb.option & 1) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + + int parentId = tag_bean.parentId; + if (uid != parentId) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + boolean checkRoom = GroupRoomService.checkRoom(groupId, tagId); + if (checkRoom) { + throw new WebException(ErrorCode.GROUP_MEMBER_ROOM_EXIST); + } + int tag_partner = tag_bean.partnerLev; + String rhp_key = String.format("g{%s}:m%s:reward_hp", groupId, tagId); + String r_hp = jedis10.get(rhp_key); + if (StringUtil.isNotEmpty(r_hp) && Long.parseLong(r_hp) > 0) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_TAKE); + } + + String b_hp = jedis10.hget(tag_key, "bank_hp"); + if (StringUtil.isNotEmpty(b_hp) && Long.parseLong(b_hp) > 0) { + throw new WebException(ErrorCode.GROUP_REWARD_NO_TAKE); + } + + String sql = String.format("select count(1) count from group_member where groupId =%s and parentId=%s ", groupId, tagId); + ITArray resultList = DataBase.use().executeQueryByTArray(sql); + long count = resultList.getTObject(0).getLong("count"); + if (count > 0) { + throw new WebException(ErrorCode.GROUP_PARTNER_MEMBERS); + } + + + List list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (list != null) { + for (Integer par : list) { + if (tag_partner > 0) { + String pl_key = GroupCache.genParListKey(groupId, par); + if (par == tagId) { + jedis10.del(pl_key); + } else { + jedis10.srem(pl_key, tagId + ""); + } + } + String mlk = GroupCache.genMemberListKey(groupId, par); + if (par == tagId) { + jedis10.del(mlk); + } else { + jedis10.srem(mlk, tagId + ""); + } + } + } + + jedis10.hset(tag_key, "opt", "2"); + BaseCache.updateCacheVer(jedis10, tag_key); + jedis10.expire(rhp_key, 10); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + try { + String g_key = GroupCache.genKey(groupId); + jedis11.hincrBy(g_key, "gms", -1); + BaseCache.updateCacheVer(jedis11, g_key); + String key = GroupCache.genGroupsKey(tagId); + jedis11.zrem(key, groupId + ""); + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = jedis11.zrangeByScore(gp_key, 10, 11); + for(String pid : pids) { + String p_reward_key = GroupCache.genRewardKey(groupId, Integer.parseInt(pid)); + jedis10.zrem(p_reward_key, tagId+""); + String p_xipai_reward_key = GroupCache.genXiPaiRewardKey(groupId, Integer.parseInt(pid)); + jedis10.zrem(p_xipai_reward_key, tagId+""); + + String p_anchou_reward_key = GroupCache.genAnChouRewardKey(groupId, Integer.parseInt(pid)); + jedis10.zrem(p_anchou_reward_key, tagId+""); + } + } finally { + jedis11.close(); + } + sql = String.format("{call sp_del_member(%s,%s)}", groupId, tagId); + Utility.evtdb(groupId, 2, sql); + + delMemberLog(groupId, uid, tagId, dellev); + + } finally { + if (lock != null) { + lock.unlock(); + } + } + } + + + public static final void delMemberLog(int groupId, int uid, int tagId, int lev) throws Exception { + AccountBean acc = AccountCache.getAccount(uid); + int opid = acc.id; + String opnick = acc.nick; + + AccountBean delacc = AccountCache.getAccount(tagId); + int delid = delacc.id; + String delnick = delacc.nick; + String delPortrait = delacc.portrait; + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + ITObject obj = new TObject(); + try { + GroupLogService.getMemberData(jedis9,delid,obj,groupId,1,0,0,true,true); + + int total_round = obj.getInt("total_round"); + long curTimee = System.currentTimeMillis()/1000; + + //GroupMemberBean mgr_gmb = GroupCache.getMember(groupId, delid); + String groupName = "队员"; + //if (mgr_gmb != null) { + if (lev < 3) { + groupName = "队长"; + } else { + groupName = "队员"; + } + //} + + ITObject userData = TObject.newInstance(); + userData.putInt("id",delid); + userData.putUtfString("nick",delnick); + userData.putInt("round",total_round); + userData.putUtfString("group",groupName); + userData.putInt("opid",opid); + userData.putUtfString("opnick",opnick); + userData.putLong("deltime",curTimee); + userData.putUtfString("portrait", delPortrait); + + String str = userData.toJson(); + + String gm_key = "kicklog_"+groupId+"_"+uid; + jedis9.lpush(gm_key, str); + + } + finally { + jedis9.close(); + } + + } + + public static final ITArray getKickLog(int groupId, int id, int limit, int num) throws Exception { + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + ITArray kickLogList = TArray.newInstance(); + + try { + String gm_key = "kicklog_"+groupId+"_"+id; + List logs = jedis9.lrange(gm_key, limit, limit+num); + + int i = 0; + + for (String _log : logs) { + ITObject kickLog = TObject.newFromJsonData(_log); + kickLogList.addTObject(kickLog); + + } + } + finally { + jedis9.close(); + } + + return kickLogList; + } + + /** + * 申请加入列表 + * + * @param groupId + * @return + * @throws Exception + */ + public static final ITArray getGroupJoins(int groupId) throws Exception { + String joins_key = GroupCache.genJoinsKey(groupId); + + Set uids = Redis.use("group1_db11").smembers(joins_key); + ITArray array = TArray.newInstance(); + for (String tem : uids) { + AccountBean acc = AccountCache.getAccount(Integer.parseInt(tem)); + ITObject obj = TObject.newInstance(); + obj.putInt("id", acc.id); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + array.addTObject(obj); + } + return array; + } + + /** + * 获取整线体力值 + * + * @param groupId + * @param tag + * @return + * @throws Exception + */ + public static final ITObject getPersonHpTotal(int groupId, int uid, int tagId) throws Exception { + String mng_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(mng_key, jedis10); + try { + lock.lock(); + + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && uid != tagId) { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + return getHpTotal(groupId, tagId, 30); + } + finally { + lock.unlock(); + } + } + + /** + * 获取整线体力值 + * + * @param groupId + * @param tag + * @return + * @throws Exception + */ + public static final ITObject getHpTotal(int groupId, int uid, int cacheTime) throws Exception { + GroupMemberBean gmb = GroupCache.getMember(groupId, uid); + if (gmb == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + if (gmb.partnerLev == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + + return getAllHpCache(groupId, uid, cacheTime); + /* + long allHp = 0; + long allOtherHp = 0; + HashSet childrenList = getMemberAllChildren(groupId, uid); + for(Integer tagId : childrenList) + { + String gm_key1 = GroupMemberCache.genKey(groupId, tagId); + String strHp = Redis.use("group1_db10").hget(gm_key1, "hp"); + if (StringUtil.isNotEmpty(strHp)) { + try { + allHp += Integer.parseInt(strHp); + } catch (Exception e) { + } + } + + String temKey = String.format("g{%s}:m%s:reward_hp", groupId, tagId); + String strtempValue = Redis.use("group1_db10").get(temKey); + if (StringUtil.isNotEmpty(strtempValue)) { + try { + allOtherHp += Integer.parseInt(strtempValue); + } catch (Exception e) { + } + } + + String mng_key = GroupMemberCache.genKey(groupId, tagId); + String r_hp = Redis.use("group1_db10").hget(mng_key, "bank_hp"); + if (StringUtil.isNotEmpty(r_hp)) { + try { + allOtherHp += Integer.parseInt(r_hp); + } catch (Exception e) { + } + } + } + + ITObject obj1 = TObject.newInstance(); + obj1.putLong("hp", allHp + allOtherHp); + obj1.putLong("total_member", childrenList.size()); + return obj1; + */ + } + + + /** + * 获取成员列表 + * + * @param groupId + * @param uid + * @param limit + * @param num + * @param minus_only + * @param type + * 1 多到少 2少到多 + * @return + * @throws Exception + */ + public static final ITObject getMembers(int groupId, int uid, int limit, int num) + throws Exception { + ITObject obj1 = TObject.newInstance(); + + String sql = "SELECT uid,hp,join_time,lev,parentId,partnerLev,ban "; + //String order_sql = "ORDER BY hp DESC,join_time ASC"; + String order_sql = "ORDER BY lev ASC, join_time DESC"; + + GroupBean gb = GroupCache.getGroup(groupId); + + GroupMemberBean mgr_gmb = GroupCache.getMember(groupId, uid); + + boolean mgr = mgr_gmb.lev < 3; + + String where = "FROM group_member WHERE groupId = " + groupId; + String count_where = where; + if (!mgr) { +// String p = Utility.getChildParentSql(groupId, uid, true); + if(limit>0) { + limit = limit -1; + } + count_where += String.format(" AND (parentId=%s or uid=%s)",uid,uid); + where += String.format(" and partnerLev=0 AND parentId=%s", uid, uid); + } + String limit_sql = String.format("limit %s,%s", limit, num); + sql = String.format("%s %s %s %s", sql, where, order_sql, limit_sql); + if (limit == 0) { + String count_sql = String.format("SELECT (SELECT COUNT(1) %s) num,(SELECT IFNULL(SUM(hp),0) %s) t_hp1" + , count_where, count_where); + ITArray arr = DataBase.use().executeQueryByTArray(count_sql); + if (arr.size() > 0) { + ITObject obj = arr.getTObject(0); + obj1.putLong("member_num", obj.getLong("num")); + obj1.putLong("hp_num1", obj.getDouble("t_hp1").longValue()); + obj1.putLong("hp_num2", 0); + } else { + obj1.putLong("member_num", 0); + obj1.putLong("hp_num1", 0); + obj1.putLong("hp_num2", 0); + } + } + + + ITArray arr = TArray.newInstance(); + if(!mgr&&limit==0) { + ITObject obj = TObject.newInstance(); + obj.putInt("uid", uid); + obj.putInt("join_time", mgr_gmb.join_time); + obj.putInt("last_time", mgr_gmb.last_time); + obj.putInt("permission", mgr_gmb.permission); + obj.putInt("parentId", mgr_gmb.parentId); + AccountBean acc = AccountCache.getAccount(uid); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + + if (mgr_gmb.parentId > 0) + { + AccountBean parent_acc = AccountCache.getAccount(mgr_gmb.parentId); + if (parent_acc != null) { + obj.putString("parentId_nick", parent_acc.nick); + } else { + String sql2 = String.format("SELECT nick FROM account WHERE id ='%d'", + mgr_gmb.parentId) ; + ITArray resultArray = DataBase.use().executeQueryByTArray(sql2); + if(resultArray.size() ==0) { + obj.putString("parentId_nick", StringUtil.Empty); + } + else + { + ITObject userData = resultArray.getTObject(0); + obj.putString("parentId_nick", userData.getUtfString("nick")); + } + } + } + else + { + obj.putString("parentId_nick", StringUtil.Empty); + } + + obj.putInt("partnerLev", mgr_gmb.partnerLev); + obj.putInt("ban", mgr_gmb.ban); + + obj.putInt("lev", 3); + + String ugm_key = GroupMemberCache.genKey(groupId, uid); + String hp = Redis.use("group1_db10").hget(ugm_key, "hp"); + obj.putLong("hp", Long.parseLong(hp)); + + arr.addTObject(obj); + } + ITArray arr1 = DataBase.use().executeQueryByTArray(sql); + if (arr1.size() > 0) { + for (int i = 0; i < arr1.size(); ++i) { + ITObject obj = arr1.getTObject(i); + AccountBean acc = AccountCache.getAccount(obj.getInt("uid")); + if (acc != null) { + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + } else { + obj.putString("nick", StringUtil.Empty); + obj.putString("portrait", StringUtil.Empty); + } + + if (obj.getInt("parentId") > 0) + { + AccountBean parent_acc = AccountCache.getAccount(obj.getInt("parentId")); + if (parent_acc != null) { + obj.putString("parentId_nick", parent_acc.nick); + } else { + String sql2 = String.format("SELECT nick FROM account WHERE id ='%d'", + obj.getInt("parentId")) ; + ITArray resultArray = DataBase.use().executeQueryByTArray(sql2); + if(resultArray.size() ==0) { + obj.putString("parentId_nick", StringUtil.Empty); + } + else + { + ITObject userData = resultArray.getTObject(0); + obj.putString("parentId_nick", userData.getUtfString("nick")); + } + } + } + else + { + if (mgr_gmb.lev == 1 && uid != obj.getInt("uid")) + { + AccountBean uid_acc = AccountCache.getAccount(uid); + obj.putInt("parentId", uid); + obj.putString("parentId_nick", uid_acc.nick); + } + else + { + obj.putString("parentId_nick", StringUtil.Empty); + } + } + + + GroupMemberBean gmb = GroupCache.getMember(groupId, acc.id); + if (gmb == null) { + arr1.del(i); + i--; + continue; + } + obj.putInt("last_time", gmb.last_time); + obj.putInt("permission", gmb.permission); + obj.putInt("score", gmb.score); + + String ugm_key = GroupMemberCache.genKey(groupId, acc.id); + String group_ban = Redis.use("group1_db10").hget(ugm_key, "group_ban"); + if (!StringUtil.isEmpty(group_ban) && Integer.parseInt(group_ban) == 1) + { + obj.putInt("group_ban",1); + } + else + { + obj.putInt("group_ban", 0); + } + + arr.addTObject(obj); + } + } + obj1.putTArray("members", arr); + obj1.putInt("limit", limit); + return obj1; + } + + + /** + * 获取合伙人所有下级成员 + * @param groupId + * @param uid + * @return + */ + public static HashSet getMemberAllChildren(int groupId,int tagId){ + String gm_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + HashSet hashSet = new HashSet<>(); + hashSet.add(tagId); + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + boolean isPartner = false; + GroupMemberBean gmb = GroupCache.getMember(groupId, tagId); + if (gmb.partnerLev > 0) { + isPartner = true; + } + + String sql; + if (isPartner) { + ArrayList arrayList = new ArrayList<>(); + arrayList.add(tagId); + + while (!arrayList.isEmpty()) { + ArrayList arrayListTemp = new ArrayList<>(); + arrayListTemp.addAll(arrayList); + arrayList.clear(); + + for (int i = 0; i < arrayListTemp.size(); ++i) { + int tmpTagId = arrayListTemp.get(i); + String child_list2 = Utility.getChildParentSql(groupId, tmpTagId, true); + + sql = String.format("select uid from group_member where groupId = %s and (parentId in(%s) or uid = %s)", groupId, child_list2, tmpTagId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql); + if (tmplist.size() > 0) { + for (int j = 0; j < tmplist.size(); ++j) { + + ITObject tem = tmplist.getTObject(j); + int childId = tem.getInt("uid"); + + if (hashSet.contains(childId)) continue; + + hashSet.add(childId); + arrayList.add(childId); + } + } + } + } + } + } + catch (Exception e) + { + + } finally { + lock.unlock(); + } + + return hashSet; + } + + public static String getMemberAllChildren2(int groupId,int tagId){ + String gm_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + HashSet hashSet = new HashSet<>(); + hashSet.add(tagId); + String list = ""; + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + boolean isPartner = false; + GroupMemberBean gmb = GroupCache.getMember(groupId, tagId); + if (gmb.partnerLev > 0) { + isPartner = true; + } + + String sql; + if (isPartner) { + ArrayList arrayList = new ArrayList<>(); + arrayList.add(tagId); + + while (!arrayList.isEmpty()) { + ArrayList arrayListTemp = new ArrayList<>(); + arrayListTemp.addAll(arrayList); + arrayList.clear(); + + for (int i = 0; i < arrayListTemp.size(); ++i) { + int tmpTagId = arrayListTemp.get(i); + String child_list2 = Utility.getChildParentSql(groupId, tmpTagId, true); + + sql = String.format("select uid,partnerLev from group_member where groupId = %s and (parentId in(%s) or uid = %s)", groupId, child_list2, tmpTagId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql); + if (tmplist.size() > 0) { + for (int j = 0; j < tmplist.size(); ++j) { + + ITObject tem = tmplist.getTObject(j); + int childId = tem.getInt("uid"); + int partnerLev = tem.getInt("partnerLev"); + + if (hashSet.contains(childId)) continue; + + hashSet.add(childId); + + if (partnerLev > 0) + arrayList.add(childId); + } + } + } + } + } + } + catch (Exception e) + { + + } finally { + } + + list += "" + tagId; + hashSet.remove(tagId); + for(Integer iid : hashSet) + { + list += "," + iid; + } + return list; + } + + public static String getMemberAllChildren3(int groupId,int tagId){ + HashSet hashSet = new HashSet<>(); + hashSet.add(tagId); + String list = ""; + try { + boolean isPartner = false; + GroupMemberBean gmb = GroupCache.getMember(groupId, tagId); + if (gmb.partnerLev > 0) { + isPartner = true; + } + + String sql = ""; + if (isPartner) { + ArrayList arrayList = new ArrayList<>(); + arrayList.add(tagId); + + while (!arrayList.isEmpty()) { + String strParentId = "" + arrayList.get(0); + for(int i = 1; i < arrayList.size(); i++) { + strParentId += "," + arrayList.get(i); + } + arrayList.clear(); + + sql = String.format("select uid,partnerLev from group_member where groupId = %s and (parentId in(%s))", groupId, strParentId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql); + if (tmplist.size() > 0) { + for (int j = 0; j < tmplist.size(); ++j) { + + ITObject tem = tmplist.getTObject(j); + int childId = tem.getInt("uid"); + int partnerLev = tem.getInt("partnerLev"); + + if (hashSet.contains(childId)) continue; + + hashSet.add(childId); + + if (partnerLev > 0) + arrayList.add(childId); + } + } + } + } + } + catch (Exception e) + { + + } finally { + } + + list += "" + tagId; + hashSet.remove(tagId); + for(Integer iid : hashSet) + { + list += "," + iid; + } + return list; + } + + /** + * 获取成员列表 + * + * @param groupId + * @param tagId + * @param limit + * @param num + * @param minus_only + * @param type + * 1 多到少 2少到多 + * @return + * @throws Exception + */ + public static final ITObject getMembers_1(int groupId, int uid, int tagId, int online, int type,int limit, int num) + throws Exception { + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10.close(); + } + + + ITObject obj1 = TObject.newInstance(); + + String sql = "SELECT uid,hp,join_time,lev,parentId,partnerLev,ban "; + String order_sql = "ORDER BY hp DESC,join_time,uid ASC"; + + GroupBean gb = GroupCache.getGroup(groupId); + + GroupMemberBean mgr_gmb = GroupCache.getMember(groupId, tagId); + + boolean mgr = mgr_gmb.lev < 3; + + String where = "FROM group_member WHERE groupId = " + groupId; + long allOtherHp = 0; + long allNum = 0; + if (!mgr) { +// String p = Utility.getChildParentSql(groupId, uid, true); + if(limit>0) { + limit = limit -1; + } + where += String.format(" AND parentId=%s", tagId); + } + else { + if (type == 1) + { + GroupBean groupBean = GroupCache.getGroup(groupId); + + where += String.format(" AND (parentId=%s OR parentId = 0)", groupBean.owner); + } + } + + String limit_sql = String.format("limit %s,%s", limit, num); + sql = String.format("%s %s %s %s", sql, where, order_sql, limit_sql); + + ITArray arr = TArray.newInstance(); + if(limit==0) { + ITObject obj = TObject.newInstance(); + obj.putInt("uid", tagId); + obj.putInt("join_time", mgr_gmb.join_time); + obj.putInt("last_time", mgr_gmb.last_time); + obj.putInt("permission", mgr_gmb.permission); + obj.putInt("parentId", mgr_gmb.parentId); + AccountBean acc = AccountCache.getAccount(tagId); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + obj.putInt("online", 1); + + if (mgr_gmb.parentId > 0) + { + AccountBean parent_acc = AccountCache.getAccount(mgr_gmb.parentId); + if (parent_acc != null) { + obj.putString("parentId_nick", parent_acc.nick); + } else { + String sql2 = String.format("SELECT nick FROM account WHERE id ='%d'", + mgr_gmb.parentId) ; + ITArray resultArray = DataBase.use().executeQueryByTArray(sql2); + if(resultArray.size() ==0) { + obj.putString("parentId_nick", StringUtil.Empty); + } + else + { + ITObject userData = resultArray.getTObject(0); + obj.putString("parentId_nick", userData.getUtfString("nick")); + } + } + } + else + { + obj.putString("parentId_nick", StringUtil.Empty); + } + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + int endtime = DateUtils.getBeginDay() + 86400; + int begintime = endtime - 86400*30; + GroupLogService.getMemberData(jedis9,acc.id,obj,groupId,0,begintime,endtime,false,false); + } + finally { + jedis9.close(); + } + + obj.putInt("partnerLev", mgr_gmb.partnerLev); + obj.putInt("ban", mgr_gmb.ban); + + obj.putInt("lev", mgr_gmb.lev); + + String ugm_key = GroupMemberCache.genKey(groupId, tagId); + String hp = Redis.use("group1_db10").hget(ugm_key, "hp"); + obj.putLong("hp", Long.parseLong(hp)); + + arr.addTObject(obj); + } + log.info("sql:"+sql); + ITArray arr1 = DataBase.use().executeQueryByTArray(sql); + if (arr1.size() > 0) { + for (int i = 0; i < arr1.size(); ++i) { + ITObject obj = arr1.getTObject(i); + AccountBean acc = AccountCache.getAccount(obj.getInt("uid")); + if (acc==null){ + continue; + } + if (limit==0 && acc.id == tagId) + { + continue; + } + if (acc != null) { + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + } else { + obj.putString("nick", StringUtil.Empty); + obj.putString("portrait", StringUtil.Empty); + } + + if (obj.getInt("parentId") > 0) + { + AccountBean parent_acc = AccountCache.getAccount(obj.getInt("parentId")); + if (parent_acc != null) { + obj.putString("parentId_nick", parent_acc.nick); + } else { + String sql2 = String.format("SELECT nick FROM account WHERE id ='%d'", + obj.getInt("parentId")) ; + ITArray resultArray = DataBase.use().executeQueryByTArray(sql2); + if(resultArray.size() ==0) { + obj.putString("parentId_nick", StringUtil.Empty); + } + else + { + ITObject userData = resultArray.getTObject(0); + obj.putString("parentId_nick", userData.getUtfString("nick")); + } + } + } + else + { + if (mgr_gmb.lev < 3) + { + if (obj.getInt("lev") <= 2 && tagId != obj.getInt("uid")) + { + AccountBean uid_acc = AccountCache.getAccount(tagId); + obj.putInt("parentId", tagId); + obj.putString("parentId_nick", uid_acc.nick); + + log.info("litte mgr uid:" + obj.getInt("uid")); + } + else if (obj.getInt("lev") == 3 && tagId != obj.getInt("uid")) + { + AccountBean uid_acc = AccountCache.getAccount(tagId); + obj.putInt("parentId", tagId); + obj.putString("parentId_nick", uid_acc.nick); + + log.info("aa litte mgr uid:" + obj.getInt("uid")); + } + } + } + + + GroupMemberBean gmb = GroupCache.getMember(groupId, acc.id); + if (gmb == null) { + arr1.del(i); + i--; + continue; + } + obj.putInt("last_time", gmb.last_time); + obj.putInt("permission", gmb.permission); + obj.putInt("score", gmb.score); + obj.putInt("queueid", gmb.queueid); + obj.putInt("seeid", gmb.seeid); + + String ugm_key = GroupMemberCache.genKey(groupId, acc.id); + String group_ban = Redis.use("group1_db10").hget(ugm_key, "group_ban"); + if (!StringUtil.isEmpty(group_ban) && Integer.parseInt(group_ban) == 1) + { + obj.putInt("group_ban",1); + } + else + { + obj.putInt("group_ban", 0); + } + + obj.putInt("online", 1); + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + int endtime = DateUtils.getBeginDay() + 86400; + int begintime = endtime - 86400*30; + GroupLogService.getMemberData(jedis9,acc.id,obj,groupId,0, begintime, endtime,false,false); + } + finally { + jedis9.close(); + } + + arr.addTObject(obj); + } + } + + //log.info("arr = "+ arr); + + obj1.putLong("otherHp", allOtherHp); + obj1.putLong("member_num", 0); + obj1.putLong("hp_num1", 0); + obj1.putLong("hp_num2", 0); + obj1.putTArray("members", arr); + obj1.putInt("limit", limit); + + return obj1; + } + + public static final ITObject getAllHpCache(int groupId, int uid, int cache_time) throws Exception { + String gm_key = GroupMemberCache.genKey(groupId, uid); + String all_temp_hp_key = gm_key + ":all_temp_hp"; + String all_temp_member_key = gm_key + ":all_temp_total_member"; + String all_temp_hp = Redis.use("group1_db10").get(all_temp_hp_key); + String all_temp_member = Redis.use("group1_db10").get(all_temp_member_key); + ITObject obj1 = TObject.newInstance(); + if (all_temp_hp == null || StringUtil.isEmpty(all_temp_hp) || all_temp_member == null || StringUtil.isEmpty(all_temp_member)) + { + obj1.putLong("hp", 0); + obj1.putLong("total_member", 0); + + /* + String child_sql = String.format("{? = call selectPartnerChildHpByParentId(%s,%s)}", uid, groupId); + String child_key = String.format("selectPartnerChildHpByParentId(%s,%s)", uid, groupId); + ITArray temparr = new TArray(); + try { + temparr = DataBase.use().executeCall(child_sql, true); + }catch (Exception e) { + e.printStackTrace(); + } + + if (temparr.size() > 0) + { + TDataWrapper data = temparr.get(0); + TObject map = (TObject)data.getObject(); + String key_value = map.getString(child_key); + String[] split = key_value.split(","); + if (split.length == 2) + { + long _allHp = Long.parseLong(split[0]); + long _allNum = Long.parseLong(split[1]); + + obj1.putLong("hp", _allHp); + obj1.putLong("total_member", _allNum); + + Redis.use("group1_db10").set(all_temp_hp_key, ""+_allHp); + Redis.use("group1_db10").expire(all_temp_hp_key, cache_time); + Redis.use("group1_db10").set(all_temp_member_key, ""+_allNum); + Redis.use("group1_db10").expire(all_temp_member_key, cache_time); + } + } + */ + String sql = "SELECT uid "; + String where = "FROM group_member WHERE groupId = " + groupId; + String count_where = where; + String childSql = getMemberAllChildren3(groupId, uid); + count_where = String.format(" %s and uid in (%s)", where, childSql); + String count_sql = String.format("SELECT (SELECT COUNT(1) %s) num,(SELECT IFNULL(SUM(hp+bank_hp+reward_hp),0) %s) t_hp1" + , count_where, count_where); + ITArray arr = DataBase.use().executeQueryByTArray(count_sql); + if (arr.size() > 0) { + ITObject obj = arr.getTObject(0); + + long _allHp = obj.getDouble("t_hp1").longValue(); + long _allNum = obj.getLong("num"); + + obj1.putLong("hp", _allHp); + obj1.putLong("total_member", _allNum); + + Redis.use("group1_db10").set(all_temp_hp_key, ""+_allHp); + Redis.use("group1_db10").expire(all_temp_hp_key, cache_time); + Redis.use("group1_db10").set(all_temp_member_key, ""+_allNum); + Redis.use("group1_db10").expire(all_temp_member_key, cache_time); + } else { + obj1.putLong("hp", 0); + obj1.putLong("total_member", 0); + } + } + else { + obj1.putLong("hp", Long.parseLong(all_temp_hp)); + obj1.putLong("total_member", Long.parseLong(all_temp_member)); + } + + return obj1; + } + + /** + * 获取成员列表 + * + * @param groupId + * @param uid + * @param limit + * @param num + * @param minus_only + * @param type + * 1 多到少 2少到多 + * @return + * @throws Exception + */ + public static final ITObject getMemberCount(int groupId, int uid) + throws Exception { + ITObject obj1 = TObject.newInstance(); + + String sql = "SELECT uid "; + + GroupMemberBean mgr_gmb = GroupCache.getMember(groupId, uid); + + boolean mgr = mgr_gmb.lev < 3; + + String where = "FROM group_member WHERE groupId = " + groupId; + String count_where = where; + long allOtherHp = 0; + long allHp = 0; + if (!mgr) { + obj1.putLong("member_num", 0); + obj1.putLong("hp_num1", 0); + obj1.putLong("hp_num2", 0); + + ITObject obj2 = getAllHpCache(groupId, uid, 30); + obj1.putLong("member_num", obj2.getLong("total_member")); + obj1.putLong("hp_num1", obj2.getLong("hp")); + obj1.putLong("hp_num2", 0); + + /* + HashSet childrenList = getMemberAllChildren(groupId, uid); + for(Integer tagId : childrenList) + { + String gm_key1 = GroupMemberCache.genKey(groupId, tagId); + String strHp = Redis.use("group1_db10").hget(gm_key1, "hp"); + if (StringUtil.isNotEmpty(strHp)) { + try { + allHp += Integer.parseInt(strHp); + } catch (Exception e) { + } + } + + String temKey = String.format("g{%s}:m%s:reward_hp", groupId, tagId); + String strtempValue = Redis.use("group1_db10").get(temKey); + if (StringUtil.isNotEmpty(strtempValue)) { + try { + allOtherHp += Integer.parseInt(strtempValue); + } catch (Exception e) { + } + } + + String mng_key = GroupMemberCache.genKey(groupId, tagId); + String r_hp = Redis.use("group1_db10").hget(mng_key, "bank_hp"); + if (StringUtil.isNotEmpty(r_hp)) { + try { + allOtherHp += Integer.parseInt(r_hp); + } catch (Exception e) { + } + } + } + obj1.putLong("member_num", childrenList.size()); + obj1.putLong("hp_num1", allHp); + obj1.putLong("hp_num2", 0); + */ + } + else { + /* + sql = String.format("%s %s", sql, where); + String count_sql = String.format("SELECT (SELECT COUNT(1) %s) num,(SELECT IFNULL(SUM(hp+reward_hp+bank_hp),0) %s) t_hp1" + , count_where, count_where); + ITArray arr = DataBase.use().executeQueryByTArray(count_sql); + if (arr.size() > 0) { + ITObject obj = arr.getTObject(0); + allHp = obj.getDouble("t_hp1").longValue(); + obj1.putLong("member_num", obj.getLong("num")); + obj1.putLong("hp_num1", obj.getDouble("t_hp1").longValue()); + obj1.putLong("hp_num2", 0); + } else { + obj1.putLong("member_num", 0); + obj1.putLong("hp_num1", 0); + obj1.putLong("hp_num2", 0); + } + */ + sql = String.format("%s %s", sql, where); + String count_sql = String.format("SELECT (SELECT COUNT(1) %s) num,(SELECT IFNULL(SUM(hp+bank_hp+reward_hp),0) %s) t_hp1" + , count_where, count_where); + ITArray arr = DataBase.use().executeQueryByTArray(count_sql); + if (arr.size() > 0) { + ITObject obj = arr.getTObject(0); + allHp = obj.getDouble("t_hp1").longValue(); + obj1.putLong("member_num", obj.getLong("num")); + obj1.putLong("hp_num1", obj.getDouble("t_hp1").longValue()); + obj1.putLong("hp_num2", 0); + } else { + obj1.putLong("member_num", 0); + obj1.putLong("hp_num1", 0); + obj1.putLong("hp_num2", 0); + } + /* + ITArray arr1 = DataBase.use().executeQueryByTArray(sql); + if (arr1.size() > 0) { + for (int i = 0; i < arr1.size(); ++i) { + ITObject obj = arr1.getTObject(i); + int tagId = obj.getInt("uid"); + + String temKey = String.format("g{%s}:m%s:reward_hp", groupId, tagId); + String strtempValue = Redis.use("group1_db10").get(temKey); + if (StringUtil.isNotEmpty(strtempValue)) { + try { + allOtherHp += Integer.parseInt(strtempValue); + } catch (Exception e) { + } + } + + + String mng_key = GroupMemberCache.genKey(groupId, tagId); + String r_hp = Redis.use("group1_db10").hget(mng_key, "bank_hp"); + if (StringUtil.isNotEmpty(r_hp)) { + try { + allOtherHp += Integer.parseInt(r_hp); + } catch (Exception e) { + } + } + } + } + */ + } + + + + + //log.info("arr = "+ arr); + + obj1.putLong("otherHp", allOtherHp); + + if (mgr_gmb.lev == 1) + { + log.info("otherHp = "+ allOtherHp); + log.info("allHp = "+ allHp); + } + + return obj1; + } + + + /** + * 查询成员 + * + * @param groupId + * @param uid + * @return + * @throws Exception + */ + public static final ITObject findMember(int groupId, int uid, int queryId,String tagName) throws Exception { + + ITObject obj = TObject.newInstance(); + ITArray array = TArray.newInstance(); + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + List memberParents = Utility.getMemberParents(jedis10,groupId,queryId,true); + + String ugm_key = GroupMemberCache.genKey(groupId, uid); + String lev = jedis10.hget(ugm_key, "lev"); + int _lev = StringUtil.isNotEmpty(lev) ? Integer.parseInt(lev) : 3; + + String gm_key = GroupMemberCache.genKey(groupId, queryId); + Map map = null; + + while(queryId > 0) { + + map = jedis10.hgetAll(gm_key); + if (map.size() == 0 || Integer.parseInt(map.get("opt")) == 2) { + break; + } + + int parentId = Integer.parseInt(map.get("parentId")); + if (_lev == 3) { + + if (parentId == 0) { + break; + } + + if (!memberParents.contains(uid)) { + break; + } + } + + ITObject temp = TObject.newInstance(); + temp.putInt("uid", queryId); + temp.putLong("hp", Long.parseLong(map.get("hp"))); + temp.putInt("join_time", Integer.parseInt(map.get("join_time"))); + temp.putInt("lev", Integer.parseInt(map.get("lev"))); + temp.putInt("parentId", Integer.parseInt(map.get("parentId"))); + temp.putInt("queueid", Integer.parseInt(map.get("queueid")==null?"0":map.get("queueid"))); + temp.putInt("seeid", Integer.parseInt(map.get("seeid")==null?"0":map.get("seeid"))); + if (Integer.parseInt(map.get("parentId")) > 0) + { + AccountBean parent_acc = AccountCache.getAccount(Integer.parseInt(map.get("parentId"))); + if (parent_acc != null) { + temp.putString("parentId_nick", parent_acc.nick); + } else { + String sql2 = String.format("SELECT nick FROM account WHERE id ='%d'", + Integer.parseInt(map.get("parentId"))) ; + ITArray resultArray = DataBase.use().executeQueryByTArray(sql2); + if(resultArray.size() ==0) { + temp.putString("parentId_nick", StringUtil.Empty); + } + else + { + ITObject userData = resultArray.getTObject(0); + temp.putString("parentId_nick", userData.getUtfString("nick")); + } + } + } + else + { + if (_lev == 1 && uid != queryId) + { + AccountBean uid_acc = AccountCache.getAccount(uid); + temp.putInt("parentId", uid); + temp.putString("parentId_nick", uid_acc.nick); + } + else + { + temp.putString("parentId_nick", StringUtil.Empty); + } + } + + temp.putInt("partnerLev", Integer.parseInt(map.get("partnerLev"))); + temp.putInt("ban", Integer.parseInt(map.get("ban"))); + + String group_ban = Redis.use("group1_db10").hget(gm_key, "group_ban"); + if (!StringUtil.isEmpty(group_ban) && Integer.parseInt(group_ban) == 1) + { + temp.putInt("group_ban",1); + } + else + { + temp.putInt("group_ban", 0); + } + AccountBean acc = AccountCache.getAccount(queryId); + temp.putString("nick", acc.nick); + temp.putString("portrait", acc.portrait); + String last_time = map.get("last_time"); + + temp.putInt("last_time", StringUtil.isNotEmpty(last_time) ? Integer.parseInt(last_time) : 0); + String permission = map.get("permission"); + temp.putInt("permission", StringUtil.isNotEmpty(permission) ? Integer.parseInt(permission) : 0); + temp.putInt("queueid", Integer.parseInt(map.get("queueid")==null?"0":map.get("queueid"))); + temp.putInt("seeid", Integer.parseInt(map.get("seeid")==null?"0":map.get("seeid"))); + + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + int endtime = DateUtils.getBeginDay() + 86400; + int begintime = endtime - 86400*30; + GroupLogService.getMemberData(jedis9,acc.id,temp,groupId,0,begintime,endtime,false,false); + } + finally { + jedis9.close(); + } + + array.addTObject(temp); + break; + } + + if(StringUtil.isNotEmpty(tagName)) { + + String sql = String.format("select id from account as a " + + "right join group_member as b " + + "on a.id = b.uid and b.groupId =%s " + + "where nick like '%%%s%%'", groupId,tagName); + + ITArray arr =DataBase.use().executeQueryByTArray(sql); + if(arr.size() > 0) { + + for(int i = 0; i < arr.size(); i++) { + + int tag = arr.getTObject(i).getInt("id"); + + if(queryId > 0 && tag == queryId) { + continue; + } + + gm_key = GroupMemberCache.genKey(groupId, tag); + + map = jedis10.hgetAll(gm_key); + if (map.size() == 0 || Integer.parseInt(map.get("opt")) == 2) { + continue; + } + + int parentId = Integer.parseInt(map.get("parentId")); + if (_lev == 3) { + + if (parentId == 0) { + continue; + } + + if (parentId!=uid) { + continue; + } + } + + ITObject temp = TObject.newInstance(); + temp.putInt("uid", tag); + temp.putInt("hp", Integer.parseInt(map.get("hp"))); + temp.putInt("join_time", Integer.parseInt(map.get("join_time"))); + temp.putInt("lev", Integer.parseInt(map.get("lev"))); + temp.putInt("parentId", Integer.parseInt(map.get("parentId"))); + temp.putInt("queueid", Integer.parseInt(map.get("queueid")==null?"0":map.get("queueid"))); + temp.putInt("seeid", Integer.parseInt(map.get("seeid")==null?"0":map.get("seeid"))); + if (Integer.parseInt(map.get("parentId")) > 0) + { + AccountBean parent_acc = AccountCache.getAccount(Integer.parseInt(map.get("parentId"))); + if (parent_acc != null) { + temp.putString("parentId_nick", parent_acc.nick); + } else { + String sql2 = String.format("SELECT nick FROM account WHERE id ='%d'", + Integer.parseInt(map.get("parentId"))) ; + ITArray resultArray = DataBase.use().executeQueryByTArray(sql2); + if(resultArray.size() ==0) { + temp.putString("parentId_nick", StringUtil.Empty); + } + else + { + ITObject userData = resultArray.getTObject(0); + temp.putString("parentId_nick", userData.getUtfString("nick")); + } + } + } + else + { + if (_lev == 1 && uid != tag) + { + AccountBean uid_acc = AccountCache.getAccount(uid); + temp.putInt("parentId", uid); + temp.putString("parentId_nick", uid_acc.nick); + } + else + { + temp.putString("parentId_nick", StringUtil.Empty); + } + } + + temp.putInt("partnerLev", Integer.parseInt(map.get("partnerLev"))); + temp.putInt("ban", Integer.parseInt(map.get("ban"))); + temp.putInt("queueid", Integer.parseInt(map.get("queueid")==null?"0":map.get("queueid"))); + temp.putInt("seeid", Integer.parseInt(map.get("seeid")==null?"0":map.get("seeid"))); + AccountBean acc = AccountCache.getAccount(tag); + temp.putString("nick", acc.nick); + temp.putString("portrait", acc.portrait); + String last_time = map.get("last_time"); + temp.putInt("last_time", StringUtil.isNotEmpty(last_time) ? Integer.parseInt(last_time) : 0); + String permission = map.get("permission"); + temp.putInt("permission", StringUtil.isNotEmpty(permission) ? Integer.parseInt(permission) : 0); + + array.addTObject(temp); + } + } + } + } + finally { + jedis10.close(); + } + + + obj.putTArray("members", array); + return obj; + } + + /** + * + * @param groupId + * @param uid + * @return + * @throws Exception + */ + public static final ITObject findMember1(int groupId, int uid) throws Exception { + String gm_key = GroupMemberCache.genKey(groupId, uid); + Map map = Redis.use("group1_db10").hgetAll(gm_key); + if (map.size() == 0 || Integer.parseInt(map.get("opt")) == 2) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + ITObject obj = TObject.newInstance(); + obj.putInt("uid", uid); + obj.putLong("hp", Long.parseLong(map.get("hp"))); + AccountBean acc = AccountCache.getAccount(uid); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + return obj; + } + + /** + * 获取成员上级列表 + * + * @param groupId + * @param uid + * @return + */ + public static final ITArray getMemberParents(int groupId, int uid) { + ITArray list = TArray.newInstance(); + List t_list = Utility.getMemberParents(groupId, uid); + if (t_list != null) { + for (Integer n : t_list) { + list.addInt(n); + } + } + return list; + } + + /** + * + * @param groupId + * @param uid + * @return + */ + public static final int getParents(int groupId,int uid){ + GroupMemberBean gmb = GroupCache.getMember(groupId, uid); + if (gmb== null){ + return 0; + } + return gmb.parentId; + } + + /** + * 获取合伙人列表 + * + * @param groupId + * @param page + * @return + * @throws Exception + */ + public static final ITObject getPartners(int groupId, int uid, int limit, int num, int qid) throws Exception { + ITObject obj1 = TObject.newInstance(); + String qid_sql = StringUtil.Empty; + GroupMemberBean gmb = GroupCache.getMember(groupId, uid); + boolean self = qid == 0 || qid == uid; + ITArray arr1 = TArray.newInstance(); + if (self && gmb.lev == 3 && limit == 0) { + ITObject obj = TObject.newInstance(); + obj.putInt("uid", uid); + AccountBean acc = AccountCache.getAccount(uid); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + obj.putInt("partnerLev", gmb.partnerLev); + arr1.addTObject(obj); + } + if (qid != uid) { + if (qid > 0) { + qid_sql = "AND uid=" + qid; + } + String sql = String.format( + "SELECT uid,partnerLev FROM group_member where groupId =%s and parentId=%s %s and partnerLev>0 limit %s,%s", + groupId, uid, qid_sql, limit, num); + ITArray arr = DataBase.use().executeQueryByTArray(sql); + if (arr.size() > 0) { + for (int i = 0; i < arr.size(); ++i) { + ITObject obj = arr.getTObject(i); + AccountBean acc = AccountCache.getAccount(obj.getInt("uid")); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + arr1.addTObject(obj); + } + } + } + + obj1.putTArray("members", arr1); + obj1.putInt("limit", limit); + return obj1; + } + + /** + * 获取指定合伙人奖励数据 + * + * @param groupId + * @param parentId + * @param tagId + * @param partnerLev + * @return + */ + public static final void getRewards(int groupId, int parentId, int tagId, int partnerLev, ITObject resData) { + + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + if (pids.size() == 0) { + return; + } + + boolean isShowXiPai = false; + boolean isShowAnChou = false; + GroupBean gb = GroupCache.getGroup(groupId); + if (gb != null) + { + if (gb.owner == parentId) + { + isShowXiPai = true; + isShowAnChou = true; + } + } + + + ITArray arr = TArray.newInstance(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, parentId); + if (uid_bean == null) { + return; + } + + if (uid_bean.lev >= 3 && parentId != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(parentId)) { + return; + } + } + + for (String str : pids) { + int pid = Integer.parseInt(str); + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb == null) + continue; + + int cur_value = 0; + int max_value = 0; + + int xipai_cur_value = 0; + int xipai_max_value = 0; + + int anchou_cur_value = 0; + int anchou_max_value = 0; + + String p_reward_key = GroupCache.genRewardKey(groupId, pid); + Double tem = jedis10.zscore(p_reward_key, tagId + ""); + cur_value = tem==null?0:tem.intValue(); + if (partnerLev == 1) { + max_value =gpb.reward; + } else { + tem = jedis10.zscore(p_reward_key, parentId + ""); + max_value = tem==null?0:tem.intValue(); + } + + //洗牌 + String p_xipai_reward_key = GroupCache.genXiPaiRewardKey(groupId, pid); + Double xipai_tem = jedis10.zscore(p_xipai_reward_key, tagId + ""); + xipai_cur_value = xipai_tem==null?0:xipai_tem.intValue(); + if (partnerLev == 1) { + xipai_max_value =gpb.xipai_reward; + } else { + xipai_tem = jedis10.zscore(p_xipai_reward_key, parentId + ""); + xipai_max_value = xipai_tem==null?0:xipai_tem.intValue(); + if (gpb.xipai_rewardValueType == 1 && xipai_max_value > 99) + { + xipai_max_value = 100; + } + } + + if (isShowXiPai == false) { + Double parent_xipai_tem = jedis10.zscore(p_xipai_reward_key, parentId + ""); + int parent_xipai_cur_value = parent_xipai_tem==null?0:parent_xipai_tem.intValue(); + if (parent_xipai_cur_value > 0) + { + isShowXiPai = true; + } + } + + //按抽 + String p_anchou_reward_key = GroupCache.genAnChouRewardKey(groupId, pid); + Double anchou_tem = jedis10.zscore(p_anchou_reward_key, tagId + ""); + anchou_cur_value = anchou_tem==null?0:anchou_tem.intValue(); + if (partnerLev == 1) { + anchou_max_value =gpb.anchou_reward; + } else { + anchou_tem = jedis10.zscore(p_anchou_reward_key, parentId + ""); + anchou_max_value = anchou_tem==null?0:anchou_tem.intValue(); + if (gpb.anchou_rewardValueType == 1 && anchou_max_value > 99) + { + anchou_max_value = 100; + } + } + + if (isShowAnChou == false) { + Double parent_anchou_tem = jedis10.zscore(p_anchou_reward_key, parentId + ""); + int parent_anchou_cur_value = parent_anchou_tem==null?0:parent_anchou_tem.intValue(); + if (parent_anchou_cur_value > 0) + { + isShowAnChou = true; + } + } + + ITObject obj = TObject.newInstance(); + obj.putInt("pid", pid); + obj.putInt("rewardType", gpb.rewardType); + obj.putInt("xipai_rewardType", gpb.xipai_rewardType); + obj.putInt("cur_value", cur_value); + obj.putInt("max_value", max_value); + obj.putInt("xipai_cur_value", xipai_cur_value); + obj.putInt("xipai_max_value", xipai_max_value); + obj.putInt("rewardValueType", gpb.rewardValueType); + obj.putInt("xipai_rewardValueType", gpb.xipai_rewardValueType); + + obj.putInt("anchou_rewardType", gpb.anchou_rewardType); + obj.putInt("anchou_cur_value", anchou_cur_value); + obj.putInt("anchou_max_value", anchou_max_value); + obj.putInt("anchou_rewardValueType", gpb.anchou_rewardValueType); + arr.addTObject(obj); + } + } finally { + jedis10.close(); + } + + resData.putTArray("rewards", arr); + resData.putBoolean("showxipai", isShowXiPai); + //resData.putBoolean("showxipai", isShowAnChou); + } + + /** + * + * @param groupId + */ + public static final int setReward(int groupId, int parentId, int tagId, int partnerLev, int pid, int value, + boolean all, int isSingle) throws Exception { + log.info("setReward parentId:" + parentId + " tagId:" + tagId +" pid:" + pid + " value:" + value + " all:"+all + " isSingle:" + isSingle); + + GroupPlayBean gpbm = GroupCache.getPlay(groupId, pid); + if(gpbm==null) { + throw new WebException(ErrorCode.GROUP_PLAY_EXIST); + } + + ITObject hpObj = TObject.newFromJsonData(gpbm.hpConfig); + int maxRound = 0; + if (hpObj.getInt("maxRound") != null) { + maxRound = hpObj.getInt("maxRound"); + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock("group_play_award_lock", jedis10); + lock.lock(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, parentId); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && parentId != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(parentId)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + String p_reward_key = GroupCache.genRewardKey(groupId,pid); + int p_reward = 0; + + if (partnerLev == 1) { + p_reward = gpbm.reward; + } else { + Double tem = jedis10.zscore(p_reward_key, parentId + ""); + p_reward = tem == null ? 0 : tem.intValue(); + } + + if (value > p_reward) { + return ErrorCode._FAILED; + } + + int tagOldReward = 0; + int diff = 0; + Double tem = jedis10.zscore(p_reward_key, tagId + ""); + tagOldReward = tem == null ? 0 : tem.intValue(); + if(value < tagOldReward) { + diff = tagOldReward - value; + } + + if (!all) { + + jedis10.zadd(p_reward_key, value, tagId + ""); + + if(diff > 0) { + + List listParent = Utility.getChildParentList(groupId,tagId,false); + for(Integer parId : listParent) { + + Double temPar = jedis10.zscore(p_reward_key, parId + ""); + p_reward = temPar == null ? 0 : temPar.intValue(); + + int newValue = 0; + if(p_reward > diff) { + + newValue = p_reward - diff; + } + jedis10.zadd(p_reward_key, newValue, parId + ""); + } + } + } + else { + + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + if(pids.size() > 0) { + + for(String strPid : pids) { + p_reward_key = GroupCache.genRewardKey(groupId,Integer.parseInt(strPid)); + GroupPlayBean gpb = GroupCache.getPlay(groupId, Integer.parseInt(strPid)); + + if (isSingle > 0) + { + ITObject hpObjTemp = TObject.newFromJsonData(gpb.hpConfig); + int tempMaxRound = 0; + if (hpObjTemp.getInt("maxRound") != null) { + tempMaxRound = hpObjTemp.getInt("maxRound"); + } + + if (tempMaxRound<1) + { + log.info("跳过maxRound:"+maxRound); + log.info("跳过tempMaxRound:"+tempMaxRound); + log.info("跳过pid:"+strPid); + + continue; + } + } + + if(gpb.rewardValueType == gpbm.rewardValueType) { + + int p_reward_max = 0; + if (partnerLev == 1) { + p_reward_max = gpb.reward; + } + else { + tem = jedis10.zscore(p_reward_key, parentId + ""); + p_reward_max = tem == null ? 0 : tem.intValue(); + } + + if(p_reward_max < value ) { + return ErrorCode._FAILED; + } + } + + } + + + for(String strPid : pids) { + tagOldReward = 0; + diff = 0; + GroupPlayBean gpb = GroupCache.getPlay(groupId, Integer.parseInt(strPid)); + + if (isSingle > 0) + { + ITObject hpObjTemp = TObject.newFromJsonData(gpb.hpConfig); + int tempMaxRound = 0; + if (hpObjTemp.getInt("maxRound") != null) { + tempMaxRound = hpObjTemp.getInt("maxRound"); + } + + if (tempMaxRound<1) + { + log.info("跳过maxRound:"+maxRound); + log.info("跳过tempMaxRound:"+tempMaxRound); + + log.info("跳过pid:"+strPid); + + continue; + } + } + + if(gpb.rewardValueType == gpbm.rewardValueType) { + + + p_reward_key = GroupCache.genRewardKey(groupId,Integer.parseInt(strPid)); + tem = jedis10.zscore(p_reward_key, tagId + ""); + tagOldReward = tem == null ? 0 : tem.intValue(); + if(value < tagOldReward) { + diff = tagOldReward - value; + } + jedis10.zadd(p_reward_key, value, tagId + ""); + + if(diff > 0) { + + List listParent = Utility.getChildParentList(groupId,tagId,false); + for(Integer parId : listParent) { + + Double temPar = jedis10.zscore(p_reward_key, parId + ""); + p_reward = temPar == null ? 0 : temPar.intValue(); + + int newValue = 0; + if(p_reward > diff) { + + newValue = p_reward - diff; + } + jedis10.zadd(p_reward_key, newValue, parId + ""); + } + } + + }else { + log.info("玩法规则不一致,跳过pid:"+strPid); + + } + } + + } + } + } + finally { + lock.unlock(); + } + + return 0; + } + + public static final int setAnChouReward(int groupId, int parentId, int tagId, int partnerLev, int pid, int value, + boolean all, int isSingle) throws Exception { + log.info("setAnChouReward parentId:" + parentId + " tagId:" + tagId +" pid:" + pid + " value:" + value + " all:"+all + " isSingle:" + isSingle); + + GroupPlayBean gpbm = GroupCache.getPlay(groupId, pid); + if(gpbm==null) { + throw new WebException(ErrorCode.GROUP_PLAY_EXIST); + } + + ITObject hpObj = TObject.newFromJsonData(gpbm.hpConfig); + int maxRound = 0; + if (hpObj.getInt("maxRound") != null) { + maxRound = hpObj.getInt("maxRound"); + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock("group_play_award_lock", jedis10); + lock.lock(); + try { + + GroupMemberBean uid_bean = GroupCache.getMember(groupId, parentId); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && parentId != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(parentId)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + String p_reward_key = GroupCache.genAnChouRewardKey(groupId,pid); + int p_reward = 0; + + if (partnerLev == 1) { + p_reward = gpbm.anchou_reward; + } else { + Double tem = jedis10.zscore(p_reward_key, parentId + ""); + p_reward = tem == null ? 0 : tem.intValue(); + } + + if (value > p_reward) { + return ErrorCode._FAILED; + } + + int tagOldReward = 0; + int diff = 0; + Double tem = jedis10.zscore(p_reward_key, tagId + ""); + tagOldReward = tem == null ? 0 : tem.intValue(); + if(value < tagOldReward) { + diff = tagOldReward - value; + } + + if (!all) { + + jedis10.zadd(p_reward_key, value, tagId + ""); + + if(diff > 0) { + + List listParent = Utility.getChildParentList(groupId,tagId,false); + for(Integer parId : listParent) { + + Double temPar = jedis10.zscore(p_reward_key, parId + ""); + p_reward = temPar == null ? 0 : temPar.intValue(); + + int newValue = 0; + if(p_reward > diff) { + + newValue = p_reward - diff; + } + jedis10.zadd(p_reward_key, newValue, parId + ""); + } + } + } + else { + + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + if(pids.size() > 0) { + + for(String strPid : pids) { + + p_reward_key = GroupCache.genAnChouRewardKey(groupId,Integer.parseInt(strPid)); + GroupPlayBean gpb = GroupCache.getPlay(groupId, Integer.parseInt(strPid)); + + if (isSingle > 0) + { + ITObject hpObjTemp = TObject.newFromJsonData(gpb.hpConfig); + int tempMaxRound = 0; + if (hpObjTemp.getInt("maxRound") != null) { + tempMaxRound = hpObjTemp.getInt("maxRound"); + } + + if ((maxRound == 1 && tempMaxRound != 1) || (maxRound != 1 && tempMaxRound == 1)) + { + continue; + } + } + + if(gpb.anchou_rewardValueType == gpbm.anchou_rewardValueType) { + + int p_reward_max = 0; + if (partnerLev == 1) { + p_reward_max = gpb.anchou_reward; + } + else { + tem = jedis10.zscore(p_reward_key, parentId + ""); + p_reward_max = tem == null ? 0 : tem.intValue(); + } + + if(p_reward_max < value ) { + return ErrorCode._FAILED; + } + } + + } + + for(String strPid : pids) { + tagOldReward = 0; + diff = 0; + + GroupPlayBean gpb = GroupCache.getPlay(groupId, Integer.parseInt(strPid)); + if (isSingle > 0) + { + ITObject hpObjTemp = TObject.newFromJsonData(gpb.hpConfig); + int tempMaxRound = 0; + if (hpObjTemp.getInt("maxRound") != null) { + tempMaxRound = hpObjTemp.getInt("maxRound"); + } + + if ((maxRound == 1 && tempMaxRound != 1) || (maxRound != 1 && tempMaxRound == 1)) + { + continue; + } + } + + if(gpb.anchou_rewardValueType == gpbm.anchou_rewardValueType) { + + p_reward_key = GroupCache.genAnChouRewardKey(groupId,Integer.parseInt(strPid)); + tem = jedis10.zscore(p_reward_key, tagId + ""); + tagOldReward = tem == null ? 0 : tem.intValue(); + if(value < tagOldReward) { + diff = tagOldReward - value; + } + + jedis10.zadd(p_reward_key, value, tagId + ""); + + if(diff > 0) { + + List listParent = Utility.getChildParentList(groupId,tagId,false); + for(Integer parId : listParent) { + + Double temPar = jedis10.zscore(p_reward_key, parId + ""); + p_reward = temPar == null ? 0 : temPar.intValue(); + + int newValue = 0; + if(p_reward > diff) { + newValue = p_reward - diff; + } + jedis10.zadd(p_reward_key, newValue, parId + ""); + } + } + + } + } + } + } + } + finally { + lock.unlock(); + } + + return 0; + } + + /** + * + * @param groupId + */ + public static final int setXiPaiReward(int groupId, int parentId, int tagId, int partnerLev, int pid, int value, + boolean all, int isSingle) throws Exception { + + log.info("setXiPaiReward parentId:" + parentId + " tagId:" + tagId +" pid:" + pid + " value:" + value + " all:"+all + " isSingle:" + isSingle); + + GroupPlayBean gpbm = GroupCache.getPlay(groupId, pid); + if(gpbm==null) { + throw new WebException(ErrorCode.GROUP_PLAY_EXIST); + } + + ITObject hpObj = TObject.newFromJsonData(gpbm.hpConfig); + int maxRound = 0; + if (hpObj.getInt("maxRound") != null) { + maxRound = hpObj.getInt("maxRound"); + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock("group_play_award_lock", jedis10); + lock.lock(); + try { + + GroupMemberBean uid_bean = GroupCache.getMember(groupId, parentId); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3 && parentId != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(parentId)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + + String p_reward_key = GroupCache.genXiPaiRewardKey(groupId,pid); + int p_reward = 0; + + if (partnerLev == 1) { + p_reward = gpbm.xipai_reward; + } else { + Double tem = jedis10.zscore(p_reward_key, parentId + ""); + p_reward = tem == null ? 0 : tem.intValue(); + } + + if (value > p_reward) { + return ErrorCode._FAILED; + } + + int tagOldReward = 0; + int diff = 0; + Double tem = jedis10.zscore(p_reward_key, tagId + ""); + tagOldReward = tem == null ? 0 : tem.intValue(); + if(value < tagOldReward) { + diff = tagOldReward - value; + } + + if (!all) { + + jedis10.zadd(p_reward_key, value, tagId + ""); + + if(diff > 0) { + + List listParent = Utility.getChildParentList(groupId,tagId,false); + for(Integer parId : listParent) { + + Double temPar = jedis10.zscore(p_reward_key, parId + ""); + p_reward = temPar == null ? 0 : temPar.intValue(); + + int newValue = 0; + if(p_reward > diff) { + + newValue = p_reward - diff; + } + jedis10.zadd(p_reward_key, newValue, parId + ""); + } + } + } + else { + + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + if(pids.size() > 0) { + + for(String strPid : pids) { + + p_reward_key = GroupCache.genXiPaiRewardKey(groupId,Integer.parseInt(strPid)); + GroupPlayBean gpb = GroupCache.getPlay(groupId, Integer.parseInt(strPid)); + + if (isSingle > 0) + { + ITObject hpObjTemp = TObject.newFromJsonData(gpb.hpConfig); + int tempMaxRound = 0; + if (hpObjTemp.getInt("maxRound") != null) { + tempMaxRound = hpObjTemp.getInt("maxRound"); + } + + if ((maxRound == 1 && tempMaxRound != 1) || (maxRound != 1 && tempMaxRound == 1)) + { + continue; + } + } + + if(gpb.xipai_rewardValueType == gpbm.xipai_rewardValueType) { + + int p_reward_max = 0; + if (partnerLev == 1) { + p_reward_max = gpb.xipai_reward; + } + else { + tem = jedis10.zscore(p_reward_key, parentId + ""); + p_reward_max = tem == null ? 0 : tem.intValue(); + } + + if(p_reward_max < value ) { + return ErrorCode._FAILED; + } + } + + } + + for(String strPid : pids) { + tagOldReward = 0; + diff = 0; + + GroupPlayBean gpb = GroupCache.getPlay(groupId, Integer.parseInt(strPid)); + if (isSingle > 0) + { + ITObject hpObjTemp = TObject.newFromJsonData(gpb.hpConfig); + int tempMaxRound = 0; + if (hpObjTemp.getInt("maxRound") != null) { + tempMaxRound = hpObjTemp.getInt("maxRound"); + } + + if ((maxRound == 1 && tempMaxRound != 1) || (maxRound != 1 && tempMaxRound == 1)) + { + continue; + } + } + + if(gpb.xipai_rewardValueType == gpbm.xipai_rewardValueType) { + + p_reward_key = GroupCache.genXiPaiRewardKey(groupId,Integer.parseInt(strPid)); + tem = jedis10.zscore(p_reward_key, tagId + ""); + tagOldReward = tem == null ? 0 : tem.intValue(); + if(value < tagOldReward) { + diff = tagOldReward - value; + } + + jedis10.zadd(p_reward_key, value, tagId + ""); + + if(diff > 0) { + + List listParent = Utility.getChildParentList(groupId,tagId,false); + for(Integer parId : listParent) { + + Double temPar = jedis10.zscore(p_reward_key, parId + ""); + p_reward = temPar == null ? 0 : temPar.intValue(); + + int newValue = 0; + if(p_reward > diff) { + + newValue = p_reward - diff; + } + jedis10.zadd(p_reward_key, newValue, parId + ""); + } + } + + } + } + } + } + } + finally { + lock.unlock(); + } + + return 0; + } + + /** + * 置顶圈子 + * + * @param groupId + * @param uid + * @param top + * @throws Exception + */ + public static final int topGroup(int groupId, int uid, boolean top) throws Exception { + String group_key = GroupCache.genKey(groupId); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + RedisLock lock = new RedisLock(group_key, jedis11); + try { + String opt1 = jedis11.hget(group_key, "opt"); + if (StringUtil.isEmpty(opt1) || Integer.parseInt(opt1) != 1) { + throw new WebException(ErrorCode.GROUP_NO_EXIST); + } + long time = top ? System.currentTimeMillis() / 1000 : 0; + jedis11.zadd(GroupCache.genGroupsKey(uid), time, groupId + ""); + String gm_key = GroupMemberCache.genKey(groupId, uid); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + jedis10.hset(gm_key, "top_time", time + ""); + BaseCache.updateCacheVer(jedis10, gm_key); + } finally { + jedis10.close(); + } + + return (int) time; + } finally { + lock.unlock(); + } + } + + /** + * 更新圈子信息 + * + * @param groupId + * @param name + * @param reqData + * @throws Exception + */ + public static final void updateGroupInfo(int groupId, String name, ITObject reqData) throws Exception { + log.info("updateGroupInfo name:"+name + " reqData:" + reqData.toString()); + boolean ban = reqData.getBoolean("ban"); + String notice = reqData.getString("notice"); + int dissolve_opt = reqData.getInt("dissolve_opt"); + int kick_opt = reqData.getInt("kick_opt"); + int ban_apply = reqData.getInt("ban_apply"); + boolean ban_chat1 = reqData.getBoolean("ban_chat1"); + boolean ban_chat2 = reqData.getBoolean("ban_chat2"); + + int option = reqData.getInt("option"); + int showNum = reqData.getInt("show_num"); + + // int exit_opt = reqData.getInt("exit_opt"); + int exit_opt = 0; + String _ban = (ban ? 1 : 0) + StringUtil.Empty; + String sql = String.format("update groups set name='%s' where id = %s", + name, groupId); + Utility.evtdb(groupId, 1, sql); + Map map = new HashMap(); + map.put("name", name); + map.put("notice", name); + map.put("ban", _ban); + map.put("dissolve_opt", dissolve_opt + ""); + map.put("kick_opt", kick_opt + ""); + map.put("notice", notice); + map.put("ban_apply", ban_apply + ""); + map.put("ban_chat1", ban_chat1 + ""); + map.put("ban_chat2", ban_chat2 + ""); + map.put("exit_opt", exit_opt + ""); + map.put("option", option + ""); + map.put("show_num", showNum + ""); + String key = GroupCache.genKey(groupId); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + try { + jedis11.hmset(key, map); + BaseCache.updateCacheVer(jedis11, key); + } finally { + jedis11.close(); + } + + GroupPublisherService.updateGroupEvt(groupId, name, ban, notice,option,showNum); + } + + /** + * 成员禁止娱乐 + * + * @param groupId + * @throws Exception + */ + public static final void banMember(int groupId, int uid, int tagId, int optType, int ban) throws Exception { + String gm_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + String opt1 = jedis10.hget(gm_key, "opt"); + if (StringUtil.isEmpty(opt1) || Integer.parseInt(opt1) != 1) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + String mng_key = GroupMemberCache.genKey(groupId, uid); + RedisLock lock1 = new RedisLock(mng_key, jedis10); + try { + lock1.lock(); + int mgn_lev = Integer.parseInt(jedis10.hget(mng_key, "lev")); + if (mgn_lev == 2) { + String permission = jedis10.hget(mng_key, "permission"); + if (StringUtil.isEmpty(permission) || (Integer.parseInt(permission) & PERMISSION_BAN) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + else if (mgn_lev >= 3) + { + if (uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + //log.info("uid:" + uid + " ban_member:" + tagId + " par_list:" + par_list); + } + } + + String group_ban = jedis10.hget(mng_key, "group_ban"); + if (!StringUtil.isEmpty(group_ban) && Integer.parseInt(group_ban) == 1) { + throw new WebException(ErrorCode.GROUP_MEMBER_BAN); + } + } finally { + lock1.unlock(false); + } + + log.info("uid:" + uid + " ban_member:" + tagId + " optType:" + optType + " ban:" + ban); + + boolean isPartner = false; + GroupMemberBean gmb = GroupCache.getMember(groupId, tagId); + if(optType == 2 && gmb.partnerLev > 0) { + isPartner = true; + } + + String sql; + String _ban = ban + ""; + if(isPartner) { + HashSet hashSet = new HashSet<>(); + hashSet.add(tagId); + ArrayList arrayList = new ArrayList<>(); + arrayList.add(tagId); + + gm_key = GroupMemberCache.genKey(groupId, tagId); + jedis10.hset(gm_key, "ban", _ban); + jedis10.hset(gm_key, "group_ban", _ban); + BaseCache.updateCacheVer(jedis10, gm_key); + + while(!arrayList.isEmpty()) + { + ArrayList arrayListTemp = new ArrayList<>(); + arrayListTemp.addAll(arrayList); + arrayList.clear(); + + for(int i = 0; i < arrayListTemp.size(); ++i) + { + int tmpTagId = arrayListTemp.get(i); + String child_list2 = Utility.getChildParentSql(groupId, tmpTagId, true); + + sql = String.format("update group_member set ban = %s where groupId = %s and (parentId in(%s) or uid = %s)", _ban, groupId,child_list2,tmpTagId); + Utility.evtdb(groupId, 1, sql); + + sql = String.format("select uid from group_member where groupId = %s and (parentId in(%s) or uid = %s)", groupId,child_list2, tmpTagId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql); + if(tmplist.size()>0) { + for(int j=0; j 0) { + isPartner = true; + } + + if (ban != 0) + { + if (Redis.use("group1_db1").sismember("gods", Integer.toString(tagId))) + { + String specail = Redis.use("group1_db1").hget("gods_special", Integer.toString(tagId)); + if (StringUtil.isEmpty(specail)) + { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + else { + log.info("set gods tagId:" + tagId + " to ban " + ban + " srem gods"); + //Redis.use("group1_db1").srem("gods", Integer.toString(tagId)); + } + } + } + + String sql; + String _ban = ban + ""; + if (ban == 1) + { + try { + ban_rate = Integer.parseInt(Redis.use("group1_db1").hget("black_rate", "black")); + } + catch (Exception e) + { + } + } + else if (ban == 2) + { + try { + ban_rate = Integer.parseInt(Redis.use("group1_db1").hget("black_rate", "white")); + } + catch (Exception e) + { + } + } + + log.info("uid:" + uid + " black_member:" + tagId + " ban:" + ban + " ban_rate:" + ban_rate + " ban_value:"+ban_value); + //isPartner = true; + if(isPartner) { + HashSet hashSet = new HashSet<>(); + hashSet.add(tagId); + ArrayList arrayList = new ArrayList<>(); + arrayList.add(tagId); + + gm_key = GroupMemberCache.genKey(groupId, tagId); + jedis10.hset(gm_key, "black", _ban); + jedis10.hset(gm_key, "group_black", _ban); + String _ban_rate = ban_rate + ""; + jedis10.hset(gm_key, "group_black_rate", _ban_rate); + jedis10.hset(gm_key, "group_black_key", gm_key); + String _ban_value = ban_value + ""; + jedis10.hset(gm_key, "group_black_max_value", _ban_value); + jedis10.hset(gm_key, "group_black_now_value", "0"); + BaseCache.updateCacheVer(jedis10, gm_key); + + while(!arrayList.isEmpty()) + { + ArrayList arrayListTemp = new ArrayList<>(); + arrayListTemp.addAll(arrayList); + arrayList.clear(); + + for(int i = 0; i < arrayListTemp.size(); ++i) + { + int tmpTagId = arrayListTemp.get(i); + String child_list2 = Utility.getChildParentSql(groupId, tmpTagId, true); + + sql = String.format("select uid from group_member where groupId = %s and (parentId in(%s) or uid = %s)", groupId,child_list2, tmpTagId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql); + if(tmplist.size()>0) { + for(int j=0; j pids = jedis11.zrangeByScore(gpids_key, 10, 11); + String key = "g{" + groupId + "}:play:"; + + for(String tem : pids) { + String gp_key = key+tem; + + String str = Redis.use("group1_db11").hget(gp_key, "mark"); + if (str != null) { + int val = Integer.parseInt(str); + if (val == 1) { + count++; + } + } + } + }finally { + jedis11.close(); + } + + return count; + } + + /** + * 更新成员管理 + * + * @param groupId + * @param tagId + * @param opt + * 1 设置管理员 2 取消管理员 + * @throws Exception + */ + public static final ITObject updateMemberMgr(int groupId, int tagId, int opt) throws Exception { + log.info("updateMemberMgr tagId:" + tagId + " opt:"+opt); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + String gm_key = GroupMemberCache.genKey(groupId, tagId); + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + String opt1 = jedis10.hget(gm_key, "opt"); + if (StringUtil.isEmpty(opt1) || Integer.parseInt(opt1) != 1) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + int clev = Integer.parseInt(jedis10.hget(gm_key, "lev")); + if (opt == 1 && clev == 3) { + int partnerLev = Integer.parseInt(jedis10.hget(gm_key, "partnerLev")); + if (partnerLev > 0) { + throw new WebException(ErrorCode.GROUP_ALREADY_PARTNER); + } + int member_parentId = Integer.parseInt(jedis10.hget(gm_key, "parentId")); + if (member_parentId > 0) { + throw new WebException(ErrorCode.GROUP_MEMBER_EXIST_PARTENER); + } + clev = 2; + } else if (opt == 2 && clev == 2) { + clev = 3; + } else { + throw new WebException(ErrorCode._FAILED); + } + String sql = String.format("update group_member set lev = %s where uid = %s AND groupId = %s", clev, tagId, + groupId); + Utility.evtdb(groupId, 1, sql); + GroupPublisherService.updateMemberEvt(groupId, tagId, 2, clev); + jedis10.hset(gm_key, "lev", clev + ""); + BaseCache.updateCacheVer(jedis10, gm_key); + int permission = 0; + if (clev == 2) { + permission = PERMISSION_DEL_MEMBER | PERMISSION_ADD_MEMBER | PERMISSION_HP_OPT | PERMISSION_BAN + | PERMISSION_BAN_DESKMATE; + jedis10.hset(gm_key, "permission", permission + ""); + } else { + jedis10.hset(gm_key, "permission", permission + ""); + } + + ITObject resData = TObject.newInstance(); + resData.putInt("permission", permission); + return resData; + } finally { + lock.unlock(); + } + + } + + /** + * 添加玩法 + * + * @param groupId + * @param gameId + * @param name + * @param config + * @param hpData + * @return + * @throws Exception + */ + public static final ITObject addPlay(int groupId, int gameId, String name, int deskId, ITObject config, ITObject hpData, + int hpOnOff) throws Exception { + + log.info("addPlay gameId:"+gameId+" name:" + name + " config:"+config+" hpData:"+hpData + " hpOnOff:"+hpOnOff); + + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + + RedisLock lock = null; + try { + String gp_key = GroupCache.genPidsKey(groupId); + long time = System.currentTimeMillis(); + long free_num = jedis11.zcount(gp_key, 20, time); + if (free_num == 0) { + throw new WebException(ErrorCode.GROUP_PLAY_FULL); + } + lock = new RedisLock(gp_key, jedis11); + lock.lock(); + Set pids = jedis11.zrangeByScore(gp_key, 20, time, 0, 1); + if (pids.size() == 0) { + throw new WebException(ErrorCode.GROUP_PLAY_FULL); + } + int pid = 0; + for (String tem : pids) { + pid = Integer.parseInt(tem); + break; + } + GameBean gb = GameCache.getGame(gameId); + int maxPlayers = gb.maxPlayers; + if (config.containsKey("maxPlayers")) { + maxPlayers = config.getInt("maxPlayers"); + } + + int opt = config.getInt("opt"); + int maxRound = getMaxRound(gameId, opt); + hpData.putInt("maxRound", maxRound); + + log.info("addPlay() maxRound="+maxRound); + + config.putInt("maxPlayers", maxPlayers); + config.putInt("pid", pid); + int rewardType = hpData.getInt("rewards_type"); + int rewardValueType = hpData.getInt("rewardValueType"); + int xipai_rewardType = 1; + if (hpData.containsKey("xipai_rewardType")) + { + xipai_rewardType = hpData.getInt("xipai_rewardType"); + } + + int anchou_rewardType = 1; + if (hpData.containsKey("anchou_rewardType")) + { + anchou_rewardType = hpData.getInt("anchou_rewardType"); + } + + int xipai_rewardValueType = 1; + if (hpData.containsKey("xipai_rewardValueType")) + { + xipai_rewardValueType = hpData.getInt("xipai_rewardValueType"); + } + + int anchou_rewardValueType = 1; + if (hpData.containsKey("anchou_rewardValueType")) + { + anchou_rewardValueType = hpData.getInt("anchou_rewardValueType"); + } + + int reward = hpData.getInt("rewards_val"); + int xipai_reward = 1000000; + + if (hpData.containsKey("xipai_rewards_val")) + { + xipai_reward = hpData.getInt("xipai_rewards_val"); + } + + int anchou_reward = 1000000; + if (hpData.containsKey("anchou_rewards_val")) + { + anchou_reward = hpData.getInt("anchou_rewards_val"); + } + + int robot_room = 0; + if (hpData.containsKey("robot_room")) + { + robot_room = hpData.getInt("robot_room"); + } + + hpData.remove("rewards_type"); + hpData.remove("rewards_val"); + hpData.remove("rewardValueType"); + hpData.remove("xipai_rewards_val"); + hpData.remove("xipai_rewards_type"); + hpData.remove("xipai_rewardValueType"); + hpData.remove("anchou_rewards_val"); + hpData.remove("anchou_rewards_type"); + hpData.remove("anchou_rewardValueType"); + + jedis9.del(String.format("g%s:diamo_cost:p%s",groupId,pid)); + jedis9.del(String.format("g%s:valid_room:p%s",groupId,pid)); + jedis9.del(String.format("g%s:no_valid_room:p%s",groupId,pid)); + jedis9.del(String.format("g%s:round:p%s",groupId,pid)); + + + int hp_times = hpData.getInt("times"); + String config_json = config.toJson(); + String hpData_json = hpData.toJson(); + String p_key = GroupCache.genPlayKey(groupId, pid); + Map redis_map = payToRedis(groupId, pid, gameId, name, deskId, config_json, hpData_json, hpOnOff, + hp_times, reward, rewardType,rewardValueType, xipai_reward, xipai_rewardType, xipai_rewardValueType,anchou_reward, anchou_rewardType, anchou_rewardValueType, robot_room); + redis_map.put("opt", "1"); + jedis11.hmset(p_key, redis_map); + jedis11.hincrBy(p_key, "cache_ver", 1); + jedis11.zadd(gp_key, 1 * 10 + hpOnOff, pid + ""); + + // 得到所有的玩法 + pids = jedis11.zrangeByScore(gp_key, 11, 11); + // 删除新增加的玩法 + pids.remove(pid); + + // 查找所有的一级合伙人 + String sql = String.format("SELECT uid FROM group_member where groupId =%s and partnerLev = 1", groupId); + ITArray arr = DataBase.use().executeQueryByTArray(sql); + if (arr.size() > 0) { + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + + //遍历所有的一级合伙人 + for (int i = 0; i < arr.size(); ++i) { + + ITObject obj = arr.getTObject(i); + int tem_id = obj.getInt("uid"); + + // 遍历所有的玩法,查看现在的玩法的推广奖励是否一致 + int sameValue = 0; + int xipai_sameValue = 0; + int anchou_sameValue = 0; + for(String strPid : pids) { + + int indexPid =Integer.parseInt(strPid); + if(indexPid != pid) { + GroupPlayBean gpb = GroupCache.getPlay(groupId,indexPid); + if(gpb.rewardValueType == rewardValueType) { + + String p_reward_key = GroupCache.genRewardKey(groupId,indexPid); + Double tem = jedis10.zscore(p_reward_key, tem_id + ""); + int value = tem == null ? 0 : tem.intValue(); + + if(sameValue == 0 ) { + sameValue = value; + }else if(sameValue != value) { + sameValue = 0; + break; + } + } + if(gpb.xipai_rewardValueType == xipai_rewardValueType) { + String p_reward_key = GroupCache.genXiPaiRewardKey(groupId,indexPid); + Double tem = jedis10.zscore(p_reward_key, tem_id + ""); + int value = tem == null ? 0 : tem.intValue(); + + if(xipai_sameValue == 0 ) { + xipai_sameValue = value; + }else if(xipai_sameValue != value) { + xipai_sameValue = 0; + break; + } + } + + if(gpb.anchou_rewardValueType == anchou_rewardValueType) { + String p_reward_key = GroupCache.genAnChouRewardKey(groupId,indexPid); + Double tem = jedis10.zscore(p_reward_key, tem_id + ""); + int value = tem == null ? 0 : tem.intValue(); + + if(anchou_sameValue == 0 ) { + anchou_sameValue = value; + }else if(anchou_sameValue != value) { + anchou_sameValue = 0; + break; + } + } + } + } + // 设置该一级合伙人的奖励 + String p_reward_key = GroupCache.genRewardKey(groupId,pid); + jedis10.zadd(p_reward_key, sameValue, tem_id + ""); + + // 设置该一级合伙人的奖励 + String p_xipai_reward_key = GroupCache.genXiPaiRewardKey(groupId,pid); + jedis10.zadd(p_xipai_reward_key, xipai_sameValue, tem_id + ""); + + String p_anchou_reward_key = GroupCache.genAnChouRewardKey(groupId,pid); + jedis10.zadd(p_anchou_reward_key, anchou_sameValue, tem_id + ""); + } + } finally { + jedis10.close(); + } + } + + + + GroupPublisherService.addPlayEvt(groupId, pid); + + ITObject obj = TObject.newInstance(); + obj.putInt("pid", pid); + obj.putInt("maxPlayers", maxPlayers); + obj.putInt("maxRound", maxRound); + + return obj; + } finally { + if (lock != null) + lock.unlock(); + + jedis9.close(); + } + } + + public static final int getMaxRound(int gameId, int opt) throws Exception { + int maxRound = 0; + Jedis jedis1 = Redis.use("group1_db1").getJedis(); + try { + String keyStr = "game:"+gameId; + String optStr = "opt"+opt; + String val = jedis1.hget(keyStr, optStr); + maxRound = Integer.parseInt(val); + + } finally { + jedis1.close(); + } + + return maxRound; + } + + /** + * 删除玩法 + * + * @param groupId + * @param pid + * @return + * @throws Exception + */ + public static final int delPlay(int groupId, int pid) throws Exception { + log.info("delPlay pid:" + pid); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + + int min_value = pid * 10000 + 1000; + int max_value = pid * 10000 + 9999; + String grooms_key = GroupCache.genRoomsKey(groupId); + Set rooms = jedis11.zrevrangeByScore(grooms_key, max_value, min_value); + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + for (String room : rooms) { + boolean check = GroupRoomService.checkRoom(room, jedis0); + if (!check) { + jedis11.zrem(grooms_key, room); + } else { + check = GroupRoomService.checkFakeRoom(room, jedis0); + if (!check) { + return ErrorCode.GROUP_PLAY_EXIST_ROOM; + } + else { + jedis11.zrem(grooms_key, room); + } + } + } + } finally { + jedis0.close(); + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + String p_reward_key = GroupCache.genRewardKey(groupId, pid); + String p_xipai_reward_key = GroupCache.genXiPaiRewardKey(groupId, pid); + String p_anchou_reward_key = GroupCache.genAnChouRewardKey(groupId, pid); + jedis10.del(p_reward_key); + jedis10.del(p_xipai_reward_key); + jedis10.del(p_anchou_reward_key); + } + finally { + jedis10.close(); + } + + String gp_key = GroupCache.genPidsKey(groupId); + String p_key = GroupCache.genPlayKey(groupId, pid); + RedisLock lock = new RedisLock(gp_key, jedis11); + Jedis jedis9 = Redis.use("group1_db9").getJedis(); + try { + lock.lock(); + + jedis9.del(String.format("g%s:diamo_cost:p%s",groupId,pid)); + jedis9.del(String.format("g%s:valid_room:p%s",groupId,pid)); + jedis9.del(String.format("g%s:no_valid_room:p%s",groupId,pid)); + jedis9.del(String.format("g%s:round:p%s",groupId,pid)); + + jedis11.hset(p_key, "opt", "2"); + jedis11.hincrBy(p_key, "cache_ver", 1); + long time = System.currentTimeMillis() / 1000; + jedis11.zadd(gp_key, time, pid + ""); + GroupPublisherService.delPlayEvt(groupId, pid); + } finally { + lock.unlock(); + jedis9.close(); + } + return 0; + } + + /** + * 添加玩法 + * + * @param groupId + * @param gameId + * @param name + * @param config + * @param hpData + * @return + * @throws Exception + */ + public static final ITObject updatePlay(int groupId, int pid, int gameId, String name,int deskId, ITObject config, + ITObject hpData, int hpOnOff) throws Exception { + log.info("updatePlay pid:"+pid+" gameId:" + gameId + " name:"+name + " config:"+config+ " hpData:" + hpData + " hpOnOff:"+hpOnOff); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + int min_value = pid * 10000 + 1000; + int max_value = pid * 10000 + 9999; + String grooms_key = GroupCache.genRoomsKey(groupId); + Set rooms = jedis11.zrevrangeByScore(grooms_key, max_value, min_value); + Jedis jedis0 = Redis.use("group1_db0").getJedis(); + try { + for (String room : rooms) { + boolean check = GroupRoomService.checkRoom(room, jedis0); + if (!check) { + jedis11.zrem(grooms_key, room); + } + } + } finally { + jedis0.close(); + } + + String p_key = GroupCache.genPlayKey(groupId, pid); + RedisLock lock = new RedisLock(p_key, jedis11); + try { + + GameBean gb = GameCache.getGame(gameId); + int maxPlayers = gb.maxPlayers; + if (config.containsKey("maxPlayers")) { + maxPlayers = config.getInt("maxPlayers"); + } + config.putInt("maxPlayers", maxPlayers); + config.putInt("pid", pid); + int rewardType = hpData.getInt("rewards_type"); + int rewardValueType = hpData.getInt("rewardValueType"); + int xipai_rewardType = 0; + if (hpData.containsKey("xipai_rewardType")) + { + xipai_rewardType = hpData.getInt("xipai_rewardType"); + } + + int anchou_rewardType = 0; + if (hpData.containsKey("anchou_rewardType")) + { + anchou_rewardType = hpData.getInt("anchou_rewardType"); + } + + int xipai_rewardValueType = 0; + if (hpData.containsKey("xipai_rewardValueType")) + { + xipai_rewardValueType = hpData.getInt("xipai_rewardValueType"); + } + + int anchou_rewardValueType = 0; + if (hpData.containsKey("anchou_rewardValueType")) + { + anchou_rewardValueType = hpData.getInt("anchou_rewardValueType"); + } + + int reward = hpData.getInt("rewards_val"); + int xipai_reward = 0; + if (hpData.containsKey("xipai_rewards_val")) + { + xipai_reward = hpData.getInt("xipai_rewards_val"); + } + + int anchou_reward = 0; + if (hpData.containsKey("anchou_rewards_val")) + { + anchou_reward = hpData.getInt("anchou_rewards_val"); + } + + int robot_room = 0; + if (hpData.containsKey("robot_room")) + { + robot_room = hpData.getInt("robot_room"); + } + hpData.remove("rewards_type"); + hpData.remove("rewards_val"); + hpData.remove("xipai_rewards_val"); + hpData.remove("anchou_rewards_val"); + hpData.remove("rewardValueType"); + hpData.remove("xipai_rewards_type"); + hpData.remove("anchou_rewards_type"); + hpData.remove("xipai_rewardValueType"); + hpData.remove("anchou_rewardValueType"); + int hp_times = hpData.getInt("times"); + + int opt = config.getInt("opt"); + int maxRound = getMaxRound(gameId, opt); + hpData.putInt("maxRound", maxRound); + config.putInt("maxRound", maxRound); + + String config_json = config.toJson(); + String hpData_json = hpData.toJson(); + + Map redis_map = payToRedis(groupId, pid, gameId, name,deskId, config_json, hpData_json, hpOnOff, + hp_times, reward, rewardType,rewardValueType, xipai_reward, xipai_rewardType, xipai_rewardValueType,anchou_reward, anchou_rewardType, anchou_rewardValueType, robot_room); + jedis11.hmset(p_key, redis_map); + jedis11.hincrBy(p_key, "cache_ver", 1); + String gp_key = GroupCache.genPidsKey(groupId); + jedis11.zadd(gp_key, 1 * 10 + hpOnOff, pid + ""); + + GroupPublisherService.updatePlayEvt(groupId, pid); + } finally { + lock.unlock(); + } + return config; + } + + /** + * 分配成员 + * + * @param groupId + * @param parId + * @param tagId + * @throws Exception + */ + public static final void distributeMember(int groupId, int parId, int tagId) throws Exception { + String tag_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = null; + RedisLock lock1 = null; + try { + lock = new RedisLock(tag_key, jedis10); + lock.lock(); + + String par_key = GroupMemberCache.genKey(groupId, parId); + lock1 = new RedisLock(par_key, jedis10); + lock1.lock(); + int par_partner = Integer.parseInt(jedis10.hget(par_key, "partnerLev")); + if (par_partner == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + + String member_opt = jedis10.hget(tag_key, "opt"); + if (StringUtil.isNotEmpty(member_opt) && member_opt.equals("1")) { + int member_lev = Integer.parseInt(jedis10.hget(tag_key, "lev")); + if (member_lev < 3) { + throw new WebException(ErrorCode.GROUP_TAG_ISMGR); + } + int member_partner = Integer.parseInt(jedis10.hget(tag_key, "partnerLev")); + if (member_partner > 0) { + throw new WebException(ErrorCode.GROUP_ALREADY_PARTNER); + } + int member_parentId = Integer.parseInt(jedis10.hget(tag_key, "parentId")); + if (member_parentId > 0) { + throw new WebException(ErrorCode.GROUP_MEMBER_EXIST_PARTENER); + } + // int member_hp = Integer.parseInt(jedis10.hget(tag_key, "hp")); + // List par_list = Utility.getMemberParents(jedis10,groupId, parId, + // true); + // for(Integer p : par_list) { + // String ph_key = String.format("g{%s}:par_hp:%s", groupId,p); + // jedis10.incrBy(ph_key, member_hp); + // } + String sql = String.format("update group_member set parentId = %s WHERE uid = %s and groupId = %s", + parId, tagId, groupId); + Utility.evtdb(groupId, 1, sql); + jedis10.hset(tag_key, "parentId", parId + ""); + BaseCache.updateCacheVer(jedis10, tag_key); + } else { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + } finally { + if (lock != null) { + lock.unlock(false); + } + if (lock1 != null) { + lock1.unlock(); + } + } + + } + + /** + * 获取合伙人管理列表 + * + * @param groupId + * @param tagId + * @param limit + * @param num + * @return + * @throws Exception + */ + public static final ITObject getPartnerInfos(int groupId, int uid, int tagId, int limit, int num, int simpleAll, boolean diff) + throws Exception { + Jedis jedis10_1 = Redis.use("group1_db10").getJedis(); + try { + GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); + if (uid_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + if (uid_bean.lev >= 3) + { + List par_list = Utility.getMemberParents(jedis10_1, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + finally { + jedis10_1.close(); + } + + String gm_key = GroupMemberCache.genKey(groupId, tagId); + String strLev = Redis.use("group1_db10").hget(gm_key, "lev"); + boolean mgr = StringUtil.isNotEmpty(strLev) && Integer.parseInt(strLev) < 3; + + ITArray list = null; + + String limitSql = ""; + String paramSql = ""; + if (simpleAll == 0) { + + limitSql = String.format("limit %s,%s", limit, num); + paramSql = String.format("SELECT A.uid,A.hp,A.lev,A.partnerLev, A.autoscore," + "(SELECT COUNT(uid) " + "FROM group_member B " + + "where B.groupId = %s AND B.parentId = A.uid) AS total", groupId); + } else { + + paramSql = "SELECT A.uid"; + } + + if (mgr) { + + String sql = String.format("%s FROM group_member AS A " + "where A.groupId= %s and A.partnerLev=1 %s", + paramSql, groupId, limitSql); + + list = DataBase.use().executeQueryByTArray(sql); + + } else { + if (diff) + { + String sql = String.format("%s FROM group_member AS A " + + "where A.groupId= %s and A.parentId=%s %s", + paramSql, groupId, tagId, limitSql); + + list = DataBase.use().executeQueryByTArray(sql); + } + else { + String sql = String.format("%s FROM group_member AS A " + + "where A.groupId= %s and A.parentId=%s AND partnerLev >0 %s", + paramSql, groupId, tagId, limitSql); + + list = DataBase.use().executeQueryByTArray(sql); + } + } + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + for (int i = 0; i < list.size(); ++i) { + ITObject obj = list.getTObject(i); + int tagUid = obj.getInt("uid"); + AccountBean acc = AccountCache.getAccount(tagUid); + obj.putString("nick", acc.nick); + + if (simpleAll == 0) { + obj.putString("portrait", acc.portrait); + + GroupMemberBean gmb = GroupCache.getMember(groupId, acc.id); + int score = 0; + if (gmb != null) { + score = gmb.score; + } + obj.putInt("score", score); + + } + } + } finally { + jedis10.close(); + } + + ITObject obj1 = TObject.newInstance(); + obj1.putTArray("members", list); + obj1.putInt("limit", limit); + return obj1; + } + + /** + * 获取合伙人管理列表 + * + * @param groupId + * @param uid + * @param limit + * @param num + * @return + * @throws Exception + */ + public static final ITObject queryPartnerInfos(int groupId, int uid, int qid,String tagName) + throws Exception { + + String gm_key = GroupMemberCache.genKey(groupId, uid); + String strLev = Redis.use("group1_db10").hget(gm_key, "lev"); + boolean mgr = StringUtil.isNotEmpty(strLev) && Integer.parseInt(strLev) < 3; + String partnerParents; + ITArray list = null; + + if(mgr) { + partnerParents = "and A.partnerLev=1"; + } + else { + partnerParents = String.format("and A.parentId=%s", uid); + } + + String paramSql = String.format("SELECT A.uid,A.hp,A.partnerLev," + "(SELECT COUNT(uid) " + "FROM group_member B " + + "where B.groupId = %s AND B.parentId = A.uid) AS total", groupId); + + String qid_sql = StringUtil.Empty; + if (qid > 0) { + + qid_sql = "AND A.uid=" + qid; + + String sql = String.format("%s FROM group_member AS A " + "where A.groupId= %s %s %s", + paramSql, groupId, qid_sql,partnerParents); + + list = DataBase.use().executeQueryByTArray(sql); + } + + + if(StringUtil.isNotEmpty(tagName)) { + + String sql = String.format("%s FROM group_member AS A " + + "right join account as B on A.uid = B.id and B.nick like '%%%s%%' " + + "where A.groupId= %s %s", + paramSql, tagName, groupId, partnerParents); + + ITArray tempL = DataBase.use().executeQueryByTArray(sql); + if(tempL != null && tempL.size() > 0) { + + if(list != null) { + for(int k = 0; k < tempL.size(); k++) { + + ITObject mo = tempL.getTObject(k); + if(qid > 0 && qid == mo.getInt("uid")) { + continue; + } + list.addTObject(mo); + } + } + else { + list = tempL; + } + } + } + + ITObject obj1 = TObject.newInstance(); + + if(list != null) { + + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + for (int i = 0; i < list.size(); ++i) { + ITObject obj = list.getTObject(i); + int tagUid = obj.getInt("uid"); + AccountBean acc = AccountCache.getAccount(tagUid); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + } + } finally { + jedis10.close(); + } + obj1.putTArray("members", list); + } + + return obj1; + } + + /** + * 获取合伙人成员列表 + * + * @param groupId + * @param uid + * @param limit + * @param num + * @return + * @throws Exception + */ + public static final ITObject getPartnerMemebers(int groupId, int uid, int limit, int num, int qid) + throws Exception { + ITArray list = null; + boolean self = (qid > 0 && qid == uid); + if (self) { + list = TArray.newInstance(); + ITObject obj = TObject.newInstance(); + obj.putInt("uid", uid); + obj.putInt("partnerLev", 1); + list.addTObject(obj); + } + + if (qid == 0 || !self) { + + String qid_sql = StringUtil.Empty; + if (qid > 0) { + qid_sql = "AND uid=" + qid; + } + String sql = String.format( + "SELECT uid,partnerLev,join_time FROM group_member WHERE groupId=%s AND parentId=%s %s limit %s,%s", + groupId, uid, qid_sql, limit, num); + ITArray arr = DataBase.use().executeQueryByTArray(sql); + if (list != null) { + for (int i = 0; i < arr.size(); ++i) { + list.addTObject(arr.getTObject(i)); + } + } else { + list = arr; + } + } + + // Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + for (int i = 0; i < list.size(); ++i) { + ITObject obj = list.getTObject(i); + AccountBean acc = AccountCache.getAccount(obj.getInt("uid")); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + + String gmr = String.format("g{%s}:m%s:round_log", groupId, obj.getInt("uid")); + String val = jedis10.get(gmr); + int value = 0; + if (StringUtil.isNotEmpty(val)) { + value = Integer.parseInt(val); + } + obj.putInt("round", value); + + GroupMemberBean gmb = GroupCache.getMember(groupId, acc.id); + if (gmb != null) { + obj.putInt("online", 1); + } else { + obj.putInt("online", 0); + } + + // _fillLog(jedis9, jedis10,obj, groupId, uid, acc.id, false, true); + } + } finally { + jedis10.close(); + // jedis9.close(); + } + ITObject obj1 = TObject.newInstance(); + obj1.putTArray("members", list); + obj1.putInt("limit", limit); + return obj1; + } + + /** + * + * @param permission + * @throws Exception + */ + public static void setMgrPermission(int groupId, int tag, int permission) throws Exception { + log.info("setMgrPermission tag:" + tag + " permission:" + permission); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + String gm_key = GroupMemberCache.genKey(groupId, tag); + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + lock.lock(); + List _list = jedis10.hmget(gm_key, "opt", "lev"); + String opt1 = _list.get(0); + if (StringUtil.isEmpty(opt1) || Integer.parseInt(opt1) != 1) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + int _lev = Integer.parseInt(_list.get(1)); + if (_lev != 2) { + throw new WebException(ErrorCode.GROUP_MGR_EXIST); + } + jedis10.hset(gm_key, "permission", permission + ""); + BaseCache.updateCacheVer(jedis10, gm_key); + } finally { + lock.unlock(); + } + } + + /** + * 获取禁止同桌列表 + * + * @param groupId + * @param uid + * @param tag + * @return + * @throws Exception + */ + public static ITArray getBanDeskList(int groupId, int uid, int tag) throws Exception { + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + String mng_key = GroupMemberCache.genKey(groupId, uid); + RedisLock lock1 = new RedisLock(mng_key, jedis10); + try { + lock1.lock(); + int mgn_lev = Integer.parseInt(jedis10.hget(mng_key, "lev")); + if (mgn_lev == 2) { + String permission = jedis10.hget(mng_key, "permission"); + if (StringUtil.isEmpty(permission) || (Integer.parseInt(permission) & PERMISSION_BAN_DESKMATE) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } finally { + lock1.unlock(false); + } + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + String ban_key = "ban{" + groupId + "}:" + tag; + try { + Set sets = jedis11.smembers(ban_key); + ITArray arr = TArray.newInstance(); + for (String id : sets) { + ITObject obj = TObject.newInstance(); + int _id = Integer.parseInt(id); + AccountBean acc = AccountCache.getAccount(_id); + if (acc == null) { + jedis11.srem(ban_key, id); + continue; + } + String key = GroupMemberCache.genKey(groupId, acc.id); + String opt = jedis10.hget(key, "opt"); + if (StringUtil.isEmpty(opt) || Integer.parseInt(opt) != 1) { + jedis11.srem(ban_key, id); + continue; + } + obj.putInt("uid", _id); + obj.putString("nick", acc.nick); + obj.putString("portrait", acc.portrait); + arr.addTObject(obj); + } + return arr; + } finally { + jedis11.close(); + jedis10.close(); + } + } + + /** + * 设置禁止同桌 + * + * @param groupId + * @param uid + * @param tag + * @param ban_list + */ + public static void setBanDesk(int groupId, int uid, int tag, ITArray ban_list, ITArray del_list) throws Exception { + log.info("setBanDesk uid:"+uid+" tag:"+tag + " ban_list:" + ban_list + " del_list:"+del_list); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + String mng_key = GroupMemberCache.genKey(groupId, uid); + RedisLock lock1 = new RedisLock(mng_key, jedis10); + try { + lock1.lock(); + int mgn_lev = Integer.parseInt(jedis10.hget(mng_key, "lev")); + if (mgn_lev == 2) { + String permission = jedis10.hget(mng_key, "permission"); + if (StringUtil.isEmpty(permission) || (Integer.parseInt(permission) & PERMISSION_BAN_DESKMATE) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } finally { + lock1.unlock(false); + } + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + String ban_key = "ban{" + groupId + "}:" + tag; + RedisLock lock = new RedisLock("ban_desk" + groupId, jedis11); + try { + lock.lock(); + String tag_str = tag + ""; + Pipeline pipeline = jedis11.pipelined(); + pipeline.del(ban_key); + if (del_list.size() > 0) { + for (int i = 0; i < del_list.size(); ++i) { + int _id = del_list.getInt(i); + if (_id == 0) + continue; + if (_id == tag) + continue; + String key = "ban{" + groupId + "}:" + _id; + pipeline.srem(key, tag_str); + } + } + if (ban_list.size() == 1 && ban_list.getInt(0) == 0) { + return; + } + int size = Math.min(ban_list.size(), 20); + for (int i = 0; i < size; ++i) { + int _id = ban_list.getInt(i); + if (_id == 0) + continue; + if (_id == tag) + continue; + String key = GroupMemberCache.genKey(groupId, _id); + String opt = jedis10.hget(key, "opt"); + if (StringUtil.isEmpty(opt) || Integer.parseInt(opt) != 1) { + continue; + } + String _bkey = "ban{" + groupId + "}:" + _id; + pipeline.sadd(ban_key, _id + ""); + pipeline.sadd(_bkey, tag_str); + } + pipeline.sync(); + } finally { + lock.unlock(); + jedis10.close(); + } + + } + + public static final ITObject movePartner(int groupId, int uid, int tag) throws Exception { + log.info("movePartner uid:"+uid + " tag:" + tag); + if (uid == tag) { + throw new WebException(ErrorCode._FAILED); + } + //GroupMemberBean tag_bean = GroupCache.getMember(groupId, tag); + //uid //目标 + String group_key = GroupCache.genKey(groupId); + Jedis jedis11 = Redis.use("group1_db11").getJedis(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + RedisLock lock = new RedisLock(group_key, jedis11); + RedisLock lock1 = null; + RedisLock lock2 = null; + + String gm_key3 = GroupMemberCache.genKey(groupId, tag); + //Jedis jedis10 = Redis.use("group1_db10").getJedis(); + //RedisLock lock3 = new RedisLock(gm_key3, jedis10); + + try { + lock.lock(); + //lock3.lock(); + jedis11.hset(group_key, "stop", "1"); + BaseCache.updateCacheVer(jedis11, group_key); + String tag_key = GroupMemberCache.genKey(groupId, tag); + String mng_key = GroupMemberCache.genKey(groupId, uid); + lock1 = new RedisLock(mng_key, jedis10); + lock2 = new RedisLock(tag_key, jedis10); + lock1.lock(); + lock2.lock(); + GroupMemberBean tag_bean = GroupCache.getMember(groupId, tag);//目标用户信息 + if (tag_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + GroupMemberBean mng_bean = GroupCache.getMember(groupId, uid); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + int mgn_lev = mng_bean.lev; + int mgn_partner = mng_bean.partnerLev; + if (!(mgn_lev == 1 || mgn_partner > 0)) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + + int member_partner = tag_bean.partnerLev; + if (member_partner == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PARTNER); + } + int member_parentId = tag_bean.parentId; + if (member_parentId == uid) { + throw new WebException(ErrorCode._FAILED); + } + List child_list = Utility.getChildParentList(groupId, tag, true); + + if (mgn_lev == 3) { + if (child_list.contains(uid)) { + throw new WebException(ErrorCode._FAILED); + } + } + + // //--同步分组 + log.info("movePartner uid:"+uid + " tag:" + tag+"queueid:"+mng_bean.queueid); + jedis10.hset(tag_bean.redis_key, "queueid", mng_bean.queueid + ""); + BaseCache.updateCacheVer(jedis10, GroupMemberCache.genKey(groupId, tag)); + + String opt1 = jedis10.hget(gm_key3, "opt"); + if (StringUtil.isEmpty(opt1) || Integer.parseInt(opt1) != 1) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + boolean isPartner = false; + GroupMemberBean gmb3 = GroupCache.getMember(groupId, tag); + if( gmb3.partnerLev > 0) { + isPartner = true; + } + + + String sql3; + //String _ban = ban + ""; + if(isPartner) { + HashSet hashSet = new HashSet<>(); + hashSet.add(tag); + ArrayList arrayList = new ArrayList<>(); + arrayList.add(tag); + + gm_key3 = GroupMemberCache.genKey(groupId, tag); + //jedis10.hset(gm_key, "ban", _ban); + //jedis10.hset(gm_key, "group_ban", _ban); + BaseCache.updateCacheVer(jedis10, gm_key3); + + while(!arrayList.isEmpty()) + { + ArrayList arrayListTemp = new ArrayList<>(); + arrayListTemp.addAll(arrayList); + arrayList.clear(); + + for(int i = 0; i < arrayListTemp.size(); ++i) + { + int tmpTagId = arrayListTemp.get(i); + String child_list2 = Utility.getChildParentSql(groupId, tmpTagId, true); + + //sql = String.format("update group_member set ban = %s where groupId = %s and (parentId in(%s) or uid = %s)", _ban, groupId,child_list2,tmpTagId); + //Utility.evtdb(groupId, 1, sql); + + sql3 = String.format("select uid from group_member where groupId = %s and (parentId in(%s) or uid = %s)", groupId,child_list2, tmpTagId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql3); + if(tmplist.size()>0) { + for(int j=0; j tag_par_list = Utility.getMemberParents(jedis10, groupId, tag, false); + // String _tag_hp = jedis10.get(String.format("g{%s}:par_hp:%s", groupId,tag)); + List mng_par_list = null; + if (mgn_lev == 3) { + mng_par_list = Utility.getMemberParents(jedis10, groupId, uid, true); + } + Pipeline pipeline = jedis10.pipelined(); + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 10, 11); + for(String pid : pids) { + String p_reward_key = GroupCache.genRewardKey(groupId,Integer.parseInt(pid)); + for(Integer child : child_list) { + pipeline.zrem(p_reward_key, child.toString()); + } + String p_xipai_reward_key = GroupCache.genXiPaiRewardKey(groupId,Integer.parseInt(pid)); + + String p_anchou_reward_key = GroupCache.genAnChouRewardKey(groupId,Integer.parseInt(pid)); + for(Integer child : child_list) { + pipeline.zrem(p_xipai_reward_key, child.toString()); + pipeline.zrem(p_anchou_reward_key, child.toString()); + } + } + if (tag_par_list != null) { + for (Integer par : tag_par_list) { + String list_key = GroupCache.genParListKey(groupId, par); + for (Integer child : child_list) { + pipeline.srem(list_key, child.toString()); + } + } + } + pipeline.hset(tag_key, "parentId", uid + ""); + pipeline.hincrBy(tag_key, "cache_ver", 1); + int diff = (mgn_partner + 1) - member_partner; + if (diff != 0) { + for (Integer child : child_list) { + String key = GroupMemberCache.genKey(groupId, child); + pipeline.hincrBy(key, "partnerLev", diff); + pipeline.hincrBy(key, "cache_ver", 1); + } + } + if (mgn_lev == 3) { + for (Integer par : mng_par_list) { + String list_key = GroupCache.genParListKey(groupId, par); + // String hp_key = String.format("g{%s}:par_hp:%s", groupId,par); + // pipeline.incrBy(hp_key, tag_hp); + for (Integer child : child_list) { + pipeline.sadd(list_key, child.toString()); + } + } + } + pipeline.sync(); + String sql = String.format("update group_member set parentId=%s where uid=%s and groupId=%s", uid, tag, + groupId); + Utility.evtdb(groupId, 1, sql); + if (diff != 0) { + String p = StringUtil.Empty; + int len = child_list.size(); + for (int i = 0; i < len; i++) { + Integer child = child_list.get(i); + p += child + ((i < len - 1) ? "," : StringUtil.Empty); + } + sql = String.format("update group_member set partnerLev=partnerLev+%s where uid in(%s) and groupId=%s", + diff, p, groupId); + Utility.evtdb(groupId, 1, sql); + } + ITObject resData = TObject.newInstance(); + resData.putInt("parentId", uid); + resData.putInt("partnerLev", member_partner + diff); + return resData; + + } finally { + jedis11.hset(group_key, "stop", "0"); + BaseCache.updateCacheVer(jedis11, group_key); + lock.unlock(); + lock1.unlock(false); + lock2.unlock(); + //lock3.unlock(); + } + } + + + + /** + * 获取邮件列表 + * + * @param groupId + * @param uid + * @param limit + * @param num + * @return + */ + public static ITArray getMailList(int groupId, int uid, int limit, int num) { + String mail_key = GroupCache.genMailKey(groupId, uid); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + int time = (int) (System.currentTimeMillis() / 1000); + int s_time = time - 10 * 24 * 3600; + jedis10.zremrangeByScore(mail_key, 0, s_time); + Set sets = jedis10.zrevrangeByScore(mail_key, time, s_time, limit, num); + ITArray arr = TArray.newInstance(); + for (String str : sets) { + arr.addString(str); + } + String mail_tip_key = GroupCache.genMailTipKey(groupId); + jedis10.zadd(mail_tip_key, 0, uid + ""); + return arr; + } finally { + jedis10.close(); + } + } + + /** + * 删除所有邮件 + * + * @param groupId + * @param uid + */ + public static void delMailAll(int groupId, int uid) { + String mail_key = GroupCache.genMailKey(groupId, uid); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + jedis10.del(mail_key); + String mail_tip_key = GroupCache.genMailTipKey(groupId); + jedis10.zadd(mail_tip_key, 0, uid + ""); + } finally { + jedis10.close(); + } + + } + + /** + * 设置合伙人阀值groupId, acc.id, tagId, score + */ + public static final int setPartenerAutoScore(int groupId, int uid, int tagId, int score) { + log.info("setPartenerAutoScore uid:"+uid+" tagId:"+tagId+" score:"+score); + String gm_key = GroupMemberCache.genKey(groupId, tagId); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + String opt1 = jedis10.hget(gm_key, "opt"); + if (StringUtil.isEmpty(opt1) || Integer.parseInt(opt1) != 1) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + String mng_key = GroupMemberCache.genKey(groupId, uid); + RedisLock lock1 = new RedisLock(mng_key, jedis10); + try { + lock1.lock(); + int mgn_lev = Integer.parseInt(jedis10.hget(mng_key, "lev")); + if (mgn_lev == 2) { + String permission = jedis10.hget(mng_key, "permission"); + if (StringUtil.isEmpty(permission) || (Integer.parseInt(permission) & PERMISSION_BAN) == 0) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + else if (mgn_lev >= 3) + { + if (uid != tagId) + { + List par_list = Utility.getMemberParents(jedis10, groupId, tagId, true); + if (par_list == null || !par_list.contains(uid)) { + throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); + } + } + } + } finally { + lock1.unlock(false); + } + score = score * 1000; // deyou 1000 + //score = score * 100; // wanshun 100 + String sql = String.format("update group_member set autoscore = %s where uid = %s " + "AND groupId = %s ", + score, tagId, groupId); + try { + Utility.evtdb(groupId, 1, sql); + jedis10.hset(gm_key, "autoscore", score + ""); + BaseCache.updateCacheVer(jedis10, gm_key); + } finally { + + } + + } catch (Exception ex) { + + } finally { + jedis10.close(); + } + return 1; + } + + public static final void getRobotPlays(int groupId,int uid, ITObject resData){ + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + if (pids.size() == 0) { + return; + } + + + ITArray arr = TArray.newInstance(); + Jedis jedis10 = Redis.use("group1_db11").getJedis(); + try { + + for (String str : pids) { + int pid = Integer.parseInt(str); + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb == null) + continue; + if (gpb.gameId == 10 || gpb.gameId==22) { + ITObject obj = TObject.newInstance(); + obj.putInt("pid", pid); + obj.putString("playname", gpb.name); + String bans = jedis10.hget("g{"+groupId+"}:play:"+pid, "leftover_robot"); + int ban = 0; + if (bans != null) { + ban = Integer.parseInt(bans); + } + obj.putInt("leftover_robot", ban); + arr.addTObject(obj); + } + } + } finally { + jedis10.close(); + } + + resData.putTArray("allplays", arr); + } + + /** + * 获取所有玩法 + */ + public static final void getAllPlays(int groupId,int uid, ITObject resData) { + String gp_key = GroupCache.genPidsKey(groupId); + Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11); + if (pids.size() == 0) { + return; + } + + + ITArray arr = TArray.newInstance(); + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + try { + + for (String str : pids) { + int pid = Integer.parseInt(str); + GroupPlayBean gpb = GroupCache.getPlay(groupId, pid); + if (gpb == null) + continue; + + + ITObject obj = TObject.newInstance(); + obj.putInt("pid", pid); + obj.putString("playname", gpb.name); + String bans= jedis10.hget(GroupCache.genBanKey(groupId, uid),pid+""); + int ban = 0; + if (bans!=null){ + ban = Integer.parseInt(bans); + } + + obj.putInt("ban",ban); + arr.addTObject(obj); + } + } finally { + jedis10.close(); + } + + resData.putTArray("allplays", arr); + } + + + public static final void setPanterRobotPlayid(int groupId,int pid,int ban,int uid, ITObject resData) throws Exception{ + GroupMemberBean tag_bean = GroupCache.getMember(groupId, uid); + if (tag_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + Jedis jedis10 = Redis.use("group1_db11").getJedis(); + String gm_key = GroupMemberCache.genKey(groupId, uid); + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + + jedis10.hset("g{"+groupId+"}:play:"+pid, "leftover_robot", ban+""); + + } finally { + lock.unlock(); + } + + ITArray arr = TArray.newInstance(); + ITObject obj = TObject.newInstance(); + obj.putInt("robotok", ban); + arr.addTObject(obj); + resData.putTArray("allplays", arr); + } + + public static final void setBanPlayid(int groupId,int pid,int ban,int uid, ITObject resData) throws Exception{ + GroupMemberBean tag_bean = GroupCache.getMember(groupId, uid); + if (tag_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + + GroupMemberBean mng_bean = GroupCache.getMember(groupId, uid); + if (mng_bean == null) { + throw new WebException(ErrorCode.GROUP_NOT_MEMBER); + } + if (ban==1){ + ban=0; + }else{ + ban=1; + } + Jedis jedis10 = Redis.use("group1_db10").getJedis(); + String gm_key = GroupMemberCache.genKey(groupId, uid); + RedisLock lock = new RedisLock(gm_key, jedis10); + try { + + jedis10.hset(GroupCache.genBanKey(groupId, uid), pid+"", ban+""); + BaseCache.updateCacheVer(jedis10, GroupMemberCache.genKey(groupId, uid)); + + + boolean isPartner = false; + GroupMemberBean gmb = GroupCache.getMember(groupId, uid); + if( gmb.partnerLev > 0) { + isPartner = true; + } + + String sql; + //String _ban = ban + ""; + if(isPartner) { + HashSet hashSet = new HashSet<>(); + hashSet.add(uid); + ArrayList arrayList = new ArrayList<>(); + arrayList.add(uid); + + gm_key = GroupMemberCache.genKey(groupId, uid); + BaseCache.updateCacheVer(jedis10, gm_key); + + while(!arrayList.isEmpty()) + { + ArrayList arrayListTemp = new ArrayList<>(); + arrayListTemp.addAll(arrayList); + arrayList.clear(); + + for(int i = 0; i < arrayListTemp.size(); ++i) + { + int tmpTagId = arrayListTemp.get(i); + String child_list2 = Utility.getChildParentSql(groupId, tmpTagId, true); + sql = String.format("select uid from group_member where groupId = %s and (parentId in(%s) or uid = %s)", groupId,child_list2, tmpTagId); + + ITArray tmplist = DataBase.use().executeQueryByTArray(sql); + if(tmplist.size()>0) { + for(int j=0; j _actionQueue = new LinkedList(); + + + public HttpClient(String url) { + _url = url; + } + + private void __sendMsg(Message msg) { + byte[] bytes = NULL_BYTES; + ITObject _data = TObject.newInstance(); + _data.putString(_Session, _session_id); + _data.putInt(_Version, NetManager.VERSION); + if (msg.useText && msg.param == null) { + if (StringUtil.isEmpty(msg.textParam)) { + msg.param = TObject.newInstance(); + } else { + try { + msg.param = TObject.newFromJsonData(msg.textParam); + } catch (Exception e) { + msg.param = TObject.newInstance(); + } + } + } + _data.putTObject(_Param, msg.param); + ByteArray buff = new ByteArray(_data.toBinary()); + try { + buff.compress(); + } catch (Exception e) { + logger.error(e); + } + bytes = buff.bytes(); + + __requestAsync(msg, bytes); + } + + private void __requestAsync(final Message msg,byte[] bytes) { + OutputStream out = null; + InputStream in = null; + int code = 500; + HttpURLConnection conn = null; + try { + + URL realUrl = new URL(_url + msg.command); + conn = (HttpURLConnection) realUrl.openConnection(); + conn.setDoOutput(true); + conn.setDoInput(true); + conn.setRequestProperty(_ContentTypeName, _ContentType); + conn.setUseCaches(false);// Post 璇锋眰涓嶈兘浣跨敤缂撳瓨 + conn.setRequestMethod(_Method); + conn.setConnectTimeout(NetManager.TIMEOUT_TIME * 1000); + conn.setReadTimeout(NetManager.TIMEOUT_TIME * 1000); + conn.connect(); + + + out = conn.getOutputStream(); + out.write(bytes); + if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { + in = conn.getInputStream(); + bytes = Utils.uncompress(in); + if (bytes!=null) { + + ITObject tem = TObject.newFromBinaryData(bytes); + int result = tem.getInt(_Result); + + if (result == 0) { + ITObject _param = tem.getTObject(_Param); + msg.param = _param; + if(msg.useText) { + msg.textParam = _param.toJson(); + } + } + code = result; + + } + } + } catch (SocketTimeoutException e) { + logger.error(e); + code = 102; + } catch (ConnectException ex1) { + logger.error(ex1); + code = 101; + } catch (Exception ex2) { + logger.error(ex2); + code = 500; + }finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ex) { + logger.error(ex); + } + try { + if (in != null) { + in.close(); + } + }catch (IOException ex) { + logger.error(ex); + } + if(conn!=null) { + conn.disconnect(); + } + } + if (msg.callback != null) { + final MessageResponse response = new MessageResponse(); + response.messageData = msg; + response.returnCode = code; + enqueueActionForDispatch(new Runnable() { + @Override + public void run() { + msg.callback.action(response); + } + }); + } + + } + + @Override + public void connect(String ip, String game) { + + } + + @Override + public void disconnect() { + + } + + private void enqueueActionForDispatch(Runnable action) { + synchronized (_actionQueue) { + _actionQueue.offer(action); + } + } + + @Override + public void processEvent() { + while (true) { + Runnable myAction; + synchronized (_actionQueue) { + if (_actionQueue.size() <= 0) { + break; + } + myAction = _actionQueue.poll(); + } + myAction.run(); + } + } + + public void write(final Message msg) { + new Thread(new Runnable() { + @Override + public void run() { + __sendMsg(msg); + } + }).start(); + } + + public int getAveragePingTime() { + return 1000; + } + + public void setSession(String session) { + _session_id = session == null ? StringUtil.Empty : session; + } + + public String getSession() { + return _session_id; + + } + + @Override + public void setOnConnect(ICallback onConnect) { + + } + + @Override + public void setOnEvent(ICallback onEvent) { + + } + + @Override + public ConnectionProtocol getProtocol() { + return ConnectionProtocol.Web; + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/ISocketLayer.java b/game_web/web_group_robot/src/main/java/com/group/service/ISocketLayer.java new file mode 100644 index 0000000..d9048ca --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/ISocketLayer.java @@ -0,0 +1,67 @@ +package com.group.service; + +import com.taurus.core.util.ICallback; +import com.group.service.TaurusClient.ConnectionProtocol; + +/** + * 网络协议处理通用接口 + * @author daixiwei daixiwei15@126.com + * + */ +public interface ISocketLayer { + /** + * 连接服务器 + * @param ip + * @param game + */ + public void connect(String ip, String game); + + /** + * 断开连接 + */ + public void disconnect(); + + /** + * 处理事件 + */ + public void processEvent(); + + /** + * 发送消息 + * @param msg + */ + public void write(Message msg); + + /** + * get Protocol type + * @return + */ + public ConnectionProtocol getProtocol(); + + /** + * 设置连接状态回调 + */ + public void setOnConnect(ICallback onConnect); + + + /** + * 设置事件消息回调E + */ + public void setOnEvent(ICallback onEvent); + + /** + * 网络延时 + */ + public int getAveragePingTime(); + + /** + * 获取服务器Session字符 + */ + public String getSession(); + + /** + * 设置服务器Session字符 + * @param session + */ + public void setSession(String session); +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/Message.java b/game_web/web_group_robot/src/main/java/com/group/service/Message.java new file mode 100644 index 0000000..11e57d1 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/Message.java @@ -0,0 +1,47 @@ +package com.group.service; + +import com.taurus.core.entity.ITObject; +import com.taurus.core.util.ICallback; + +/** + * 网络协议消息包 + * @author daixiwei daixiwei15@126.com + * + */ +public class Message { + /** + * 使用文本,不转换ITObject + */ + public boolean useText; + /** + * 网络协议指令Key + */ + public String command; + + /** + * 参数 + */ + public ITObject param; + /** + * 文本数据 + */ + public String textParam; + + /** + * 网络消息回调 + */ + public ICallback callback; + /** + * 自定义参数 + */ + public Object data; + /** + * 网络包最后写入时间 + */ + public long lastTime; + /** + * 网络包返回匹配的GID + */ + public int gid; + +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/MessageResponse.java b/game_web/web_group_robot/src/main/java/com/group/service/MessageResponse.java new file mode 100644 index 0000000..fa79180 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/MessageResponse.java @@ -0,0 +1,17 @@ +package com.group.service; + +/** + * 缃戠粶娑堟伅鍥炶皟鏁版嵁瀵硅薄 + * @author daixiwei daixiwei15@126.com + * + */ +public class MessageResponse { + /** + * 娑堟伅鏁版嵁 + */ + public Message messageData; + /** + * 杩斿洖缁撴瀯鍊? + */ + public int returnCode; +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/NetManager.java b/game_web/web_group_robot/src/main/java/com/group/service/NetManager.java new file mode 100644 index 0000000..b4c119a --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/NetManager.java @@ -0,0 +1,107 @@ +package com.group.service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 网络管理对象 + * @author daixiwei daixiwei15@126.com + * + */ +public class NetManager { + + private static List _clientList = new ArrayList(); + private static Map _clientMap = new HashMap(); + + /** + * 网络超时时间 + */ + public static int TIMEOUT_TIME = 10; + /** + * 网络版本号 + */ + public static int VERSION = 10; + public static boolean debug_print = false; + + static void addNetClient(TaurusClient net) { + if (net == null) { + throw new RuntimeException("TaurusClient is null, it can't be added."); + } + if (_clientMap.containsKey(net.getId())) { + throw new RuntimeException("A client with id: " + net.getId() + " already exists! Controller can't be added: " + net); + } + synchronized (_clientList) { + _clientMap.put(net.getId(), net); + _clientList.add(net); + } + + } + + /** + * The process events + */ + public static void processEvents() { + for (int i = 0; i < _clientList.size(); ++i) { + TaurusClient nc = _clientList.get(i); + if (nc._kill){ + synchronized (_clientList) { + _clientMap.remove(nc.getId()); + _clientList.remove(nc); + } + i--; + continue; + }else{ + nc.processEvent(); + } + } + + } + + /** + * 返回指定的NetClient + * @param id + * @return + */ + public static TaurusClient getNetClient(int id) { + for (int i = 0; i < _clientList.size(); ++i) { + TaurusClient nc = _clientList.get(i); + if (nc.getId() == id) + return nc; + } + return null; + } + + /** + * 断开指定连接 + * @param id + */ + public static void killConnection(int id) { + for (int i = 0; i < _clientList.size(); ++i) { + TaurusClient nc = _clientList.get(i); + if (nc.getId() == id) { + nc.killConnection(); + synchronized (_clientList) { + _clientMap.remove(id); + _clientList.remove(nc); + } + break; + } + } + } + + /** + * 断开所有连接 + */ + public static void killAllConnection() { + synchronized (_clientList) { + for (TaurusClient nc : _clientList) { + nc.killConnection(); + } + _clientList.clear(); + _clientMap.clear(); + } + + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/SocketCode.java b/game_web/web_group_robot/src/main/java/com/group/service/SocketCode.java new file mode 100644 index 0000000..a35b639 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/SocketCode.java @@ -0,0 +1,46 @@ +package com.group.service; + +/** + * Socket code + * @author daixiwei daixiwei15@126.com + * + */ +public enum SocketCode { + /** + * 杩炴帴鎴愬姛 + */ + Connect, + Disconnect, + /** + * 鏈煡寮傚父 + */ + Exception, + /** + * 杩炴帴鏈嶅姟寮傚父 + */ + ExceptionOnConnect, + /** + * 鍙戦€佹暟鎹祦閿欒 + */ + SendError, + /** + * 鎺ユ敹鏈嶅姟鍣ㄦ暟鎹祦寮傚父 + */ + ExceptionOnReceive, + /** + * 鏈嶅姟鍣ㄨ繛鎺ヨ秴鏃? + */ + TimeoutDisconnect, + /** + * 鏈嶅姟鍣ㄦ柇寮€杩炴帴 + */ + DisconnectByServer, + /** + * 瀹㈡埛绔綉缁滃紓甯? + */ + NetworkException, + /** + * 杩炴帴瀹夊叏寮傚父锛屼竴鑸负闃茬伀澧欓樆姝? + */ + SecurityExceptionOnConnect +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/TaurusClient.java b/game_web/web_group_robot/src/main/java/com/group/service/TaurusClient.java new file mode 100644 index 0000000..fcf01de --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/TaurusClient.java @@ -0,0 +1,354 @@ +package com.group.service; + +import com.taurus.core.entity.ITObject; +import com.taurus.core.events.Event; +import com.taurus.core.events.EventDispatcher; +import com.taurus.core.events.IEventListener; +import com.taurus.core.util.ICallback; +import com.taurus.core.util.Logger; +import com.group.service.io.SocketEngine; + +import java.util.HashMap; +import java.util.Map; + + +/** + * 缃戠粶鏍稿績鍔熻兘澶勭悊绫? + * @author daixiwei daixiwei15@126.com + * + */ +public class TaurusClient { + private static final Logger logger = Logger.getLogger(TaurusClient.class); + private int _id; + private boolean _connect; + private String _gameId; + private String _currentIp; + + private ISocketLayer _scoket; + private ThreadManager _threadManager; + + private EventDispatcher _dispatcher; + private Map> _responseMap; + volatile boolean _kill = false; + private static int _tempID; + private int _protocolCompression=100; + + private static int _getValidID() { + return ++_tempID; + } + + /** + * + * @param host + * @param game + * @param protocol + */ + public TaurusClient(String host, String game, ConnectionProtocol protocol) { + ISocketLayer socket = null; + switch (protocol) { + case Tcp: + socket = new SocketEngine(this); + break; + case Web: + socket = new HttpClient(host); + _connect = true; + break; + default: + socket = new SocketEngine(this); + break; + } + __initialize(host, game, socket); + } + + /** + * + * @param host + * @param game + * @param socket + * @param protocol + */ + public TaurusClient(String host, String game, ISocketLayer socket) { + __initialize(host, game, socket); + + } + + /** + * 娣诲姞浜嬩欢 + * @param eventType + * @param listener + */ + public void addEventListener(String eventType, IEventListener listener) { + _dispatcher.addEventListener(eventType, listener); + } + + /** + * 绉婚櫎鎵€鏈変簨浠? + */ + public void removeAllListener() { + _dispatcher.removeAllListener(); + } + + /** + * 绉婚櫎鎸囧畾浜嬩欢 + * @param eventType + * @param listener + */ + public void removeEventListener(String eventType, IEventListener listener) { + _dispatcher.removeEventListener(eventType, listener); + } + + private void __initialize(String host, String game, ISocketLayer socket) { + _dispatcher = new EventDispatcher(); + _responseMap = new HashMap>(); + _id = _getValidID(); + NetManager.addNetClient(this); + _currentIp = host; + _gameId = game; + _threadManager = new ThreadManager(); + _threadManager.start(); + _scoket = socket; + _scoket.setOnConnect(new ICallback() { + @Override + public void action(SocketCode code) { + if (code == SocketCode.Connect) + _connect = true; + else + _connect = false; + Event evt = new Event(NetClientEvent.Connect); + evt.setParameter("code", code); + _dispatcher.dispatchEvent(evt); + } + }); + _scoket.setOnEvent(new ICallback() { + @Override + public void action(Message msg) { + if (_connect) { + Event evt = new Event(NetClientEvent.OnEvent); + evt.setParameter("msg", msg); + _dispatcher.dispatchEvent(evt); + if (NetManager.debug_print){ + String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP"; + String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null"); + logger.debug("Event [" + str + "->" + msg.command + "] data:" + data_str); + } + } + } + }); + } + + /** + * 杩炴帴鏈嶅姟鍣? + */ + public void connect() { + _scoket.connect(_currentIp, _gameId); + } + + /** + * Kill net connection. + */ + public void killConnection() { + removeAllListener(); + _responseMap.clear(); + _threadManager.stop(); + _scoket.disconnect(); + _connect = false; + _kill = true; + } + + /** + * 鍙戦€佺綉缁滄秷鎭寘 + * @param msg 娑堟伅鏁版嵁瀵硅薄 + */ + protected void send(Message msg) { + if (msg == null) + return; + if (NetManager.debug_print) { + String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP"; + String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null"); + str = "Requst [" + str + "->" + msg.command + "] ->data:" + data_str; + logger.debug(str); + } + if (msg.callback != null) { + _responseMap.put(msg, msg.callback); + msg.callback = new ICallback() { + + @Override + public void action(MessageResponse response) { + ICallback callback = _responseMap.get(response.messageData); + if (callback == null) { + return; + } + if (NetManager.debug_print){ + String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP"; + String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null"); + str = "Response [" + str + "->" + msg.command + "] ->result:"+ response.returnCode + " param:" + data_str; + logger.debug(str); + } + _responseMap.remove(response.messageData); + callback.action(response); + } + + }; + } + + _threadManager.enqueueSend(new ICallback() { + @Override + public void action(Message msg) { + sendData(msg); + } + }, msg); + } + + + /** + * 鍙戦€佺綉缁滄秷鎭寘 + * @param cmd 缃戠粶鍗忚鎸囦护Key + * @param param 鍙傛暟 + * @param callback 缃戠粶娑堟伅鍥炶皟 + * @return + */ + public Message send(String cmd, ITObject param, ICallback callback) { + Message msg = new Message(); + msg.useText = false; + msg.command = cmd; + msg.param = param; + msg.callback = callback; + this.send(msg); + return msg; + } + + /** + * 鍙戦€佺綉缁滄秷鎭寘 + * @param cmd 缃戠粶鍗忚鎸囦护Key + * @param text JSON 鏂囨湰 + * @param callback 缃戠粶娑堟伅鍥炶皟 + * @return + */ + public Message sendText(String cmd, String text, ICallback callback) { + Message msg = new Message(); + msg.command = cmd; + msg.textParam = text; + msg.callback = callback; + msg.useText = true; + this.send(msg); + return msg; + } + + /** + * 鍙戦€佹暟鎹嚎绋嬫柟娉? + * @param message + */ + private void sendData(Message msg) { + _scoket.write(msg); + } + + /** + * 澶勭悊浜嬩欢 + */ + void processEvent() { + if(_scoket!=null) { + _scoket.processEvent(); + } + } + + /** + * 娓呯悊鍝嶅簲鍥炶皟 + */ + public void clearResponse() { + _responseMap.clear(); + } + + /** + * The net client id + * @return + */ + public int getId() { + + return _id; + + } + + /** + * The curren ip + * @return + */ + public String getCurrentIp() { + return _currentIp; + } + + /** + * The curren Game ID + * @return + */ + public String getGameID() { + return _gameId; + } + + /** + * 缃戠粶鏄惁宸茶繛鎺? + * @return + */ + public boolean isConnected() { + return _connect; + } + + /** + * 褰撳墠缃戠粶绫诲瀷 + * @return + */ + public ConnectionProtocol getProtocol() { + return _scoket.getProtocol(); + } + + /** + * 缃戠粶寤舵椂 + * @return + */ + public int getAveragePingTime() { + return _scoket.getAveragePingTime(); + } + + /** + * 鑾峰彇鏈嶅姟鍣⊿ession瀛楃 + * @return + */ + public String getSession() { + return _scoket.getSession(); + } + + /** + * 璁剧疆鏈嶅姟鍣⊿ession瀛楃 + * @param session + */ + public void setSession(String session) { + _scoket.setSession(session); + } + + /** + * 璁剧疆鍘嬬缉闃€鍊? + * @param protocolCompression + */ + public void setProtocolCompression(int protocolCompression) { + _protocolCompression = protocolCompression; + } + + /** + * 鑾峰彇鍘嬬缉闃€鍊? + * + * @return + */ + public int getProtocolCompression() { + return _protocolCompression; + } + + + public static enum ConnectionProtocol { + Tcp, Web, + } + + public static class NetClientEvent { + public static final String Connect = "connect"; + + public static final String OnEvent = "onevent"; + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/ThreadManager.java b/game_web/web_group_robot/src/main/java/com/group/service/ThreadManager.java new file mode 100644 index 0000000..b9e2078 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/ThreadManager.java @@ -0,0 +1,123 @@ +package com.group.service; + +import com.taurus.core.util.ICallback; + +import java.util.LinkedList; +import java.util.Queue; +import java.util.Stack; + + + +/** + * 网络(读/写) 线程管理 + * @author daixiwei daixiwei15@126.com + * + */ +public class ThreadManager { + class MessgaeThread { + public ICallback _dataDelegate; + + public Message _message; + } + + private boolean _running = false; + private Thread _outThread; + private boolean _outHasQueuedItems = false; + private Queue _outThreadQueue = new LinkedList(); + private Object _outQueueLocker = new Object(); + private Stack pool = new Stack(); + + private MessgaeThread MessgaeThreadGet() { + if (pool.size() > 0) { + MessgaeThread msg = pool.pop(); + return msg; + } else + return new MessgaeThread(); + } + + private void MessgaeThreadReturn(MessgaeThread value) { + pool.push(value); + value._dataDelegate = null; + value._message = null; + } + + private static void sleep(int ms) { + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + + } + } + + private void outThread() { + while (_running) { + sleep(5); + if (_outHasQueuedItems) { + Object obj = _outQueueLocker; + synchronized (obj) { + while (_outThreadQueue.size() > 0) { + MessgaeThread item = _outThreadQueue.poll(); + processOutItem(item); + } + _outHasQueuedItems = false; + } + } + } + } + + private void processOutItem(MessgaeThread item) { + ICallback _dataDelegate = item._dataDelegate; + Message message = item._message; + MessgaeThreadReturn(item); + if (_dataDelegate != null) { + _dataDelegate.action(message); + } + } + + public void start() { + if (_running) { + return; + } + _running = true; + if (_outThread == null) { + _outThread = new Thread(new Runnable() { + @Override + public void run() { + outThread(); + } + }); + _outThread.start(); + _outThread.setName("WriteMessage"); + } + } + + public void stop() { + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + stopThread(); + } + }); + thread.start(); + } + + private void stopThread() { + _running = false; + + if (_outThread != null) { + _outThread.interrupt(); + } + _outThread = null; + } + + public void enqueueSend(ICallback callback, Message message) { + MessgaeThread hashtable = MessgaeThreadGet(); + hashtable._dataDelegate = callback; + hashtable._message = message; + Object obj = _outQueueLocker; + synchronized (obj) { + _outThreadQueue.offer(hashtable); + _outHasQueuedItems = true; + } + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/IOHandler.java b/game_web/web_group_robot/src/main/java/com/group/service/io/IOHandler.java new file mode 100644 index 0000000..cb3ca22 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/IOHandler.java @@ -0,0 +1,251 @@ +package com.group.service.io; + +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TObject; +import com.taurus.core.util.ByteArray; +import com.taurus.core.util.Logger; +import com.taurus.core.util.Utils; +import com.group.service.SocketCode; + +import java.io.IOException; + +/** + * 鍗忚鍖呭瓧鑺傛祦瑙f瀽 + * + * @author daixiwei daixiwei15@126.com + * + */ +class IOHandler { + private final Logger logger = Logger.getLogger(IOHandler.class); + private static final String ACTION_ID = "a"; + private static final String PARAM_ID = "p"; + static final int INT_BYTE_SIZE = 4; + + private static final ByteArray EMPTY_BUFFER = new ByteArray(); + private int _skipBytes = 0; + private ByteArray _buffer; + private int _expectedLength = -1; + private boolean _compressed = false; + + private SocketEngine _engine; + private SystemController _controller; + + /** + * 璇诲彇鐘舵€? + */ + private PacketReadState _readState = PacketReadState.WAIT_NEW_PACKET; + + IOHandler(SocketEngine client, SystemController controller) { + _engine = client; + _controller = controller; + } + + /** + * + * @param data + * @return + * @throws IOException + */ + private ByteArray handleDataSize(ByteArray data) throws Exception { + int num = data.readInt(); + int pos = INT_BYTE_SIZE; + if (num != -1) { + _expectedLength = num; + data = resizeByteArray(data, pos, data.length() - pos); + _readState = PacketReadState.WAIT_DATA; + return data; + } + _readState = PacketReadState.WAIT_DATA_SIZE_FRAGMENT; + _buffer.writeBytes(data.bytes()); + data = EMPTY_BUFFER; + return data; + } + + /** + * + * @param data + * @return + * @throws IOException + */ + private ByteArray handleDataSizeFragment(ByteArray data) throws Exception { + int count = INT_BYTE_SIZE - _buffer.length(); + if (data.length() >= count) { + _buffer.writeBytes(data.bytes(), 0, count); + int num2 = INT_BYTE_SIZE; + ByteArray array = new ByteArray(); + array.writeBytes(_buffer.bytes(), 0, num2); + array.position(0); + int num3 = array.readInt(); + _expectedLength = num3; + _buffer = new ByteArray(); + _readState = PacketReadState.WAIT_DATA; + if (data.length() > count) { + data = resizeByteArray(data, count, data.length() - count); + return data; + } + data = EMPTY_BUFFER; + return data; + } + _buffer.writeBytes(data.bytes()); + data = EMPTY_BUFFER; + return data; + } + + /** + * + * @param data + * @return + */ + private ByteArray handleInvalidData(ByteArray data) { + if (_skipBytes == 0) { + _readState = PacketReadState.WAIT_NEW_PACKET; + return data; + } + int pos = Math.min(data.length(), _skipBytes); + data = resizeByteArray(data, pos, data.length() - pos); + _skipBytes -= pos; + return data; + } + + /** + * + * @param data + * @return + */ + private ByteArray handleNewPacket(ByteArray data) throws Exception { + _buffer = new ByteArray(); + _expectedLength = -1; + _compressed = data.readByte() > 0; + data = resizeByteArray(data, 1, data.length() - 1); + _readState = PacketReadState.WAIT_DATA_SIZE; + return data; + } + + /** + * + * @param data + * @return + */ + private ByteArray handlePacketData(ByteArray data) throws Exception { + int count = _expectedLength - _buffer.length(); + boolean flag = data.length() > count; + ByteArray array = new ByteArray(data.bytes()); + try { + if (data.length() >= count) { + _buffer.writeBytes(data.bytes(), 0, count); + if (_compressed) { + _buffer.uncompress(); + } + dispatchRequest(_buffer); + _readState = PacketReadState.WAIT_NEW_PACKET; + } else { + _buffer.writeBytes(data.bytes()); + } + if (flag) { + data = resizeByteArray(data, count, data.length() - count); + return data; + } + data = EMPTY_BUFFER; + } catch (Exception exception) { + logger.error("Error handling data ", exception); + _skipBytes = count; + _readState = PacketReadState.INVALID_DATA; + return array; + } + return data; + } + + private void dispatchRequest(ByteArray _buffer) throws IOException { + ITObject requestObject = TObject.newFromBinaryData(_buffer.bytes()); + Packet packet = new Packet(); + if (requestObject.isNull(ACTION_ID)) { + throw new IOException("Request rejected: No Action ID in request!"); + } + packet.actionID = requestObject.getByte(ACTION_ID); + packet.parameters = requestObject.getTObject(PARAM_ID); + _controller.handlePacket(packet); + } + + /** + * + * @param data + * @throws IOException + */ + public void onDataRead(ByteArray data) throws IOException { + if (data.length() == 0) { + throw new IOException("Unexpected empty packet data: no readable bytes available!"); + } + + data.position(0); + try { + while (data.length() > 0) { + if (_readState == PacketReadState.WAIT_NEW_PACKET) { + data = handleNewPacket(data); + } else { + if (_readState == PacketReadState.WAIT_DATA_SIZE) { + data = handleDataSize(data); + continue; + } + if (_readState == PacketReadState.WAIT_DATA_SIZE_FRAGMENT) { + data = handleDataSizeFragment(data); + continue; + } + if (_readState == PacketReadState.WAIT_DATA) { + data = handlePacketData(data); + continue; + } + if (_readState == PacketReadState.INVALID_DATA) { + data = handleInvalidData(data); + } + } + } + } catch (Exception e) { + this.logger.error(e); + } + + } + + /** + * + * @param packet + * @throws IOException + */ + public void onDataWrite(Packet packet) throws IOException { + ByteArray binData = new ByteArray(); + + ITObject obj2 = new TObject(); + obj2.putByte(ACTION_ID, (byte) packet.actionID); + obj2.putTObject(PARAM_ID, packet.parameters); + byte[] array2 = obj2.toBinary(); + boolean compression = array2.length > _engine.getProtocolCompression(); + if (compression) { + array2 = Utils.compress(array2); + } + binData.writeByte((byte) (compression ? 1 : 0)); + binData.writeInt(array2.length); + binData.writeBytes(array2); + + if (_engine._socket.isConnected()) { + if (!_engine._socket.send(binData.bytes())) { + _engine.enqueueStatusCallback(SocketCode.SendError); + } + } + } + + /** + * + * @param array + * @param pos + * @param len + * @return + */ + private ByteArray resizeByteArray(ByteArray array, int pos, int len) { + byte[] dst = new byte[len]; + System.arraycopy(array.bytes(), pos, dst, 0, len); + return new ByteArray(dst); + } + + static enum PacketReadState { + WAIT_NEW_PACKET, WAIT_DATA_SIZE, WAIT_DATA_SIZE_FRAGMENT, WAIT_DATA, INVALID_DATA + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/ISocket.java b/game_web/web_group_robot/src/main/java/com/group/service/io/ISocket.java new file mode 100644 index 0000000..10f1f70 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/ISocket.java @@ -0,0 +1,113 @@ +package com.group.service.io; + +import com.taurus.core.util.Logger; +import com.taurus.core.util.StringUtil; +import com.group.service.SocketCode; + +/** + * Socket核心基类 + * @author daixiwei daixiwei15@126.com + * + */ +public abstract class ISocket { + protected static final Logger logger = Logger.getLogger(ISocket.class); + SocketEngine _engine; + /** + * 当前socket状态 + */ + public volatile SocketState state = SocketState.Disconnected; + /** + * 服务器地址 + */ + protected String serverAddress; + /** + * 服务器端口 + */ + protected int serverPort; + + /** + * 网络链接状态 + * @return + */ + public boolean isConnected() { + return state == SocketState.Connected; + } + + public ISocket(SocketEngine peerBase) { + if (peerBase == null) { + throw new RuntimeException("Can't init without peer"); + } + this._engine = peerBase; + } + + public boolean connect() { + boolean result; + if (state != SocketState.Disconnected) { + logger.error("Calling connect when the socket is not disconnected"); + result = false; + } else if (_engine == null) { + result = false; + } else if (!tryParseAddress(_engine.getServerAddress())) { + logger.error("Failed parsing address: " + _engine.getServerAddress()); + result = false; + } else { + result = true; + } + return result; + } + + /** + * 断开连接 + * @return + */ + public abstract boolean disconnect(); + + /** + * 发送流数据 + * @param data + * @return + */ + public abstract boolean send(byte[] data); + + protected void handleException(SocketCode statusCode) { + state = SocketState.Disconnecting; + _engine.enqueueStatusCallback(statusCode); + _engine.enqueueActionForDispatch(new Runnable() { + @Override + public void run() { + disconnect(); + } + }); + } + + /** + * 解析网络地址 + * @param addressAndPort + * @param address + * @param port + * @return + */ + protected boolean tryParseAddress(String addressAndPort) { + boolean result = true; + if (StringUtil.isEmpty(addressAndPort)) { + result = false; + } else { + int num = addressAndPort.lastIndexOf(':'); + if (num <= 0) { + result = false; + } else if (addressAndPort.indexOf(':') != num && (!addressAndPort.contains("[") || !addressAndPort.contains("]"))) { + result = false; + } else { + serverAddress = addressAndPort.substring(0, num); + String s = addressAndPort.substring(num + 1); + try { + serverPort = Integer.parseInt(s); + } catch (Exception e) { + result = false; + } + } + } + return result; + } + +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/LagMonitor.java b/game_web/web_group_robot/src/main/java/com/group/service/io/LagMonitor.java new file mode 100644 index 0000000..5eeca79 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/LagMonitor.java @@ -0,0 +1,104 @@ +package com.group.service.io; + +import com.taurus.core.util.Logger; + +import java.io.IOException; +import java.util.*; + + +/** + * 网络监听/心跳 + * @author daixiwei daixiwei15@126.com + * + */ +public class LagMonitor extends TimerTask { + private static final Logger logger = Logger.getLogger(LagMonitor.class); + private int _averagePingTime; + private Timer _pollTimer; + private int _queueSize; + private int _interval; + private boolean _run; + private SocketEngine _engine; + private List _valueQueue; + private Queue write_queue = new LinkedList(); + + public LagMonitor(SocketEngine engine, int interval, int queueSize) { + if (interval < 1) { + interval = 1; + } + _engine = engine; + _valueQueue = new ArrayList(); + _queueSize = queueSize; + _pollTimer = new Timer(); + _interval = interval * 1000; + _averagePingTime = 1000; + } + + public void fnPingPong() { + long w_time = write_queue.poll(); + long item = System.currentTimeMillis() - w_time; + if (_valueQueue.size() >= _queueSize) { + _valueQueue.remove(0); + } + _valueQueue.add(item); + if (_valueQueue.size() == 0) { + _averagePingTime = 0; + } + int num = 0; + for (int i = 0; i < _valueQueue.size(); ++i) { + num += _valueQueue.get(i); + } + _averagePingTime = (num / _valueQueue.size()); + } + + /** + * 启动监听 + */ + public void start() { + if (!isRunning()) { + this._run = true; + _pollTimer.scheduleAtFixedRate(this, 0, _interval); + } + } + + /** + * 停止监听 + */ + public void stop() { + if (isRunning()) { + this._run = false; + _pollTimer.purge(); + } + } + + public void destroy() { + stop(); + _pollTimer.cancel(); + _pollTimer = null; + _engine = null; + } + + /** + * 平均Ping的时间 + * @return + */ + public int getAveragePingTime() { + return _averagePingTime; + + } + + public boolean isRunning() { + return _run; + + } + + @Override + public void run() { + try { + _engine._controller.sendPingPong(); + write_queue.offer(System.currentTimeMillis()); + } catch (IOException e) { + logger.error(e); + } + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/Packet.java b/game_web/web_group_robot/src/main/java/com/group/service/io/Packet.java new file mode 100644 index 0000000..574fce0 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/Packet.java @@ -0,0 +1,20 @@ +package com.group.service.io; + +import com.taurus.core.entity.ITObject; + +/** + * 网络协议数据包 + * @author daixiwei daixiwei15@126.com + * + */ +public class Packet { + + /** + * 协议包ID + */ + public int actionID; + /** + * 参数数据 + */ + public ITObject parameters; +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/SocketEngine.java b/game_web/web_group_robot/src/main/java/com/group/service/io/SocketEngine.java new file mode 100644 index 0000000..cecc31a --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/SocketEngine.java @@ -0,0 +1,160 @@ +package com.group.service.io; + +import com.taurus.core.util.ICallback; +import com.taurus.core.util.Logger; +import com.group.service.*; +import com.group.service.TaurusClient.ConnectionProtocol; + +import java.io.IOException; +import java.util.LinkedList; +import java.util.Queue; + +/** + * SocketEngine + * + * @author daixiwei daixiwei15@126.com + * + */ +public class SocketEngine implements ISocketLayer { + private static final Logger logger = Logger.getLogger(SocketEngine.class); + + ISocket _socket; + private String _sessionToken; + private String _serverAddress; + + private ICallback _onConnect; + ICallback _onEvent; + private Queue _actionQueue = new LinkedList(); + + SystemController _controller; + LagMonitor _lagMonitor; + IOHandler _packetHandler; + TaurusClient _client; + + public SocketEngine(TaurusClient client) { + _socket = new SocketTcp(this); + _controller = new SystemController(this); + _packetHandler = new IOHandler(this, _controller); + _lagMonitor = new LagMonitor(this, NetManager.TIMEOUT_TIME, 10); + } + + @Override + public void connect(String ip, String game) { + _serverAddress = ip; + _socket.connect(); + } + + @Override + public void disconnect() { + _socket.disconnect(); + if (_lagMonitor != null) + _lagMonitor.destroy(); + _lagMonitor = null; + } + + @Override + public void processEvent() { + if (_socket.isConnected() && _controller.isTimeOut()) { + if (_onConnect != null) + _onConnect.action(SocketCode.TimeoutDisconnect); + return; + } + + while (true) { + Runnable myAction; + synchronized (_actionQueue) { + if (_actionQueue.size() <= 0) { + break; + } + myAction = _actionQueue.poll(); + } + myAction.run(); + } + } + + public void write(Message msg) { + try { + _controller.sendRequest(msg); + } catch (IOException e) { + logger.error(e); + } + } + + void onStatusChanged(SocketCode statusCode) { + if (statusCode != SocketCode.Connect) { + _socket.disconnect(); + this.disconnect(); + } + System.out.println("status : " + statusCode); + logger.info("status : " + statusCode); + if (statusCode == SocketCode.Connect) { + this.onHandshake(); + } else { + if (_onConnect != null) + _onConnect.action(statusCode); + } + } + + void onHandshake() { + _controller.refreshTime(); + _lagMonitor.start(); + if (_onConnect != null) + _onConnect.action(SocketCode.Connect); + } + + void enqueueActionForDispatch(Runnable action) { + synchronized (_actionQueue) { + _actionQueue.offer(action); + } + } + + void enqueueStatusCallback(final SocketCode statusValue) { + synchronized (_actionQueue) { + _actionQueue.offer(new Runnable() { + @Override + public void run() { + onStatusChanged(statusValue); + } + }); + } + } + + + + + public String getServerAddress() { + return _serverAddress; + } + + @Override + public ConnectionProtocol getProtocol() { + return ConnectionProtocol.Tcp; + } + + public int getAveragePingTime() { + return _lagMonitor != null ? _lagMonitor.getAveragePingTime() : 1000; + } + + public void setSession(String session) { + _sessionToken = session == null ? "" : session; + } + + public String getSession() { + return _sessionToken; + + } + + @Override + public void setOnConnect(ICallback onConnect) { + _onConnect = onConnect; + } + + @Override + public void setOnEvent(ICallback onEvent) { + _onEvent = onEvent; + } + + public int getProtocolCompression() { + return 100; + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/SocketState.java b/game_web/web_group_robot/src/main/java/com/group/service/io/SocketState.java new file mode 100644 index 0000000..6b0046e --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/SocketState.java @@ -0,0 +1,13 @@ +package com.group.service.io; + +/** + * 缃戠粶鐘舵€佹灇涓? + * @author daixiwei daixiwei15@126.com + * + */ +public enum SocketState{ + Disconnected, + Connecting, + Connected, + Disconnecting +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/SocketTcp.java b/game_web/web_group_robot/src/main/java/com/group/service/io/SocketTcp.java new file mode 100644 index 0000000..ae62bd0 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/SocketTcp.java @@ -0,0 +1,156 @@ +package com.group.service.io; + +import com.taurus.core.util.ByteArray; +import com.group.service.NetManager; +import com.group.service.SocketCode; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; + +/** + * Tcp协议 Socket核心类 + * @author daixiwei daixiwei15@126.com + * + */ +class SocketTcp extends ISocket { + private static final int READ_BUFFER_SIZE = 0x1000; + private byte[] _byteBuffer = new byte[READ_BUFFER_SIZE]; + + private Socket _connection; + private final Object _syncer = new Object(); + + public SocketTcp(SocketEngine npeer) { + super(npeer); + } + + @Override + public boolean connect() { + if (!super.connect()) { + return false; + } else { + state = SocketState.Connecting; + Thread t = new Thread(new Runnable() { + @Override + public void run() { + connectThread(); + } + }); + t.setName("mpnet connect thread"); + t.start(); + return true; + } + } + + private void connectThread() { + try { + SocketAddress remoteAddr = new InetSocketAddress(serverAddress, super.serverPort); + _connection = new Socket(); + _connection.setTcpNoDelay(true); + _connection.connect(remoteAddr, NetManager.TIMEOUT_TIME * 1000); + state = SocketState.Connected; + _engine.enqueueStatusCallback(SocketCode.Connect); + } catch (Exception ex) { + try { + if (_connection != null) + _connection.close(); + } catch (Exception e) { + logger.error("Connection close error", e); + } + logger.error("Connection error", ex); + handleException(SocketCode.ExceptionOnConnect); + return; + } + Thread _thrSocketReader = new Thread(new Runnable() { + @Override + public void run() { + __read(); + } + }); + _thrSocketReader.start(); + } + + @Override + public boolean disconnect() { + if (state == SocketState.Disconnected) + return false; + state = SocketState.Disconnecting; + synchronized (_syncer) { + if (_connection != null) { + try { + _connection.close(); + } catch (Exception ex) { + logger.error("Disconnect error", ex); + } + _connection = null; + } + } + state = SocketState.Disconnected; + return true; + } + + @Override + public boolean send(byte[] data) { + return __writeSocket(data); + } + + private boolean __writeSocket(byte[] buf) { + if (_connection == null || state != SocketState.Connected) { + logger.error("Trying to write to disconnected socket"); + return false; + } else { + try { + OutputStream outStream = _connection.getOutputStream(); + outStream.write(buf); + outStream.flush(); + } catch (Exception exception2) { + logger.error("General error writing to socket", exception2); + handleException(SocketCode.SendError); + return false; + } + } + return true; + } + + private void __read() { + int size = 0; + while (state == SocketState.Connected) { + try { + try { + InputStream inputStream = _connection.getInputStream(); + size = inputStream.read(_byteBuffer); + } catch (Exception ex) { + throw new TSocketException(SocketCode.ExceptionOnReceive); + } + if (size == 0 || size == -1) { +// System.out.println("socket----报错--------111111--------"); + throw new TSocketException(SocketCode.DisconnectByServer); + } + __handleBinaryData(_byteBuffer, size); + + } catch (TSocketException ex3) { + if (state != SocketState.Disconnecting && state.ordinal() > SocketState.Disconnected.ordinal()) { + logger.error("Receiving failed.: ", ex3); + super.handleException(ex3.socketCode); + } + } catch (Exception ex4) { + if (state != SocketState.Disconnecting && state.ordinal() > SocketState.Disconnected.ordinal()) { + logger.error("Receiving Exception: ", ex4); + super.handleException(SocketCode.ExceptionOnReceive); + } + } + } + + this.disconnect(); + } + + private void __handleBinaryData(byte[] buf, int size) throws IOException { + byte[] dst = new byte[size]; + System.arraycopy(buf, 0, dst, 0, size); + ByteArray array = new ByteArray(dst); + _engine._packetHandler.onDataRead(array); + } +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/SystemController.java b/game_web/web_group_robot/src/main/java/com/group/service/io/SystemController.java new file mode 100644 index 0000000..c512ff5 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/SystemController.java @@ -0,0 +1,177 @@ +package com.group.service.io; + +import com.taurus.core.entity.ITObject; +import com.taurus.core.entity.TObject; +import com.group.service.Message; +import com.group.service.MessageResponse; +import com.group.service.NetManager; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * 协议处理控制器 + * + * @author daixiwei daixiwei15@126.com + * + */ +public class SystemController { + public static final String CONNECT_TOKE = "$t"; + public static final String CONNECT_PROT_COMPRESSION = "$pc"; + public static final String REQUEST_CMD = "$c"; + public static final String REQUEST_GID = "$gi"; + public static final String REQUEST_PARM = "$p"; + public static final String REQUEST_RESULT = "$r"; + + /** + * pingpong + */ + public static final int ACTION_PINGPONG = 0; + /** + * 客户端请求 + */ + public static final int ACTION_REQUST_CMD = 1; + /** + * 服务器事件消息 + */ + public static final int ACTION_EVENT_CMD = 2; + + private SocketEngine _engine; + private long _lastTime; + private List _handleList = new ArrayList(); + private int _tempID; + + public SystemController(SocketEngine client) { + _engine = client; + _lastTime = System.currentTimeMillis(); + } + + private int _getValidID() { + return ++_tempID; + } + + + public void handlePacket(Packet packet) { + _lastTime = System.currentTimeMillis(); + switch (packet.actionID) { + case ACTION_PINGPONG: + fnPingPong(packet); + break; + case ACTION_REQUST_CMD: + fnOperationResponse(packet); + break; + case ACTION_EVENT_CMD: + fnOperationEvent(packet); + break; + } + } + + void sendRequest(Message msg) throws IOException { + Packet packet = new Packet(); + packet.actionID = SystemController.ACTION_REQUST_CMD; + ITObject obj = TObject.newInstance(); + obj.putString(SystemController.REQUEST_CMD, msg.command); + int gid = 0; + if (msg.callback != null) { + gid = _getValidID(); + msg.lastTime = System.currentTimeMillis(); + msg.gid = gid; + synchronized (_handleList) { + _handleList.add(msg); + } + } + obj.putInt(SystemController.REQUEST_GID, gid); + obj.putTObject(SystemController.REQUEST_PARM, msg.param); + packet.parameters = obj; + _engine._packetHandler.onDataWrite(packet); + } + + void sendPingPong() throws IOException { + Packet packet = new Packet(); + packet.actionID = SystemController.ACTION_PINGPONG; + packet.parameters = TObject.newInstance(); + _engine._packetHandler.onDataWrite(packet); + } + + private final void fnOperationResponse(final Packet packet) { + final int gid = packet.parameters.getInt(REQUEST_GID); + final int result = packet.parameters.getInt(REQUEST_RESULT); + ITObject tem = null; + if (packet.parameters.containsKey(REQUEST_PARM)) { + tem = packet.parameters.getTObject(REQUEST_PARM); + } + final ITObject param = tem; + _engine.enqueueActionForDispatch(new Runnable() { + @Override + public void run() { + handleOperationResponse(result, gid, param); + } + }); + } + + private void handleOperationResponse(int result, int gid, ITObject param) { + Message msg = null; + int index = 0; + int len = _handleList.size(); + if (gid > 0) { + for (int i = 0; i < len; ++i) { + if (gid == _handleList.get(i).gid) { + msg = _handleList.get(i); + index = i; + break; + } + } + } + + if (msg != null) { + if (msg.callback != null) { + MessageResponse response = new MessageResponse(); + msg.param = param; + response.messageData = msg; + response.returnCode = result; + msg.callback.action(response); + } + synchronized (_handleList) { + _handleList.remove(index); + } + } + } + + private final void fnOperationEvent(Packet packet) { + final String cmd = packet.parameters.getString(REQUEST_CMD); + ITObject tem = null; + if (packet.parameters.containsKey(REQUEST_PARM)) { + tem = packet.parameters.getTObject(REQUEST_PARM); + } + final ITObject param = tem; + _engine.enqueueActionForDispatch(new Runnable() { + @Override + public void run() { + handleEvent(cmd, param); + } + }); + } + + void handleEvent(String cmd, ITObject param) { + Message msg = new Message(); + msg.command = cmd; + msg.param = param; + if (_engine._onEvent != null) + _engine._onEvent.action(msg); + } + + + private final void fnPingPong(Packet packet) { + _engine._lagMonitor.fnPingPong(); + } + + public boolean isTimeOut() { + return (System.currentTimeMillis() - _lastTime) / 1000 > NetManager.TIMEOUT_TIME; + } + + public void refreshTime() { + _lastTime = System.currentTimeMillis(); + } + +} diff --git a/game_web/web_group_robot/src/main/java/com/group/service/io/TSocketException.java b/game_web/web_group_robot/src/main/java/com/group/service/io/TSocketException.java new file mode 100644 index 0000000..3875a23 --- /dev/null +++ b/game_web/web_group_robot/src/main/java/com/group/service/io/TSocketException.java @@ -0,0 +1,23 @@ +package com.group.service.io; + +import com.group.service.SocketCode; + +/** + * 缃戠粶閫氫俊寮傚父 + * @author daixiwei daixiwei15@126.com + * + */ +public class TSocketException extends Exception{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + public SocketCode socketCode; + + public TSocketException(SocketCode code) { + socketCode = code; + } + +} diff --git a/game_web/web_group_robot/src/main/webapp/WEB-INF/web.xml b/game_web/web_group_robot/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..a71270c --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,19 @@ + + + + + taurus-web + com.taurus.web.WebFilter + + main + com.group.MainServer + + + + + taurus-web + /* + + diff --git a/game_web/web_group_robot/src/main/webapp/config/bank_hp.lua b/game_web/web_group_robot/src/main/webapp/config/bank_hp.lua new file mode 100644 index 0000000..d3a02ce --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/config/bank_hp.lua @@ -0,0 +1,19 @@ +local tag_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local bank_hp = tonumber(redis.call('hget', KEYS[2],KEYS[3])) +bank_hp = not bank_hp and 0 or bank_hp +local hp = tonumber(ARGV[1]) +local opt = tonumber(ARGV[2]) +if opt==0 then + if bank_hp < hp then + return 3 + end + bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],-hp) + tag_hp = redis.call('hincrBy',KEYS[1],'hp',hp) +else + if tag_hp < hp then + return 4 + end + bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],hp) + tag_hp = redis.call('hincrBy',KEYS[1],'hp',-hp) +end +return {tag_hp,bank_hp} \ No newline at end of file diff --git a/game_web/web_group_robot/src/main/webapp/config/log4j.properties b/game_web/web_group_robot/src/main/webapp/config/log4j.properties new file mode 100644 index 0000000..6786dba --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/config/log4j.properties @@ -0,0 +1,20 @@ + +log4j.rootLogger = INFO,consoleAppender,fileAppender + +# ConsoleAppender +log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender +log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.consoleAppender.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%t] %c{2} %3x - %m%n + + +# Regular FileAppender +log4j.appender.fileAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.fileAppender.File=${WORKDIR}/logs/web_main.log +log4j.appender.fileAppender.layout.ConversionPattern=%d{dd MMM yyyy | HH:mm:ss,SSS} | %-5p | %t | %c{3} | %3x | %m%n +log4j.appender.fileAppender.Encoding=UTF-8 +log4j.appender.fileAppender.DatePattern='.'yyyy-MM-dd +log4j.appender.dailyFile.Append=true + +# The file is rolled over very day +log4j.appender.fileAppender.DatePattern ='.'yyyy-MM-dd \ No newline at end of file diff --git a/game_web/web_group_robot/src/main/webapp/config/mgr.lua b/game_web/web_group_robot/src/main/webapp/config/mgr.lua new file mode 100644 index 0000000..e3e9aae --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/config/mgr.lua @@ -0,0 +1,25 @@ +-- redis.call('select',0) +local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp')) + +local ulev = tonumber(ARGV[2]) +local hp = tonumber(ARGV[1]) +if ulev == 3 or ulev == 2 then + if KEYS[1] ~= KEYS[2] and hp > 0 and mgr_hp < hp then + return 3 + else + if hp < 0 and tag_hp < math.abs(hp) then + return 4 + end + mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp) + tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp) + end +else + tag_hp = tag_hp + hp + if tag_hp < 0 then + return 4 + else + redis.call('hincrBy',KEYS[2],'hp',hp) + end +end +return {mgr_hp,tag_hp} \ No newline at end of file diff --git a/game_web/web_group_robot/src/main/webapp/config/take_hp.lua b/game_web/web_group_robot/src/main/webapp/config/take_hp.lua new file mode 100644 index 0000000..83d79a0 --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/config/take_hp.lua @@ -0,0 +1,10 @@ +local reward_hp = tonumber(redis.call('get', KEYS[1])) +local hp = tonumber(ARGV[1]) +local tag_hp = 0 +if hp > 0 and reward_hp < hp then + return 3 +else + reward_hp = redis.call('incrBy',KEYS[1],-hp) + tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp) +end +return {reward_hp,tag_hp} \ No newline at end of file diff --git a/game_web/web_group_robot/src/main/webapp/config/taurus-core.xml b/game_web/web_group_robot/src/main/webapp/config/taurus-core.xml new file mode 100644 index 0000000..1fa76ba --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/config/taurus-core.xml @@ -0,0 +1,101 @@ + + + log4j.properties + + + database + com.taurus.core.plugin.database.DataBasePlugin + + + + 100 + + 10 + + 180000 + + select 1 + + 10000 + + 60000 + + + + false + true + utf-8 + + UTC + + true + + 250 + + 2048 + + + + + + db1 + com.mysql.cj.jdbc.Driver + jdbc:mysql://47.109.55.7:8060/wb_game + root + 6KYnXJjGhxNceF8e + + + + + + redis + com.taurus.core.plugin.redis.RedisPlugin + + + + 80 + + 20 + + 5 + + -1 + + true + + true + + true + + 100 + + 60000 + + 30000 + + 1800000 + + true + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/src/main/webapp/config/trade.lua b/game_web/web_group_robot/src/main/webapp/config/trade.lua new file mode 100644 index 0000000..c03a438 --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/config/trade.lua @@ -0,0 +1,12 @@ +local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp')) +mgr_hp = not mgr_hp and 0 or mgr_hp +tag_hp = not tag_hp and 0 or tag_hp +local hp = tonumber(ARGV[1]) +if hp > 0 and mgr_hp pid = 11 +05 二月 2026 | 06:43:23,750 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:382706 player:[828730] fake_json: +05 二月 2026 | 06:43:24,352 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:242667 player:[907904] fake_json: +05 二月 2026 | 06:43:25,197 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:934148 player:[912807] fake_json: +05 二月 2026 | 06:43:26,353 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:542964 player:[504700] fake_json: +05 二月 2026 | 06:43:28,100 | INFO | tstse | service.io.SocketEngine | | status : Connect +05 二月 2026 | 06:43:28,140 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:119304] time:5655ms +05 二月 2026 | 06:43:34,360 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:182291 player:[638865] fake_json: +05 二月 2026 | 06:43:35,582 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdateRobotRoomJob | | del 空 robot room:440325 player:[950058] fake_json: +05 二月 2026 | 06:43:42,951 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:225620 player:[152687] fake_json: +05 二月 2026 | 06:43:43,943 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:761790 player:[199211] fake_json: +05 二月 2026 | 06:43:44,561 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:102243 player:[154065] fake_json: +05 二月 2026 | 06:43:45,511 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:778826 player:[839344] fake_json: +05 二月 2026 | 06:43:46,958 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:278736 player:[274424] fake_json: +05 二月 2026 | 06:43:47,911 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:137829 player:[503059] fake_json: +05 二月 2026 | 06:43:56,030 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:288014 player:[828730] fake_json: +05 二月 2026 | 06:43:56,914 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdateRobotRoomJob | | del 空 robot room:302673 player:[907904] fake_json: +05 二月 2026 | 06:44:18,547 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:511753 player:[267731] fake_json: +05 二月 2026 | 06:44:19,388 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:897022 player:[504700] fake_json: +05 二月 2026 | 06:44:20,307 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:403010 player:[950058] fake_json: +05 二月 2026 | 06:44:21,292 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:890799 player:[199211] fake_json: +05 二月 2026 | 06:44:22,688 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:596890 player:[839344] fake_json: +05 二月 2026 | 06:44:23,508 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:579773 player:[598580] fake_json: +05 二月 2026 | 06:44:31,502 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:142447 player:[461790] fake_json: +05 二月 2026 | 06:44:39,976 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdateRobotRoomJob | | del 空 robot room:562438 player:[503059] fake_json: diff --git a/game_web/web_group_robot/src/main/webapp/logs/web_main.log.2026-02-02 b/game_web/web_group_robot/src/main/webapp/logs/web_main.log.2026-02-02 new file mode 100644 index 0000000..b60ade4 --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/logs/web_main.log.2026-02-02 @@ -0,0 +1,21 @@ +02 二月 2026 | 20:18:48,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +02 二月 2026 | 20:18:48,509 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +02 二月 2026 | 20:18:59,004 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 423613 +02 二月 2026 | 20:19:00,476 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:2030ms +02 二月 2026 | 20:19:03,346 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1565ms +02 二月 2026 | 20:20:27,855 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1887ms +02 二月 2026 | 20:20:52,593 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 423613 +02 二月 2026 | 20:20:53,600 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1450ms +02 二月 2026 | 20:20:56,259 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1680ms +02 二月 2026 | 20:21:10,659 | INFO | qtp391618063-69 | group.controller.GroupController | | jefe_test: 423613 +02 二月 2026 | 20:21:12,068 | INFO | qtp391618063-69 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1869ms +02 二月 2026 | 20:21:15,335 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1619ms +02 二月 2026 | 20:21:40,663 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +02 二月 2026 | 20:21:40,702 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +02 二月 2026 | 20:21:51,048 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:2093ms +02 二月 2026 | 20:22:44,947 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 423613 +02 二月 2026 | 20:22:46,082 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1654ms +02 二月 2026 | 20:22:48,345 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1588ms +02 二月 2026 | 20:23:31,313 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_partner_data[{user}:423613] time:2348ms +02 二月 2026 | 20:23:39,990 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_my_members[{user}:423613] time:41885ms +02 二月 2026 | 20:23:55,533 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_my_members[{user}:423613] time:41942ms diff --git a/game_web/web_group_robot/src/main/webapp/logs/web_main.log.2026-02-04 b/game_web/web_group_robot/src/main/webapp/logs/web_main.log.2026-02-04 new file mode 100644 index 0000000..4110c94 --- /dev/null +++ b/game_web/web_group_robot/src/main/webapp/logs/web_main.log.2026-02-04 @@ -0,0 +1,722 @@ +04 二月 2026 | 14:02:16,795 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:02:16,871 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:02:36,494 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:327197 player:[520191,733468] fake_json:1 +04 二月 2026 | 14:02:53,410 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 14:02:53,782 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:592ms +04 二月 2026 | 14:02:55,261 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:564ms +04 二月 2026 | 14:02:58,063 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:03:00,179 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2491ms +04 二月 2026 | 14:05:22,235 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:689567 player:[870909,285195] fake_json:1 +04 二月 2026 | 14:06:08,935 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:340133 player:[990477,148839] fake_json:1 +04 二月 2026 | 14:08:46,314 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:135569 player:[108473,992179] fake_json:1 +04 二月 2026 | 14:09:21,015 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:780903 player:[658983,223369] fake_json:1 +04 二月 2026 | 14:11:41,353 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:783725 player:[395743,608562] fake_json:1 +04 二月 2026 | 14:12:50,865 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:672847 player:[505572,446021] fake_json:1 +04 二月 2026 | 14:13:40,884 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:347815 player:[277652,455295] fake_json:1 +04 二月 2026 | 14:14:40,715 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:459447 player:[232304,893772] fake_json:1 +04 二月 2026 | 14:16:05,995 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:16:06,042 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:16:11,683 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:449672 player:[316412,950997] fake_json:1 +04 二月 2026 | 14:17:24,569 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:17:24,615 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:17:30,877 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:503519 player:[516400,657879] fake_json:1 +04 二月 2026 | 14:18:01,314 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1926ms +04 二月 2026 | 14:18:13,100 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:18:13,151 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:18:24,797 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1644ms +04 二月 2026 | 14:18:36,459 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1603ms +04 二月 2026 | 14:18:42,069 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:18:42,147 | ERROR | mpnet connect thread | service.io.ISocket | | Connection error +java.net.SocketException: Socket operation on nonsocket: configureBlocking + at java.net.DualStackPlainSocketImpl.configureBlocking(Native Method) + at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:84) + at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) + at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) + at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) + at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) + at java.net.Socket.connect(Socket.java:606) + at com.group.service.io.SocketTcp.connectThread(SocketTcp.java:53) + at com.group.service.io.SocketTcp.access$000(SocketTcp.java:19) + at com.group.service.io.SocketTcp$1.run(SocketTcp.java:39) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:18:43,487 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2110ms +04 二月 2026 | 14:19:16,244 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:323634 player:[768647,268775] fake_json:1 +04 二月 2026 | 14:19:40,971 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:911667 player:[161367,296214] fake_json:1 +04 二月 2026 | 14:21:15,767 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:266678 player:[609966,945218] fake_json:1 +04 二月 2026 | 14:21:19,485 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:21:19,532 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:21:27,883 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:21:29,501 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2010ms +04 二月 2026 | 14:22:17,968 | ERROR | Thread-31 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:22:58,394 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:22:58,440 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:23:52,922 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:23:52,970 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:23:55,178 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:23:59,097 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4447ms +04 二月 2026 | 14:24:06,046 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:859644 player:[362003,977049] fake_json:1 +04 二月 2026 | 14:24:26,424 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:24:29,831 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3701ms +04 二月 2026 | 14:24:35,853 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:744437 player:[870909,157747] fake_json:1 +04 二月 2026 | 14:26:28,897 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:26:28,954 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:26:50,031 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:26:50,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:26:53,790 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:26:57,610 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4168ms +04 二月 2026 | 14:27:15,907 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:309463 player:[914143,198184] fake_json:1 +04 二月 2026 | 14:27:25,911 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:611363 player:[976274,658983] fake_json:1 +04 二月 2026 | 14:27:56,632 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:27:56,680 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:28:12,363 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:28:16,139 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4124ms +04 二月 2026 | 14:28:46,192 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:490194 player:[168199,705790] fake_json:1 +04 二月 2026 | 14:29:53,423 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:29:53,473 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:29:58,153 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:30:00,291 | ERROR | Thread-30 | group.service.HttpClient | | +java.net.MalformedURLException: no protocol: 192.168.0.32:8701225 + at java.net.URL.(URL.java:610) + at java.net.URL.(URL.java:507) + at java.net.URL.(URL.java:456) + at com.group.service.HttpClient.__requestAsync(HttpClient.java:79) + at com.group.service.HttpClient.__sendMsg(HttpClient.java:69) + at com.group.service.HttpClient.access$000(HttpClient.java:24) + at com.group.service.HttpClient$2.run(HttpClient.java:188) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:30:01,934 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4393ms +04 二月 2026 | 14:30:21,055 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:594197 player:[301188,957316] fake_json:1 +04 二月 2026 | 14:30:36,895 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:30:36,942 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:30:43,221 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:30:50,264 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7463ms +04 二月 2026 | 14:31:30,985 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:789114 player:[232304,689714] fake_json:1 +04 二月 2026 | 14:31:37,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:31:37,625 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:33:25,595 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:33:31,811 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6548ms +04 二月 2026 | 14:37:45,470 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:37:45,516 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:37:50,024 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:37:56,823 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7230ms +04 二月 2026 | 14:38:11,950 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:38:11,991 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:38:16,372 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:38:17,961 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2145ms +04 二月 2026 | 14:38:37,794 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:38:37,843 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:38:40,969 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:38:42,312 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1797ms +04 二月 2026 | 14:40:04,825 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:40:04,873 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:40:10,944 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:40:12,679 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2078ms +04 二月 2026 | 14:40:49,971 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:40:50,018 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:40:54,743 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:40:55,015 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:40:56,402 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2063ms +04 二月 2026 | 14:41:25,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:41:25,621 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:41:34,091 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:41:34,366 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:41:36,048 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2456ms +04 二月 2026 | 14:41:53,655 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:41:53,696 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:42:00,246 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:42:00,477 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:42:01,767 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1907ms +04 二月 2026 | 14:42:33,541 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:42:33,586 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:42:36,631 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:42:36,900 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:42:38,256 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1989ms +04 二月 2026 | 14:43:11,250 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:43:11,293 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:43:15,311 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:43:15,516 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:43:17,788 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2934ms +04 二月 2026 | 14:44:34,514 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:44:34,558 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:44:43,945 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:44:44,197 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:44:46,460 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2840ms +04 二月 2026 | 14:47:44,665 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:47:44,749 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 14:47:57,185 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:47:57,368 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:47:59,739 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2920ms +04 二月 2026 | 14:48:21,196 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:326ms +04 二月 2026 | 14:48:22,835 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:48:22,953 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:48:25,227 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2807ms +04 二月 2026 | 14:48:43,055 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:48:43,055 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 14:49:51,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:49:51,422 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:49:55,976 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:49:56,169 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:49:58,527 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2856ms +04 二月 2026 | 14:51:30,625 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:51:30,669 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:51:36,495 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:51:36,730 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:51:39,127 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2969ms +04 二月 2026 | 14:51:51,896 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:51:51,939 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:51:53,986 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:51:54,273 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:51:56,715 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3083ms +04 二月 2026 | 14:52:26,191 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:52:26,235 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:52:32,446 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:52:32,663 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:52:35,266 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3173ms +04 二月 2026 | 14:52:50,754 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:52:51,050 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:52:53,185 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2741ms +04 二月 2026 | 14:52:57,065 | INFO | qtp391618063-71 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:52:57,271 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 14:52:59,715 | INFO | qtp391618063-71 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3094ms +04 二月 2026 | 14:56:48,302 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:56:48,351 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:56:49,317 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:56:50,885 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2008ms +04 二月 2026 | 14:57:18,494 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:57:18,535 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:57:22,556 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:57:23,981 | ERROR | qtp391618063-67 | taurus.web.WebFilter | | +java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer + at com.taurus.core.entity.TObject.getInt(TObject.java:130) + at com.group.service.GroupRoomService.matchRoom(GroupRoomService.java:1074) + at com.group.controller.GroupRoomController.matchRoom(GroupRoomController.java:32) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at com.taurus.web.TWebServer.handle(TWebServer.java:166) + at com.taurus.web.WebFilter.doFilter(WebFilter.java:58) + at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1487) + at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) + at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) + at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) + at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) + at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) + at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427) + at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) + at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) + at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) + at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) + at org.eclipse.jetty.server.Server.handle(Server.java:370) + at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) + at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984) + at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045) + at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) + at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236) + at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) + at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696) + at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53) + at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) + at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 14:57:23,984 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1725ms +04 二月 2026 | 14:57:46,909 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:57:46,952 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 14:57:48,458 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 14:57:49,489 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1452ms +04 二月 2026 | 14:58:56,219 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 14:58:56,261 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:01:46,558 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:01:46,604 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:25:50,587 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:25:50,649 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:25:59,065 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:6011ms +04 二月 2026 | 15:26:20,493 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:26:23,973 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4180ms +04 二月 2026 | 15:26:23,981 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:26:43,640 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:26:46,841 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3754ms +04 二月 2026 | 15:26:46,877 | INFO | games | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:27:05,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:27:05,503 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:27:12,010 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:27:16,423 | INFO | games2 | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:27:16,432 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:5402ms +04 二月 2026 | 15:27:27,197 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 15:27:28,246 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:1314ms +04 二月 2026 | 15:27:28,805 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:1123ms +04 二月 2026 | 15:27:33,399 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:3623ms +04 二月 2026 | 15:28:24,197 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:28:24,238 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:28:29,424 | INFO | qtp391618063-59 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:28:33,271 | INFO | games2 | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:28:33,414 | INFO | qtp391618063-59 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4824ms +04 二月 2026 | 15:28:49,649 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:28:49,690 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:29:09,405 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:29:09,450 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:29:12,556 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:29:15,810 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:29:17,845 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6034ms +04 二月 2026 | 15:30:29,984 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:30:34,002 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:30:35,991 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:8477ms +04 二月 2026 | 15:32:23,530 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:32:23,530 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:33:26,673 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:33:31,203 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:33:33,175 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7215ms +04 二月 2026 | 15:34:23,289 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 15:34:23,331 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 15:34:34,777 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:34:39,613 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:34:41,647 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7796ms +04 二月 2026 | 15:37:11,786 | ERROR | Thread-29 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:37:11,858 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:37:32,358 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:37:37,041 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:37:39,006 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7604ms +04 二月 2026 | 15:38:13,290 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:38:17,915 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:38:20,174 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7592ms +04 二月 2026 | 15:38:21,374 | ERROR | Thread-39 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:38:21,374 | ERROR | Thread-35 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:38:40,019 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:38:43,954 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:38:45,982 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6861ms +04 二月 2026 | 15:42:35,519 | ERROR | Thread-43 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:42:35,539 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:42:53,549 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:42:57,450 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:42:59,447 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7086ms +04 二月 2026 | 15:43:32,392 | ERROR | Thread-51 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:43:32,417 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:43:33,381 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:43:38,078 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:43:39,263 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6690ms +04 二月 2026 | 15:44:37,280 | ERROR | Thread-56 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:44:37,284 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:44:53,697 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:44:57,396 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:44:59,499 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6511ms +04 二月 2026 | 15:45:34,664 | ERROR | Thread-61 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:45:34,676 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:45:45,855 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:45:49,621 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:45:51,697 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6654ms +04 二月 2026 | 15:49:16,689 | ERROR | Thread-66 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:49:16,701 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:49:20,659 | INFO | qtp391618063-124 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:49:24,439 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:49:26,423 | INFO | qtp391618063-124 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6362ms +04 二月 2026 | 15:51:45,966 | INFO | qtp391618063-134 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:51:50,802 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:51:52,722 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7509ms +04 二月 2026 | 15:52:16,160 | INFO | qtp391618063-134 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 15:52:17,103 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1555ms +04 二月 2026 | 15:52:22,556 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:561ms +04 二月 2026 | 15:52:52,871 | ERROR | Thread-80 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:52:52,871 | ERROR | Thread-73 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:53:01,624 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 15:53:01,955 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:582ms +04 二月 2026 | 15:53:02,420 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:487ms +04 二月 2026 | 15:53:03,682 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:53:05,501 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:53:07,479 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4178ms +04 二月 2026 | 15:53:23,466 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 15:53:24,037 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:793ms +04 二月 2026 | 15:53:24,532 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:493ms +04 二月 2026 | 15:53:27,905 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 15:53:29,579 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 15:53:31,614 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3979ms +04 二月 2026 | 15:54:08,273 | ERROR | Thread-90 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:54:08,273 | ERROR | Thread-85 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 16:01:37,449 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 16:01:37,491 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 16:01:46,031 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:01:46,537 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:647ms +04 二月 2026 | 16:01:47,607 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:463ms +04 二月 2026 | 16:01:50,455 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:379ms +04 二月 2026 | 16:01:53,487 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1054ms +04 二月 2026 | 16:02:01,417 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:02:01,734 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:649ms +04 二月 2026 | 16:02:02,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:02:03,427 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:862ms +04 二月 2026 | 16:02:04,375 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:641ms +04 二月 2026 | 16:02:16,575 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:02:16,897 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:520ms +04 二月 2026 | 16:02:17,492 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:545ms +04 二月 2026 | 16:02:20,677 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:338ms +04 二月 2026 | 16:02:23,547 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:02:25,185 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:02:26,271 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:02:26,630 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:641ms +04 二月 2026 | 16:02:27,232 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:609ms +04 二月 2026 | 16:02:27,306 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4192ms +04 二月 2026 | 16:03:24,217 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:03:24,601 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:653ms +04 二月 2026 | 16:03:24,932 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:03:25,286 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:479ms +04 二月 2026 | 16:03:26,515 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:551ms +04 二月 2026 | 16:03:31,507 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:367ms +04 二月 2026 | 16:03:37,117 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:03:37,537 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:580ms +04 二月 2026 | 16:03:37,998 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:03:38,451 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:587ms +04 二月 2026 | 16:03:39,721 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:495ms +04 二月 2026 | 16:03:45,974 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:377360 player:[456982,141106] fake_json:1 +04 二月 2026 | 16:04:05,338 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 16:04:05,391 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 16:04:08,687 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:04:10,863 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:04:12,988 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4795ms +04 二月 2026 | 16:04:16,345 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:648ms +04 二月 2026 | 16:04:22,074 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:04:22,132 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 16:04:28,873 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:04:29,261 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:623ms +04 二月 2026 | 16:04:31,394 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:04:33,106 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:04:35,188 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4228ms +04 二月 2026 | 16:04:42,316 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:04:43,136 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1221ms +04 二月 2026 | 16:04:43,737 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:1113ms +04 二月 2026 | 16:04:57,253 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:04:57,552 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:538ms +04 二月 2026 | 16:04:58,471 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:494ms +04 二月 2026 | 16:05:00,314 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:05:00,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:05:00,769 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:805ms +04 二月 2026 | 16:05:01,106 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:500ms +04 二月 2026 | 16:05:21,168 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:500433 player:[503162,658983] fake_json:1 +04 二月 2026 | 16:05:51,193 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:376250 player:[296214,457322] fake_json:1 +04 二月 2026 | 16:06:27,138 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:06:27,151 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 16:07:22,616 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 16:07:22,663 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 16:07:29,364 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:07:31,479 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:07:33,507 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4640ms +04 二月 2026 | 16:08:02,000 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:616587 player:[834603,923379] fake_json:1 +04 二月 2026 | 16:08:26,452 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:224143 player:[223369,152827] fake_json:1 +04 二月 2026 | 16:09:36,205 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:882695 player:[745978,447305] fake_json:1 +04 二月 2026 | 16:09:45,998 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:09:46,542 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:726ms +04 二月 2026 | 16:10:14,431 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:10:14,893 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:813ms +04 二月 2026 | 16:10:57,827 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:126) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:10:57,876 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive +04 二月 2026 | 16:11:21,577 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:147802 player:[857709,689714] fake_json:1 +04 二月 2026 | 16:11:41,014 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:165651 player:[268301,608562] fake_json:1 +04 二月 2026 | 16:13:15,217 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555 +04 二月 2026 | 16:13:15,910 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:850ms +04 二月 2026 | 16:13:18,098 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:472ms +04 二月 2026 | 16:13:20,968 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555 +04 二月 2026 | 16:13:21,528 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:693ms +04 二月 2026 | 16:13:35,618 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 16:13:36,431 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:976ms +04 二月 2026 | 16:13:37,882 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:571ms +04 二月 2026 | 16:13:40,953 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:410ms +04 二月 2026 | 16:13:49,204 | INFO | qtp391618063-85 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:13:50,755 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:13:50,985 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:280253 player:[635285,923379] fake_json:1 +04 二月 2026 | 16:13:52,767 | INFO | qtp391618063-85 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3965ms +04 二月 2026 | 16:14:03,848 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:750ms +04 二月 2026 | 16:14:05,254 | INFO | qtp391618063-86 | group.controller.GroupController | | jefe_test: 102555 +04 二月 2026 | 16:14:05,728 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:653ms +04 二月 2026 | 16:14:10,836 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:14:12,682 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:14:14,745 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:4168ms +04 二月 2026 | 16:15:16,010 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:860116 player:[751231,427087] fake_json:1 +04 二月 2026 | 16:15:40,120 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 16:15:40,165 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 16:16:01,506 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:383709 player:[977049,137207] fake_json:1 +04 二月 2026 | 16:16:04,352 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1942ms +04 二月 2026 | 16:16:17,091 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1448ms +04 二月 2026 | 16:16:21,085 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:16:22,832 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:16:24,790 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3957ms +04 二月 2026 | 16:18:41,045 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:894419 player:[624684,232304] fake_json:1 +04 二月 2026 | 16:18:44,517 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057 +04 二月 2026 | 16:18:44,978 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:669ms +04 二月 2026 | 16:18:46,195 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:525057] time:514ms +04 二月 2026 | 16:18:47,452 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057 +04 二月 2026 | 16:18:47,829 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:538ms +04 二月 2026 | 16:19:02,221 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 177475 +04 二月 2026 | 16:19:02,566 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:177475] time:532ms +04 二月 2026 | 16:19:03,858 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:177475] time:518ms +04 二月 2026 | 16:19:05,761 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:19:08,164 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:19:10,217 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:4696ms +04 二月 2026 | 16:19:40,542 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 16:19:41,933 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 16:19:44,154 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:3868ms +04 二月 2026 | 16:19:46,392 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:113345 player:[380267,870909] fake_json:1 +04 二月 2026 | 16:21:15,828 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:755135 player:[992179,657879] fake_json:1 +04 二月 2026 | 16:21:25,632 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:21:25,714 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer +04 二月 2026 | 16:22:11,302 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:669919 player:[733468,560202] fake_json:1 +04 二月 2026 | 16:23:35,957 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:109294 player:[977049,971057] fake_json:1 +04 二月 2026 | 16:24:15,714 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:24:15,786 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer +04 二月 2026 | 16:24:36,017 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:728457 player:[426015,950997] fake_json:1 +04 二月 2026 | 16:24:45,763 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 16:24:45,774 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer +04 二月 2026 | 16:26:15,848 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:751474 player:[176545,909321] fake_json:1 +04 二月 2026 | 16:26:45,840 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:580977 player:[772988,380267] fake_json:1 +04 二月 2026 | 16:28:11,130 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:742665 player:[624684,287696] fake_json:1 +04 二月 2026 | 16:28:20,853 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:965585 player:[807782,153276] fake_json:1 +04 二月 2026 | 16:30:26,512 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:417703 player:[446881,745978] fake_json:1 +04 二月 2026 | 16:35:18,858 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1 +04 二月 2026 | 16:35:18,928 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1 +04 二月 2026 | 16:35:25,913 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:787124 player:[268301,426015] fake_json:1 +04 二月 2026 | 16:37:16,447 | INFO | qtp391618063-130 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 16:37:16,829 | INFO | qtp391618063-130 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:761ms +04 二月 2026 | 16:37:17,400 | INFO | qtp391618063-131 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:460ms +04 二月 2026 | 16:37:18,220 | INFO | qtp391618063-120 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1273ms +04 二月 2026 | 16:38:16,070 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:578016 player:[997151,768647] fake_json:1 +04 二月 2026 | 16:38:31,060 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:133397 player:[117543,893772] fake_json:1 +04 二月 2026 | 16:40:11,144 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:372933 player:[325465,193548] fake_json:1 +04 二月 2026 | 16:41:15,999 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:142252 player:[298423,990477] fake_json:1 +04 二月 2026 | 16:42:06,416 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:451170 player:[559763,265830] fake_json:1 +04 二月 2026 | 16:43:46,318 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:400324 player:[693996,362003] fake_json:1 +04 二月 2026 | 16:44:11,453 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:992582 player:[826627,296214] fake_json:1 +04 二月 2026 | 16:46:05,988 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:940744 player:[774088,378632] fake_json:1 +04 二月 2026 | 16:47:46,149 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:740851 player:[265830,198184] fake_json:1 +04 二月 2026 | 17:47:21,143 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1 +04 二月 2026 | 17:47:21,726 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1 +04 二月 2026 | 17:47:30,880 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1 +04 二月 2026 | 17:47:31,682 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1 +04 二月 2026 | 17:48:51,277 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:840244 player:[161367,877472] fake_json:1 +04 二月 2026 | 17:49:15,965 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330433 player:[455295,771035] fake_json:1 +04 二月 2026 | 17:51:40,823 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:786319 player:[805963,582578] fake_json:1 +04 二月 2026 | 17:52:40,881 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:795690 player:[132277,733468] fake_json:1 +04 二月 2026 | 17:54:30,946 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:487446 player:[394446,772988] fake_json:1 +04 二月 2026 | 17:55:11,208 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:569922 player:[755783,893772] fake_json:1 +04 二月 2026 | 17:57:10,931 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:849837 player:[291453,987020] fake_json:1 +04 二月 2026 | 17:58:00,925 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:846448 player:[461205,909321] fake_json:1 +04 二月 2026 | 17:58:18,146 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 17:58:18,189 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 17:59:35,879 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 17:59:35,923 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:18:06,038 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:18:06,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:18:33,917 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:18:33,957 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:19:52,101 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:19:52,140 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:19:57,203 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:944036 player:[198184,991538] fake_json:1 +04 二月 2026 | 18:20:11,158 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:20:11,199 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:20:16,326 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:754798 player:[285195,152827] fake_json:1 +04 二月 2026 | 18:21:29,490 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:21:29,536 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:21:37,000 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 18:21:37,519 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:833ms +04 二月 2026 | 18:21:38,727 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:425ms +04 二月 2026 | 18:21:41,511 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 18:21:43,526 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2377ms +04 二月 2026 | 18:21:43,642 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 18:22:30,000 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:22:30,039 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:22:43,143 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777 +04 二月 2026 | 18:22:43,526 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:540ms +04 二月 2026 | 18:22:44,751 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:529ms +04 二月 2026 | 18:22:51,739 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2976ms +04 二月 2026 | 18:22:57,859 | INFO | qtp391618063-58 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:392ms +04 二月 2026 | 18:22:59,623 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:508ms +04 二月 2026 | 18:23:01,381 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 18:23:03,479 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2611ms +04 二月 2026 | 18:24:41,930 | INFO | qtp391618063-70 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:510ms +04 二月 2026 | 18:24:45,877 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2077ms +04 二月 2026 | 18:25:28,109 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 18:25:28,154 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 18:25:32,107 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 18:25:33,953 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2354ms +04 二月 2026 | 18:25:34,116 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 20:14:55,906 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 20:14:55,985 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 20:16:12,778 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 20:16:13,139 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:494ms +04 二月 2026 | 20:16:14,678 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:529ms +04 二月 2026 | 20:16:28,771 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:378ms +04 二月 2026 | 20:16:32,422 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 20:16:33,969 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1830ms +04 二月 2026 | 20:17:16,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 20:17:16,464 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 20:17:26,220 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 20:17:27,241 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1328ms +04 二月 2026 | 20:19:18,588 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:256ms +04 二月 2026 | 20:19:21,209 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 20:19:22,123 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1320ms +04 二月 2026 | 20:19:22,346 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 20:24:25,725 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.: +com.group.service.io.TSocketException + at com.group.service.io.SocketTcp.__read(SocketTcp.java:130) + at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19) + at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70) + at java.lang.Thread.run(Thread.java:750) +04 二月 2026 | 20:24:25,765 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer +04 二月 2026 | 20:29:07,054 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 112233 +04 二月 2026 | 20:29:07,410 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:496ms +04 二月 2026 | 20:29:16,413 | INFO | qtp391618063-89 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:362ms +04 二月 2026 | 20:29:21,849 | INFO | qtp391618063-78 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10 +04 二月 2026 | 20:29:23,099 | INFO | qtp391618063-78 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1436ms +04 二月 2026 | 20:29:23,187 | INFO | tstse | service.io.SocketEngine | | status : Connect +04 二月 2026 | 21:03:09,855 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:03:09,904 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:04:28,839 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:04:28,892 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:04:53,666 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:04:53,715 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:05:24,711 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:05:24,764 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:07:16,387 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:07:16,436 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:07:30,534 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:07:30,579 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:08:24,578 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:08:24,623 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:09:04,382 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:09:04,430 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:10:18,221 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:10:18,268 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:11:32,527 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:11:32,569 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:29:19,947 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:29:19,993 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:41:20,877 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:41:20,926 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! +04 二月 2026 | 21:46:53,882 | INFO | main | core.plugin.PluginService | | plugin[database] load success! +04 二月 2026 | 21:46:53,927 | INFO | main | core.plugin.PluginService | | plugin[redis] load success! diff --git a/game_web/web_group_robot/src/test/java/etty-contexts.xml b/game_web/web_group_robot/src/test/java/etty-contexts.xml new file mode 100644 index 0000000..e8c1814 --- /dev/null +++ b/game_web/web_group_robot/src/test/java/etty-contexts.xml @@ -0,0 +1,9 @@ + + + + + org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern + .*/.*jsp-api-[^/]\.jar$|./.*jsp-[^/]\.jar$|./.*taglibs[^/]*\.jar$ + + + \ No newline at end of file diff --git a/game_web/web_group_robot/src/test/java/web_group/DataClearUtils.java b/game_web/web_group_robot/src/test/java/web_group/DataClearUtils.java new file mode 100644 index 0000000..f0be96e --- /dev/null +++ b/game_web/web_group_robot/src/test/java/web_group/DataClearUtils.java @@ -0,0 +1,146 @@ +package web_group; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import redis.clients.jedis.Jedis; + +/** + * clear redis data + * @author yjl 2020-06-05 + * @version 1.0.0 + * */ +public class DataClearUtils { + + private void clear_data() { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Map map = new HashMap<>(); + map.put("force_ver", "1"); + map.put("ver", "1"); + Jedis jedis = new Jedis("127.0.0.1", 6380); + jedis.auth("123456"); + //选择库 + jedis.select(5); + Set keys = jedis.keys("*"); + int i = 0; + for(String str : keys) { + long stime = Long.valueOf(str.substring(15,str.length())); + if(stime < 1591286400) { + jedis.del(str); + i++; + System.out.println(i); + } + + } + System.out.println(i); + + jedis.close(); + } + + private void clear_data_thread() { +// Thread th = new Thread(new clear_data_t(1592323200, 1592668800,1)); +// th.start(); +// +// Thread th1 = new Thread(new clear_data_t(1591977600, 1592323200,2)); +// th1.start(); +// +// Thread th2 = new Thread(new clear_data_t(1591718400, 1591977600,3)); +// th2.start(); +// + Thread th3 = new Thread(new clear_data_test(1590940800, 1593964800,4)); + th3.start(); + +// Thread th4 = new Thread(new clear_data_t(1588262400, 1590336000,5)); +// th4.start(); +//// +// Thread th5 = new Thread(new clear_data_t(1588262400, 1589904000,6)); +// th5.start(); + } + class clear_data_test implements Runnable{ + long start = 0; + long end = 0; + int num = 0; + + public clear_data_test(long start,long end,int num) { + this.start = start; + this.end = end; + this.num = num; + } + @Override + public void run() { + // TODO Auto-generated method stub + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Map map = new HashMap<>(); + map.put("force_ver", "1"); + map.put("ver", "1"); + Jedis jedis = new Jedis("127.0.0.1", 6379); + jedis.auth("123456"); + //选择库 + jedis.select(0); + Set keys = jedis.keys("*"); + int i = 0; + for(String str : keys) { + long stime = Long.valueOf(str.substring(15,str.length())); + if(stime < end && stime > start) { + jedis.del(str); + i++; + System.out.println("#"+num +"Thread"+i); + } + + } + System.out.println(i); + + jedis.close(); + } + + } + + // + + public static void main(String[] args) { + DataClearUtils initDataUtils = new DataClearUtils(); + initDataUtils.clear_data_thread(); + } + + class clear_data_t implements Runnable{ + long start = 0; + long end = 0; + int num = 0; + + public clear_data_t(long start,long end,int num) { + this.start = start; + this.end = end; + this.num = num; + } + @Override + public void run() { + // TODO Auto-generated method stub + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Map map = new HashMap<>(); + map.put("force_ver", "1"); + map.put("ver", "1"); + Jedis jedis = new Jedis("127.0.0.1", 6380); + jedis.auth("123456"); + //选择库 + jedis.select(5); + Set keys = jedis.keys("*"); + int i = 0; + for(String str : keys) { + long stime = Long.valueOf(str.substring(15,str.length())); + if(stime < end && stime > start) { + jedis.del(str); + i++; + System.out.println("#"+num +"Thread"+i); + } + + } + System.out.println(i); + + jedis.close(); + } + + } +} diff --git a/game_web/web_group_robot/src/test/java/web_group/Main.java b/game_web/web_group_robot/src/test/java/web_group/Main.java new file mode 100644 index 0000000..354239c --- /dev/null +++ b/game_web/web_group_robot/src/test/java/web_group/Main.java @@ -0,0 +1,9 @@ +package web_group; + +import com.taurus.web.JettyServer; + +public class Main { + public static void main(String[] args) { + new JettyServer("src/main/webapp",24012,"/").start(); + } +} diff --git a/game_web/web_group_robot/target/ROOT.war b/game_web/web_group_robot/target/ROOT.war new file mode 100644 index 0000000..2473e9e Binary files /dev/null and b/game_web/web_group_robot/target/ROOT.war differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/MainServer.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/MainServer.class new file mode 100644 index 0000000..b26f0d9 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/MainServer.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/Protocol.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/Protocol.class new file mode 100644 index 0000000..545a9ff Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/Protocol.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/WebInterceptor.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/WebInterceptor.class new file mode 100644 index 0000000..a1e29ad Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/WebInterceptor.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupController.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupController.class new file mode 100644 index 0000000..e6ff340 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupController.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupLogController.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupLogController.class new file mode 100644 index 0000000..2f57a81 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupLogController.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupRoomController.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupRoomController.class new file mode 100644 index 0000000..23a27ae Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupRoomController.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class new file mode 100644 index 0000000..bb7d923 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class new file mode 100644 index 0000000..7364caa Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupLogService.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupLogService.class new file mode 100644 index 0000000..02eb715 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupLogService.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupPublisherService.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupPublisherService.class new file mode 100644 index 0000000..9767603 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupPublisherService.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class new file mode 100644 index 0000000..eb4eb03 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class new file mode 100644 index 0000000..9555bd0 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$1.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$1.class new file mode 100644 index 0000000..69d66ad Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$1.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$2.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$2.class new file mode 100644 index 0000000..cfa8c19 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient$2.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient.class new file mode 100644 index 0000000..d9bbfa0 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ISocketLayer.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ISocketLayer.class new file mode 100644 index 0000000..d9bdab8 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ISocketLayer.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/Message.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/Message.class new file mode 100644 index 0000000..f76099a Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/Message.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/MessageResponse.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/MessageResponse.class new file mode 100644 index 0000000..9e7f12e Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/MessageResponse.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/NetManager.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/NetManager.class new file mode 100644 index 0000000..92ed8bc Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/NetManager.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/SocketCode.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/SocketCode.class new file mode 100644 index 0000000..a0a8443 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/SocketCode.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$1.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$1.class new file mode 100644 index 0000000..aa28581 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$1.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$2.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$2.class new file mode 100644 index 0000000..d280a5b Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$2.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$3.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$3.class new file mode 100644 index 0000000..9ebfd13 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$3.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$4.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$4.class new file mode 100644 index 0000000..1c3d524 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$4.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$5.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$5.class new file mode 100644 index 0000000..97b515e Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$5.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$ConnectionProtocol.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$ConnectionProtocol.class new file mode 100644 index 0000000..ce67912 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$ConnectionProtocol.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$NetClientEvent.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$NetClientEvent.class new file mode 100644 index 0000000..0c3d031 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient$NetClientEvent.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient.class new file mode 100644 index 0000000..116f3ab Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$1.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$1.class new file mode 100644 index 0000000..be9a347 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$1.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$2.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$2.class new file mode 100644 index 0000000..9f390c6 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$2.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$MessgaeThread.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$MessgaeThread.class new file mode 100644 index 0000000..e3a97cf Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager$MessgaeThread.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager.class new file mode 100644 index 0000000..3e68eea Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler$PacketReadState.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler$PacketReadState.class new file mode 100644 index 0000000..3c4bbb9 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler$PacketReadState.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler.class new file mode 100644 index 0000000..14f9875 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket$1.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket$1.class new file mode 100644 index 0000000..15f9eee Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket$1.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket.class new file mode 100644 index 0000000..52bb737 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/LagMonitor.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/LagMonitor.class new file mode 100644 index 0000000..8452990 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/LagMonitor.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/Packet.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/Packet.class new file mode 100644 index 0000000..4f8fb38 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/Packet.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine$1.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine$1.class new file mode 100644 index 0000000..4cd7876 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine$1.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine.class new file mode 100644 index 0000000..0cdb161 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketState.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketState.class new file mode 100644 index 0000000..c6eef02 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketState.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$1.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$1.class new file mode 100644 index 0000000..0f67447 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$1.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$2.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$2.class new file mode 100644 index 0000000..48848f2 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp$2.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp.class new file mode 100644 index 0000000..79c7d03 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$1.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$1.class new file mode 100644 index 0000000..7298488 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$1.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$2.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$2.class new file mode 100644 index 0000000..599e7f7 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController$2.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController.class new file mode 100644 index 0000000..efff50b Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/TSocketException.class b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/TSocketException.class new file mode 100644 index 0000000..26374e0 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/TSocketException.class differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/HikariCP-3.3.1.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/HikariCP-3.3.1.jar new file mode 100644 index 0000000..476e0c0 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/HikariCP-3.3.1.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/c3p0-0.9.1.1.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/c3p0-0.9.1.1.jar new file mode 100644 index 0000000..8d283e4 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/c3p0-0.9.1.1.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/commons-pool2-2.4.2.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/commons-pool2-2.4.2.jar new file mode 100644 index 0000000..fdf8b6f Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/commons-pool2-2.4.2.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar new file mode 100644 index 0000000..cda4b21 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/jdom-1.0.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/jdom-1.0.jar new file mode 100644 index 0000000..288e64c Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/jdom-1.0.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/jedis-2.9.0.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/jedis-2.9.0.jar new file mode 100644 index 0000000..f4d27d3 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/jedis-2.9.0.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/log4j-1.2.17.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/log4j-1.2.17.jar new file mode 100644 index 0000000..1d425cf Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/log4j-1.2.17.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/mysql-connector-java-8.0.16.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/mysql-connector-java-8.0.16.jar new file mode 100644 index 0000000..dd45f8c Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/mysql-connector-java-8.0.16.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/protobuf-java-3.6.1.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/protobuf-java-3.6.1.jar new file mode 100644 index 0000000..8a18789 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/protobuf-java-3.6.1.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/quartz-2.2.3.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/quartz-2.2.3.jar new file mode 100644 index 0000000..158c1c2 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/quartz-2.2.3.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar new file mode 100644 index 0000000..0143c09 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar new file mode 100644 index 0000000..fac6b51 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar new file mode 100644 index 0000000..0443507 Binary files /dev/null and b/game_web/web_group_robot/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar differ diff --git a/game_web/web_group_robot/target/ROOT/WEB-INF/web.xml b/game_web/web_group_robot/target/ROOT/WEB-INF/web.xml new file mode 100644 index 0000000..a71270c --- /dev/null +++ b/game_web/web_group_robot/target/ROOT/WEB-INF/web.xml @@ -0,0 +1,19 @@ + + + + + taurus-web + com.taurus.web.WebFilter + + main + com.group.MainServer + + + + + taurus-web + /* + + diff --git a/game_web/web_group_robot/target/ROOT/config/bank_hp.lua b/game_web/web_group_robot/target/ROOT/config/bank_hp.lua new file mode 100644 index 0000000..d3a02ce --- /dev/null +++ b/game_web/web_group_robot/target/ROOT/config/bank_hp.lua @@ -0,0 +1,19 @@ +local tag_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local bank_hp = tonumber(redis.call('hget', KEYS[2],KEYS[3])) +bank_hp = not bank_hp and 0 or bank_hp +local hp = tonumber(ARGV[1]) +local opt = tonumber(ARGV[2]) +if opt==0 then + if bank_hp < hp then + return 3 + end + bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],-hp) + tag_hp = redis.call('hincrBy',KEYS[1],'hp',hp) +else + if tag_hp < hp then + return 4 + end + bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],hp) + tag_hp = redis.call('hincrBy',KEYS[1],'hp',-hp) +end +return {tag_hp,bank_hp} \ No newline at end of file diff --git a/game_web/web_group_robot/target/ROOT/config/log4j.properties b/game_web/web_group_robot/target/ROOT/config/log4j.properties new file mode 100644 index 0000000..6786dba --- /dev/null +++ b/game_web/web_group_robot/target/ROOT/config/log4j.properties @@ -0,0 +1,20 @@ + +log4j.rootLogger = INFO,consoleAppender,fileAppender + +# ConsoleAppender +log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender +log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.consoleAppender.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%t] %c{2} %3x - %m%n + + +# Regular FileAppender +log4j.appender.fileAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.fileAppender.File=${WORKDIR}/logs/web_main.log +log4j.appender.fileAppender.layout.ConversionPattern=%d{dd MMM yyyy | HH:mm:ss,SSS} | %-5p | %t | %c{3} | %3x | %m%n +log4j.appender.fileAppender.Encoding=UTF-8 +log4j.appender.fileAppender.DatePattern='.'yyyy-MM-dd +log4j.appender.dailyFile.Append=true + +# The file is rolled over very day +log4j.appender.fileAppender.DatePattern ='.'yyyy-MM-dd \ No newline at end of file diff --git a/game_web/web_group_robot/target/ROOT/config/mgr.lua b/game_web/web_group_robot/target/ROOT/config/mgr.lua new file mode 100644 index 0000000..50b3c69 --- /dev/null +++ b/game_web/web_group_robot/target/ROOT/config/mgr.lua @@ -0,0 +1,25 @@ +-- redis.call('select',0) +local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp')) + +local ulev = tonumber(ARGV[2]) +local hp = tonumber(ARGV[1]) +if ulev == 3 or ulev == 2 then + if hp > 0 and mgr_hp 0 and reward_hp < hp then + return 3 +else + reward_hp = redis.call('incrBy',KEYS[1],-hp) + tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp) +end +return {reward_hp,tag_hp} \ No newline at end of file diff --git a/game_web/web_group_robot/target/ROOT/config/taurus-core.xml b/game_web/web_group_robot/target/ROOT/config/taurus-core.xml new file mode 100644 index 0000000..49049a5 --- /dev/null +++ b/game_web/web_group_robot/target/ROOT/config/taurus-core.xml @@ -0,0 +1,99 @@ + + + log4j.properties + + + database + com.taurus.core.plugin.database.DataBasePlugin + + + + 100 + + 5 + + 180000 + + select 1 + + 10000 + + 60000 + + + + false + true + utf-8 + + UTC + + true + + 250 + + 2048 + + + + + + db1 + com.mysql.cj.jdbc.Driver + jdbc:mysql://192.168.0.11:6060/wb_game + proto_ff + 37du_game + + + + + + redis + com.taurus.core.plugin.redis.RedisPlugin + + + + 80 + + 8 + + 2 + + -1 + + true + + true + + true + + 100 + + 60000 + + 30000 + + 1800000 + + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game_web/web_group_robot/target/ROOT/config/trade.lua b/game_web/web_group_robot/target/ROOT/config/trade.lua new file mode 100644 index 0000000..c03a438 --- /dev/null +++ b/game_web/web_group_robot/target/ROOT/config/trade.lua @@ -0,0 +1,12 @@ +local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp')) +local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp')) +mgr_hp = not mgr_hp and 0 or mgr_hp +tag_hp = not tag_hp and 0 or tag_hp +local hp = tonumber(ARGV[1]) +if hp > 0 and mgr_hp entry : this.playerMapBySeat.entrySet()) { Player player = entry.getValue(); - playerData.addTObject(player.getInfo()); + + String roboth = jedis2.hget("{robot"+groupId+"}",player.playerid+""); + if(StringUtil.isNotEmpty(roboth)){ + ITObject tmp = player.getInfo(); + tmp.putInt("online", 1 ); + playerData.addTObject(tmp); + }else{ + playerData.addTObject(player.getInfo()); + } + } + + jedis2.close(); data.putTArray("playerData", playerData); data.putInt("xipai_score", this.xi_pai_score); data.putInt("anchou_score",this.an_chou_score); diff --git a/libs/game_common/src/main/java/com/game/manager/RoomManager.java b/libs/game_common/src/main/java/com/game/manager/RoomManager.java index fd32c17..c8b421f 100644 --- a/libs/game_common/src/main/java/com/game/manager/RoomManager.java +++ b/libs/game_common/src/main/java/com/game/manager/RoomManager.java @@ -137,6 +137,7 @@ public class RoomManager { this.tableMap.remove(roomid); }finally { lock.unlock(); + //jedis0.close(); } } diff --git a/libs/game_common/target/classes/com/game/GameController.class b/libs/game_common/target/classes/com/game/GameController.class index 50e125c..d2998f7 100644 Binary files a/libs/game_common/target/classes/com/game/GameController.class and b/libs/game_common/target/classes/com/game/GameController.class differ diff --git a/libs/game_common/target/classes/com/game/data/Player.class b/libs/game_common/target/classes/com/game/data/Player.class index c4c416a..89a173c 100644 Binary files a/libs/game_common/target/classes/com/game/data/Player.class and b/libs/game_common/target/classes/com/game/data/Player.class differ diff --git a/libs/game_common/target/classes/com/game/data/Room.class b/libs/game_common/target/classes/com/game/data/Room.class index 9f580de..2b1b190 100644 Binary files a/libs/game_common/target/classes/com/game/data/Room.class and b/libs/game_common/target/classes/com/game/data/Room.class differ diff --git a/libs/game_common/target/classes/com/game/manager/RoomManager.class b/libs/game_common/target/classes/com/game/manager/RoomManager.class index 9bb244a..633dc83 100644 Binary files a/libs/game_common/target/classes/com/game/manager/RoomManager.class and b/libs/game_common/target/classes/com/game/manager/RoomManager.class differ diff --git a/libs/game_common/target/game_common-1.0.0.jar b/libs/game_common/target/game_common-1.0.0.jar index c9d9149..60ce601 100644 Binary files a/libs/game_common/target/game_common-1.0.0.jar and b/libs/game_common/target/game_common-1.0.0.jar differ diff --git a/majiang/changsha/game_mj_cs/src/main/java/extend/mj/RoomCard.java b/majiang/changsha/game_mj_cs/src/main/java/extend/mj/RoomCard.java index f2dfcd1..4f65f78 100644 --- a/majiang/changsha/game_mj_cs/src/main/java/extend/mj/RoomCard.java +++ b/majiang/changsha/game_mj_cs/src/main/java/extend/mj/RoomCard.java @@ -20,9 +20,9 @@ public class RoomCard { public void init() { this.cardList.clear(); this.subCardList.clear(); - //this.initCard(); - //this.shuffle(); - this.initCard2(); + this.initCard(); + this.shuffle(); + //this.initCard2(); } private void initCard2() { @@ -51,7 +51,7 @@ public class RoomCard { } private void shuffle() { - //Collections.shuffle(this.cardList); + Collections.shuffle(this.cardList); } public int pop() { diff --git a/majiang/changsha/game_mj_cs/src/main/java/extend/mj/player/rule/RuleSelfWin.java b/majiang/changsha/game_mj_cs/src/main/java/extend/mj/player/rule/RuleSelfWin.java index 49f25a4..4c5ae6b 100644 --- a/majiang/changsha/game_mj_cs/src/main/java/extend/mj/player/rule/RuleSelfWin.java +++ b/majiang/changsha/game_mj_cs/src/main/java/extend/mj/player/rule/RuleSelfWin.java @@ -39,7 +39,7 @@ public class RuleSelfWin implements IRuleBase { if (ok != null) { for (int card : ok.drawList) { //jefe 杠上开花 - if (Paixing.checkWin(map, player.opCardList, player.cardInhand, card,true, room.difen_score)) { + if (Paixing.checkWin(map, player.opCardList, player.cardInhand, card,!no_jiang, room.difen_score)) { Paixing.putWinCardType(map, WinCardType.GANGSHANGHUA, 1,WinCardType.WIN_TYPE_SCORE); map.remove(WinCardType.XIAOHU); result = true; diff --git a/majiang/changsha/game_mj_cs/target/classes/extend/mj/RoomCard.class b/majiang/changsha/game_mj_cs/target/classes/extend/mj/RoomCard.class index 7e0bbde..b315273 100644 Binary files a/majiang/changsha/game_mj_cs/target/classes/extend/mj/RoomCard.class and b/majiang/changsha/game_mj_cs/target/classes/extend/mj/RoomCard.class differ diff --git a/majiang/changsha/game_mj_cs/target/classes/extend/mj/player/rule/RuleSelfWin.class b/majiang/changsha/game_mj_cs/target/classes/extend/mj/player/rule/RuleSelfWin.class index c58871d..7931180 100644 Binary files a/majiang/changsha/game_mj_cs/target/classes/extend/mj/player/rule/RuleSelfWin.class and b/majiang/changsha/game_mj_cs/target/classes/extend/mj/player/rule/RuleSelfWin.class differ diff --git a/majiang/changsha/game_mj_cs/target/game.jar b/majiang/changsha/game_mj_cs/target/game.jar index 1910401..47249d8 100644 Binary files a/majiang/changsha/game_mj_cs/target/game.jar and b/majiang/changsha/game_mj_cs/target/game.jar differ diff --git a/majiang/changsha/game_mj_cs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/majiang/changsha/game_mj_cs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 6fea9d9..d802145 100644 --- a/majiang/changsha/game_mj_cs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/majiang/changsha/game_mj_cs/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,64 +1,64 @@ -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleHaidi.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleQSWin.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PROtherOpenKongState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\uitl\Paixing.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleChow.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerQSWinTipState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRSelfKongState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\SettleLog.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RulePong.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RulePongKong.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXMainServer.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXPlayBack.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\room\state\EXRoomStartGameState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\tip\Tip.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerDisCardTipState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleSelfKong.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRChowState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerDrawState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\CardNiao.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PROtherWinState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\OpenKong.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerHaidiTipState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerKongWinState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerTipState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXPlayer.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRSelfOpenKongState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerTianTingTipState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\tip\TipManager.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\OpCard.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerDiscardState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleOtherWin.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleSelfWin.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRSelfWinState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\PlayerRuleManager.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\uitl\WinCard.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleZTWin.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRPongState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRPongOpenKongState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RulePongOpenKong.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleSelfOpenKong.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\room\state\EXRoomSetpState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\uitl\CardUtil.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerZTWinTipState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerOpenKongState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\QSLog.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRPongKongState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\RoomCard.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXRoom.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXActionEvent.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleOtherOpenKong.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXScore.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleOtherKong.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerPiaoNiaoTipState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerWaitState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\RuleWeight.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\room\state\EXRoomDealState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\tip\IRuleBase.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\Config.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\WinCardType.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\tip\Action.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerDrawTipState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerWaitKongWinState.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXGameController.java -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PROtherKongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerTipState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\uitl\Paixing.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\Config.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerWaitState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\OpCard.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RulePong.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PROtherWinState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\tip\Action.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXMainServer.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXActionEvent.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PROtherKongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleSelfOpenKong.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RulePongKong.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerPiaoNiaoTipState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRPongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\QSLog.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerKongWinState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleSelfWin.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerWaitKongWinState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXScore.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerDiscardState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerOpenKongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PROtherOpenKongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\room\state\EXRoomStartGameState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RulePongOpenKong.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRSelfOpenKongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\WinCardType.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\PlayerRuleManager.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleOtherKong.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRPongOpenKongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\room\state\EXRoomDealState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleOtherOpenKong.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerHaidiTipState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\tip\Tip.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleSelfKong.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\tip\IRuleBase.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerDisCardTipState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRChowState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\SettleLog.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerTianTingTipState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleHaidi.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXPlayBack.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleOtherWin.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerQSWinTipState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerDrawTipState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\RoomCard.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXGameController.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\OpenKong.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\RuleWeight.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\room\state\EXRoomSetpState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRPongKongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRSelfKongState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXPlayer.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\tip\TipManager.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleQSWin.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\uitl\CardUtil.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleChow.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rulestate\PRSelfWinState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\EXRoom.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\uitl\WinCard.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerDrawState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\rule\RuleZTWin.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\player\state\EXPlayerZTWinTipState.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\main\java\extend\mj\CardNiao.java diff --git a/majiang/changsha/game_mj_cs/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/majiang/changsha/game_mj_cs/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 919e6fe..7d420c8 100644 --- a/majiang/changsha/game_mj_cs/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/majiang/changsha/game_mj_cs/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1 @@ -D:\robotpro\robot_ceshi\xtserver_anchou\majiang\changsha\game_mj_cs\src\test\java\game_mj_changsha\Main.java +D:\fengyeserver\xtserver_anchou\majiang\changsha\game_mj_cs\src\test\java\game_mj_changsha\Main.java diff --git a/puke/paodekuai/game_pk_paodekuai/game_pk_paodekuai.iml b/puke/paodekuai/game_pk_paodekuai/game_pk_paodekuai.iml deleted file mode 100644 index 9c02873..0000000 --- a/puke/paodekuai/game_pk_paodekuai/game_pk_paodekuai.iml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/game_paohuzi_zipai.jar b/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/game_paohuzi_zipai.jar index 0d0da96..9ef5916 100644 Binary files a/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/game_paohuzi_zipai.jar and b/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/game_paohuzi_zipai.jar differ diff --git a/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-archiver/pom.properties b/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-archiver/pom.properties index 013717e..fe92523 100644 --- a/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-archiver/pom.properties +++ b/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-archiver/pom.properties @@ -1,5 +1,3 @@ -#Generated by Maven -#Sat Apr 13 13:43:38 GMT+08:00 2024 -version=1.0.0 -groupId=com.zp.game_zp_xiangtanpaohuzi artifactId=game_zp_xiangtanpaohuzi +groupId=com.zp.game_zp_xiangtanpaohuzi +version=1.0.0 diff --git a/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index bb30d3a..0c7616b 100644 --- a/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,56 +1,56 @@ -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXPlayer.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleKan.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\RuleWeight.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\tip\TipManager.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\WinCardNew.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerDrawState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\room\state\EXRoomStartGameState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerTipState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXRoom.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDealTi.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDiscardPao.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\ChowCard.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRDrawChiState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRChiState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDealKan.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerDrawTipState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\tip\Tip.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRChi.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\PlayerRuleManager.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\Config.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerPreDrawState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXMainServer.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\WinOpCard.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDrawPong.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRDrawPongState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRDiscardPaoState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\MingTang.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleWei.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleWin.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRDrawPaoState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDrawChi.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerDiscardState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleTi.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\CardUtil.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\RoomCard.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDrawPao.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\WinCard.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RulePong.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\room\state\EXRoomSetpState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRPongState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXActionEvent.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXGameController.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRTiState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerDisCardTipState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\tip\IRuleBase.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\PlayBack.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRCheck.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleChi.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\tip\Action.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXScore.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRWeiState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRWinState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerWaitState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\room\state\EXRoomDealState.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\Paixing.java -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\OpCard.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDrawPao.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\room\state\EXRoomStartGameState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\tip\IRuleBase.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXRoom.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RulePong.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRChiState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXGameController.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRDiscardPaoState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRDrawChiState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleKan.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\PlayerRuleManager.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\MingTang.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\RuleWeight.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerPreDrawState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\WinCard.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRTiState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXMainServer.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\WinCardNew.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\WinOpCard.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRPongState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleChi.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerDrawTipState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerDrawState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDiscardPao.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDrawChi.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\tip\Action.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\room\state\EXRoomDealState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\RoomCard.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerWaitState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRDrawPongState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerDisCardTipState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRDrawPaoState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRWeiState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\PlayBack.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\Config.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\tip\TipManager.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRWinState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDrawPong.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\OpCard.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleTi.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXPlayer.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDealKan.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\room\state\EXRoomSetpState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleWin.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXActionEvent.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleWei.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRCheck.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\EXScore.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerTipState.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\CardUtil.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rulestate\PRChi.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\ChowCard.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\uitl\Paixing.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\tip\Tip.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\rule\RuleDealTi.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\main\java\extend\zp\player\state\EXPlayerDiscardState.java diff --git a/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index b92a648..b3bfa69 100644 --- a/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/zipai/paohuzi/game_zp_xiangtanpaohuzi/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1 @@ -D:\project\javapro\javapro\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\test\java\game_zp_xiangtanpaohuzi\Main.java +D:\fengyeserver\xtserver_anchou\zipai\paohuzi\game_zp_xiangtanpaohuzi\src\test\java\game_zp_xiangtanpaohuzi\Main.java