master
fpgajie 2026-02-27 11:32:38 +08:00
parent 6899ded066
commit 8a2d6765e0
237 changed files with 22862 additions and 1055 deletions

View File

@ -10,13 +10,14 @@
<module name="game_mj_zhuanzhuan" />
<module name="data_cache" />
<module name="game_mj_hongzhong" />
<module name="web_group_robot" />
<module name="web_group" />
<module name="game_mj_yijiaolaiyou" />
<module name="taurus-permanent" />
<module name="event_mgr" />
<module name="game_common" />
<module name="taurus-web" />
<module name="game_zp_changdepaohuzi" />
<module name="game_common" />
<module name="game_mj_fulushou" />
<module name="game_pk_chuntian" />
<module name="game_zp_yueyangwaihuzi" />

View File

@ -9,6 +9,8 @@
<file url="file://$PROJECT_DIR$/game_web/pack_tools/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/game_web/web_group/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/game_web/web_group/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/game_web/web_group_robot/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/game_web/web_group_robot/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/game_web/web_login20/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/game_web/web_login20/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/libs/data_cache/src/main/java" charset="UTF-8" />

View File

@ -31,6 +31,7 @@
<option value="$PROJECT_DIR$/majiang/gejiu/game_mj_gejiu/pom.xml" />
<option value="$PROJECT_DIR$/puke/chuntian/game_pk_chuntian/pom.xml" />
<option value="$PROJECT_DIR$/libs/robot_common/pom.xml" />
<option value="$PROJECT_DIR$/game_web/web_group_robot/pom.xml" />
</list>
</option>
</component>

View File

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/build/pro" relative="config/" />
<root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
</webroots>
<sourceRoots>
<root url="file://$MODULE_DIR$/src/main/java" />
</sourceRoots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
<orderEntry type="module" module-name="data_cache" />
<orderEntry type="module" module-name="taurus-core" />
<orderEntry type="module" module-name="taurus-web" />
<orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.3.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
<orderEntry type="library" name="Maven: jdom:jdom:1.0" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.3" level="project" />
<orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-webapp:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-xml:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-util:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-servlet:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-security:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-server:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-continuation:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-http:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-io:8.2.0.v20160908" level="project" />
</component>
</module>

View File

@ -284,6 +284,7 @@ public class CleanTimeOutRoomJob implements Job{
finally {
lock.unlock();
jedis0.close();
jedis11.close();
}
}
catch(Exception e) {

View File

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
</webroots>
<sourceRoots>
<root url="file://$MODULE_DIR$/src/main/java" />
</sourceRoots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
<orderEntry type="module" module-name="data_cache" />
<orderEntry type="module" module-name="taurus-core" />
<orderEntry type="module" module-name="taurus-web" />
<orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.3.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
<orderEntry type="library" name="Maven: jdom:jdom:1.0" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-webapp:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-xml:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-util:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-servlet:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-security:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-server:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-continuation:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-http:8.2.0.v20160908" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-io:8.2.0.v20160908" level="project" />
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.8.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.1" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.9" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ram:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-sts:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ecs:4.2.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.62" level="project" />
</component>
</module>

View File

@ -5,62 +5,182 @@
</component>
<component name="ChangeListManager">
<list default="true" id="0b5e96d5-7630-407a-8e4f-0ff0311ccd8b" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/HttpClient.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/ISocketLayer.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/Message.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/MessageResponse.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/NetManager.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/SocketCode.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/TaurusClient.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/ThreadManager.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/IOHandler.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/ISocket.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/LagMonitor.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/Packet.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketEngine.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketState.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketTcp.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SystemController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/TSocketException.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/compiler.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/encodings.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/jarRepositories.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/misc.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/vcs.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/workspace.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/local/taurus-core.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/bank_hp.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/log4j.properties" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/mgr.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/take_hp.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/taurus-core.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/trade.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/bank_hp.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/log4j.properties" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/mgr.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/take_hp.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/taurus-core.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/trade.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/pom.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/MainServer.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/Protocol.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/WebInterceptor.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/controller/GroupController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/controller/GroupLogController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/controller/GroupRoomController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/job/UpdatePlayRoomJob.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/GroupLogService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/GroupPublisherService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/GroupRoomService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/GroupService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/HttpClient.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/ISocketLayer.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/Message.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/MessageResponse.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/NetManager.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/SocketCode.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/TaurusClient.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/ThreadManager.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/IOHandler.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/ISocket.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/LagMonitor.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/Packet.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/SocketEngine.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/SocketState.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/SocketTcp.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/SystemController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/TSocketException.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/WEB-INF/web.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/bank_hp.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/log4j.properties" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/mgr.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/take_hp.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/taurus-core.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/trade.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/logs/web_main.log" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/logs/web_main.log.2026-02-02" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/logs/web_main.log.2026-02-04" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/test/java/etty-contexts.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/test/java/web_group/DataClearUtils.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/test/java/web_group/Main.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT.war" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/MainServer.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/Protocol.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/WebInterceptor.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupLogController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupRoomController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupLogService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupPublisherService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ISocketLayer.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/Message.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/MessageResponse.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/NetManager.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/SocketCode.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/LagMonitor.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/Packet.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketState.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/TSocketException.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/HikariCP-3.3.1.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/c3p0-0.9.1.1.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/commons-pool2-2.4.2.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/jdom-1.0.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/jedis-2.9.0.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/log4j-1.2.17.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/mysql-connector-java-8.0.16.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/protobuf-java-3.6.1.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/quartz-2.2.3.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/web.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/bank_hp.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/log4j.properties" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/mgr.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/take_hp.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/taurus-core.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/trade.lua" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/MainServer.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/Protocol.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/WebInterceptor.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/controller/GroupController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/controller/GroupLogController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/controller/GroupRoomController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/GroupLogService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/GroupPublisherService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/GroupRoomService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/GroupService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/HttpClient.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/ISocketLayer.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/Message.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/MessageResponse.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/NetManager.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/SocketCode.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/TaurusClient.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/ThreadManager.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/IOHandler.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/ISocket.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/LagMonitor.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/Packet.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/SocketEngine.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/SocketState.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/SocketTcp.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/SystemController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/TSocketException.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-archiver/pom.properties" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/test-classes/web_group/DataClearUtils.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/test-classes/web_group/Main.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../.idea/compiler.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../.idea/encodings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../.idea/encodings.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../event_mgr/event_mgr.iml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../pack_tools/pack_tools.iml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/job/UpdatePlayRoomJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdatePlayRoomJob.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT.war" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT.war" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/MainServer$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/MainServer$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/job/UpdatePlayRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/job/UpdateRobotRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/AccountBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/BaseBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GameBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupMemberBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupPlayBean.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/AccountCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/BaseCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GameCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupMemberCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupPlayCache.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/ConsumeCode.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/CountUtil.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/ErrorCode.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/EventType.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/Utility.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/data_cache.jar" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-archiver/pom.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/game_common/src/main/java/com/game/data/Player.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../libs/game_common/src/main/java/com/game/data/Player.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../puke/paodekuai/game_pk_paodekuai/game_pk_paodekuai.iml" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -86,7 +206,7 @@
"RunOnceActivity.ShowReadmeOnStart": "true",
"git-widget-placeholder": "master",
"kotlin-language-version-configured": "true",
"last_opened_file_path": "D:/fengyeserver/xtserver_anchou/game_web/web_group/src/main/java/com/group/service",
"last_opened_file_path": "D:/fengyeserver/xtserver_anchou",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
@ -142,7 +262,11 @@
<updated>1770034638903</updated>
<workItem from="1770034639979" duration="1384000" />
<workItem from="1770184768302" duration="11751000" />
<workItem from="1770207182971" duration="2004000" />
<workItem from="1770207182971" duration="24200000" />
<workItem from="1770246092084" duration="3540000" />
<workItem from="1770292300535" duration="7319000" />
<workItem from="1770368267167" duration="3929000" />
<workItem from="1770402104493" duration="672000" />
</task>
<servers />
</component>

View File

@ -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) {

View File

@ -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) {

View File

@ -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 createRobotRoom() {
//1、获取对应的机器人id
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 robotid = 0;
Map<String,String> jsRobot = js2.hgetAll("gallrobot");
for (String key : jsRobot.keySet()) {
if(Integer.parseInt(jsRobot.get(key))==0){
robotid = Integer.parseInt(key);
int groupId = 426149;
String gp_key = GroupCache.genPidsKey(groupId);
Set<String> 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<String> 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<String> rooms = js11.zrevrangeByScore(grooms_key, max_value, min_value);
long sttime = System.currentTimeMillis() / 1000;
for (String room : rooms) {
List<String> 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;
String allrobotkeys = "{robot426149}";
int groupid = 426149;
//获取玩法列表
Set<String> pids = js11.keys("g{426149}:play:*");
List<Integer> 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<Integer> plist = new ArrayList<>();
plist.add(okpids.get(pidindex));
plist.add(okpids.get(pidindex2));
//plist.add(okpids.get(pidindex3));
for(Integer pid : plist) {
Map<String,String> 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<String, String> roomMap = new HashMap<String, String>();
/**
* 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<Integer> seat_list = new ArrayList<>();
List<Integer> 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;

View File

@ -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<String> 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<String> 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"+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<String> 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<String,String> jsRobot = js1.hgetAll("gallrobot");
Map<String,String> 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<String> 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;

View File

@ -43,7 +43,7 @@
<db>
<name>db1</name>
<driverName>com.mysql.cj.jdbc.Driver</driverName>
<jdbcUrl>jdbc:mysql://8.138.242.190:8060/wb_game</jdbcUrl>
<jdbcUrl>jdbc:mysql://47.109.55.7:8060/wb_game</jdbcUrl>
<userName>root</userName>
<password>6KYnXJjGhxNceF8e</password>
</db>
@ -86,15 +86,15 @@
</poolConfig>
<infos>
<info name="group1_db0" host="8.138.242.190" password="cssq@2020" port="6379" database="0" timeout="5000"/>
<info name="group1_db1" host="8.138.242.190" password="cssq@2020" port="6379" database="1" timeout="5000"/>
<info name="group1_db2" host="8.138.242.190" password="cssq@2020" port="6379" database="2" timeout="5000"/>
<info name="group1_db5" host="8.138.242.190" password="cssq@2020" port="6379" database="5" timeout="5000"/>
<info name="group1_db8" host="8.138.242.190" password="cssq@2020" port="6379" database="8" timeout="5000"/>
<info name="group1_db9" host="8.138.242.190" password="cssq@2020" port="6379" database="9" timeout="5000"/>
<info name="group1_db10" host="8.138.242.190" password="cssq@2020" port="6379" database="10" timeout="5000"/>
<info name="group1_db11" host="8.138.242.190" password="cssq@2020" port="6379" database="11" timeout="5000"/>
<info name="tmp_group1_db9" host="8.138.242.190" password="654sads" port="6479" database="9" timeout="5000"/>
<info name="group1_db0" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="0" timeout="5000"/>
<info name="group1_db1" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="1" timeout="5000"/>
<info name="group1_db2" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="2" timeout="5000"/>
<info name="group1_db5" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="5" timeout="5000"/>
<info name="group1_db8" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="8" timeout="5000"/>
<info name="group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="9" timeout="5000"/>
<info name="group1_db10" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="10" timeout="5000"/>
<info name="group1_db11" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="11" timeout="5000"/>
<info name="tmp_group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="654sads" port="6479" database="9" timeout="5000"/>
</infos>
</plugin>

File diff suppressed because it is too large Load Diff

View File

@ -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.<init>(URL.java:610)
at java.net.URL.<init>(URL.java:507)
at java.net.URL.<init>(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!

Binary file not shown.

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="web_group" />
</profile>
</annotationProcessing>
</component>
</project>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="0b5e96d5-7630-407a-8e4f-0ff0311ccd8b" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/job/UpdatePlayRoomJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdatePlayRoomJob.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT.war" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT.war" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/job/UpdatePlayRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/job/UpdateRobotRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../libs/game_common/src/main/java/com/game/data/Player.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../libs/game_common/src/main/java/com/game/data/Player.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 5
}</component>
<component name="ProjectId" id="3976D3jFfFaRPSUxbaPEaUpbzE9" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;Application.Main.executor&quot;: &quot;Run&quot;,
&quot;Maven.web_group [clean].executor&quot;: &quot;Run&quot;,
&quot;Maven.web_group [install].executor&quot;: &quot;Run&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;master&quot;,
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;D:/project/changhongserver&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\fengyeserver\xtserver_anchou\game_web\web_group\src\main\java\com\group\service" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.group.job" />
<recent name="com.group.service" />
</key>
</component>
<component name="RunManager">
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="web_group.Main" />
<module name="web_group" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="web_group.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.Main" />
</list>
</recent_temporary>
</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-jdk-9f38398b9061-18abd8497189-intellij.indexing.shared.core-IU-241.14494.240" />
<option value="bundled-js-predefined-1d06a55b98c1-74d2a5396914-JavaScript-IU-241.14494.240" />
</set>
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="0b5e96d5-7630-407a-8e4f-0ff0311ccd8b" name="Changes" comment="" />
<created>1770034638903</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1770034638903</updated>
<workItem from="1770034639979" duration="1384000" />
<workItem from="1770184768302" duration="11751000" />
<workItem from="1770207182971" duration="24200000" />
<workItem from="1770246092084" duration="3540000" />
<workItem from="1770292300535" duration="7319000" />
<workItem from="1770368267167" duration="1586000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
</project>

View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<serivce-core>
<log4jPath>log4j.properties</log4jPath>
<plugin>
<id>database</id>
<class>com.taurus.core.plugin.database.DataBasePlugin</class>
<poolConfig>
<!-- 最大连接数, 默认10个 -->
<maxPool>100</maxPool>
<!-- 最小空闲连接数, 默认0个 -->
<minIdle>10</minIdle>
<!-- 配置获取连接等待超时的时间,单位是毫秒, 默认180000 -->
<maxLifetime>180000</maxLifetime>
<!--hsqldb - "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
Oracle - "select 1 from dual"
DB2 - "select 1 from sysibm.sysdummy1"
mysql - "select 1" -->
<validationQuery>select 1</validationQuery>
<!-- 连接超时时间,默认30000-->
<connectionTimeout>10000</connectionTimeout>
<!-- 待机超时时间,单位是毫秒, 默认60000 -->
<idleTimeout>60000</idleTimeout>
<!-- jdbc 属性 -->
<props>
<useSSL>false</useSSL>
<useUnicode>true</useUnicode>
<characterEncoding>utf-8</characterEncoding>
<!-- 服务器时区 -->
<serverTimezone>UTC</serverTimezone>
<!-- 预编译缓存 -->
<cachePrepStmts>true</cachePrepStmts>
<!-- 预编译缓存大小 -->
<prepStmtCacheSize>250</prepStmtCacheSize>
<!-- 控制长度多大的sql可以被缓存 -->
<prepStmtCacheSqlLimit>2048</prepStmtCacheSqlLimit>
</props>
</poolConfig>
<databases>
<db>
<name>db1</name>
<driverName>com.mysql.cj.jdbc.Driver</driverName>
<jdbcUrl>jdbc:mysql://192.168.0.11:6060/wb_game</jdbcUrl>
<userName>proto_ff</userName>
<password>37du_game</password>
</db>
</databases>
</plugin>
<plugin>
<id>redis</id>
<class>com.taurus.core.plugin.redis.RedisPlugin</class>
<poolConfig>
<!-- 最大连接数, 默认8个 -->
<maxTotal>80</maxTotal>
<!-- 最大空闲连接数, 默认8个 -->
<maxIdle>20</maxIdle>
<!-- 最小空闲连接数, 默认0个 -->
<minIdle>5</minIdle>
<!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
<maxWaitMillis>-1</maxWaitMillis>
<!-- 在borrow一个jedis实例时是否提前进行alidate操作, 默认false -->
<testOnBorrow>true</testOnBorrow>
<!-- 在return给pool时是否提前进行validate操作, 默认false -->
<testOnReturn>true</testOnReturn>
<!-- 表示有一个idle object evitor线程对idle object进行扫描如果validate失败
此object会被从pool中drop掉这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义, 默认true -->
<testWhileIdle>true</testWhileIdle>
<!-- 表示idle object evitor每次扫描的最多的对象数, 默认-1 -->
<numTestsPerEvictionRun>100</numTestsPerEvictionRun>
<!-- 表示一个对象至少停留在idle状态的最短时间然后才能被idle object evitor扫描并驱逐
这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义 , 默认60000-->
<minEvictableIdleTimeMillis>60000</minEvictableIdleTimeMillis>
<!-- 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认30000 -->
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
<!-- 在minEvictableIdleTimeMillis基础上加入了至少minIdle个对象已经在pool里面了。
如果为-1evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillisd大于0
则此项设置无意义且只有在timeBetweenEvictionRunsMillis大于0时才有意义默认1800000 -->
<softMinEvictableIdleTimeMillis>1800000</softMinEvictableIdleTimeMillis>
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<blockWhenExhausted>true</blockWhenExhausted>
</poolConfig>
<infos>
<info name="group1_db0" host="127.0.0.1" password="123456" port="6379" database="0" timeout="5000"/>
<info name="group1_db1" host="127.0.0.1" password="123456" port="6379" database="1" timeout="5000"/>
<info name="group1_db5" host="127.0.0.1" password="123456" port="6379" database="5" timeout="5000"/>
<info name="group1_db8" host="127.0.0.1" password="123456" port="6379" database="8" timeout="5000"/>
<info name="group1_db10" host="127.0.0.1" password="123456" port="6379" database="10" timeout="5000"/>
</infos>
</plugin>
</serivce-core>

View File

@ -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}

View File

@ -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

View File

@ -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 <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}

View File

@ -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}

View File

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<serivce-core>
<log4jPath>log4j.properties</log4jPath>
<plugin>
<id>database</id>
<class>com.taurus.core.plugin.database.DataBasePlugin</class>
<poolConfig>
<!-- 最大连接数, 默认10个 -->
<maxPool>100</maxPool>
<!-- 最小空闲连接数, 默认0个 -->
<minIdle>5</minIdle>
<!-- 配置获取连接等待超时的时间,单位是毫秒, 默认180000 -->
<maxLifetime>180000</maxLifetime>
<!--hsqldb - "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
Oracle - "select 1 from dual"
DB2 - "select 1 from sysibm.sysdummy1"
mysql - "select 1" -->
<validationQuery>select 1</validationQuery>
<!-- 连接超时时间,默认30000-->
<connectionTimeout>10000</connectionTimeout>
<!-- 待机超时时间,单位是毫秒, 默认60000 -->
<idleTimeout>60000</idleTimeout>
<!-- jdbc 属性 -->
<props>
<useSSL>false</useSSL>
<useUnicode>true</useUnicode>
<characterEncoding>utf-8</characterEncoding>
<!-- 服务器时区 -->
<serverTimezone>UTC</serverTimezone>
<!-- 预编译缓存 -->
<cachePrepStmts>true</cachePrepStmts>
<!-- 预编译缓存大小 -->
<prepStmtCacheSize>250</prepStmtCacheSize>
<!-- 控制长度多大的sql可以被缓存 -->
<prepStmtCacheSqlLimit>2048</prepStmtCacheSqlLimit>
</props>
</poolConfig>
<databases>
<db>
<name>db1</name>
<driverName>com.mysql.cj.jdbc.Driver</driverName>
<jdbcUrl>jdbc:mysql://192.168.0.11:6060/wb_game</jdbcUrl>
<userName>proto_ff</userName>
<password>37du_game</password>
</db>
</databases>
</plugin>
<plugin>
<id>redis</id>
<class>com.taurus.core.plugin.redis.RedisPlugin</class>
<poolConfig>
<!-- 最大连接数, 默认8个 -->
<maxTotal>80</maxTotal>
<!-- 最大空闲连接数, 默认8个 -->
<maxIdle>8</maxIdle>
<!-- 最小空闲连接数, 默认0个 -->
<minIdle>2</minIdle>
<!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
<maxWaitMillis>-1</maxWaitMillis>
<!-- 在borrow一个jedis实例时是否提前进行alidate操作, 默认false -->
<testOnBorrow>true</testOnBorrow>
<!-- 在return给pool时是否提前进行validate操作, 默认false -->
<testOnReturn>true</testOnReturn>
<!-- 表示有一个idle object evitor线程对idle object进行扫描如果validate失败
此object会被从pool中drop掉这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义, 默认true -->
<testWhileIdle>true</testWhileIdle>
<!-- 表示idle object evitor每次扫描的最多的对象数, 默认-1 -->
<numTestsPerEvictionRun>100</numTestsPerEvictionRun>
<!-- 表示一个对象至少停留在idle状态的最短时间然后才能被idle object evitor扫描并驱逐
这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义 , 默认60000-->
<minEvictableIdleTimeMillis>60000</minEvictableIdleTimeMillis>
<!-- 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认30000 -->
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
<!-- 在minEvictableIdleTimeMillis基础上加入了至少minIdle个对象已经在pool里面了。
如果为-1evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillisd大于0
则此项设置无意义且只有在timeBetweenEvictionRunsMillis大于0时才有意义默认1800000 -->
<softMinEvictableIdleTimeMillis>1800000</softMinEvictableIdleTimeMillis>
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<blockWhenExhausted>true</blockWhenExhausted>
</poolConfig>
<infos>
<info name="group1_db0" host="127.0.0.1" password="123456" port="6379" database="0" timeout="5000"/>
<info name="group1_db1" host="127.0.0.1" password="123456" port="6379" database="1" timeout="5000"/>
<info name="group1_db2" host="127.0.0.1" password="123456" port="6379" database="2" timeout="5000"/>
<info name="group1_db5" host="127.0.0.1" password="123456" port="6379" database="5" timeout="5000"/>
<info name="group1_db8" host="127.0.0.1" password="123456" port="6379" database="8" timeout="5000"/>
<info name="group1_db9" host="127.0.0.1" password="123456" port="6379" database="9" timeout="5000"/>
<info name="group1_db10" host="127.0.0.1" password="123456" port="6379" database="10" timeout="5000"/>
<info name="group1_db11" host="127.0.0.1" password="123456" port="6379" database="11" timeout="5000"/>
</infos>
</plugin>
</serivce-core>

View File

@ -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 <hp then
return 3
else
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
end
return {mgr_hp,tag_hp}

View File

@ -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}

View File

@ -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

View File

@ -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 <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}

View File

@ -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}

View File

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<serivce-core>
<log4jPath>log4j.properties</log4jPath>
<plugin>
<id>database</id>
<class>com.taurus.core.plugin.database.DataBasePlugin</class>
<poolConfig>
<!-- 最大连接数, 默认10个 -->
<maxPool>100</maxPool>
<!-- 最小空闲连接数, 默认0个 -->
<minIdle>1</minIdle>
<!-- 配置获取连接等待超时的时间,单位是毫秒, 默认180000 -->
<maxLifetime>180000</maxLifetime>
<!--hsqldb - "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
Oracle - "select 1 from dual"
DB2 - "select 1 from sysibm.sysdummy1"
mysql - "select 1" -->
<validationQuery>select 1</validationQuery>
<!-- 连接超时时间,默认30000-->
<connectionTimeout>10000</connectionTimeout>
<!-- 待机超时时间,单位是毫秒, 默认60000 -->
<idleTimeout>60000</idleTimeout>
<!-- jdbc 属性 -->
<props>
<useSSL>false</useSSL>
<useUnicode>true</useUnicode>
<characterEncoding>utf-8</characterEncoding>
<!-- 服务器时区 -->
<serverTimezone>UTC</serverTimezone>
<!-- 预编译缓存 -->
<cachePrepStmts>true</cachePrepStmts>
<!-- 预编译缓存大小 -->
<prepStmtCacheSize>250</prepStmtCacheSize>
<!-- 控制长度多大的sql可以被缓存 -->
<prepStmtCacheSqlLimit>2048</prepStmtCacheSqlLimit>
</props>
</poolConfig>
<databases>
<db>
<name>db1</name>
<driverName>com.mysql.cj.jdbc.Driver</driverName>
<jdbcUrl>jdbc:mysql://192.168.0.11:6060/wb_game</jdbcUrl>
<userName>proto_ff</userName>
<password>37du_game</password>
</db>
</databases>
</plugin>
<plugin>
<id>redis</id>
<class>com.taurus.core.plugin.redis.RedisPlugin</class>
<poolConfig>
<!-- 最大连接数, 默认8个 -->
<maxTotal>80</maxTotal>
<!-- 最大空闲连接数, 默认8个 -->
<maxIdle>8</maxIdle>
<!-- 最小空闲连接数, 默认0个 -->
<minIdle>2</minIdle>
<!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
<maxWaitMillis>-1</maxWaitMillis>
<!-- 在borrow一个jedis实例时是否提前进行alidate操作, 默认false -->
<testOnBorrow>true</testOnBorrow>
<!-- 在return给pool时是否提前进行validate操作, 默认false -->
<testOnReturn>true</testOnReturn>
<!-- 表示有一个idle object evitor线程对idle object进行扫描如果validate失败
此object会被从pool中drop掉这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义, 默认true -->
<testWhileIdle>true</testWhileIdle>
<!-- 表示idle object evitor每次扫描的最多的对象数, 默认-1 -->
<numTestsPerEvictionRun>100</numTestsPerEvictionRun>
<!-- 表示一个对象至少停留在idle状态的最短时间然后才能被idle object evitor扫描并驱逐
这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义 , 默认60000-->
<minEvictableIdleTimeMillis>60000</minEvictableIdleTimeMillis>
<!-- 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认30000 -->
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
<!-- 在minEvictableIdleTimeMillis基础上加入了至少minIdle个对象已经在pool里面了。
如果为-1evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillisd大于0
则此项设置无意义且只有在timeBetweenEvictionRunsMillis大于0时才有意义默认1800000 -->
<softMinEvictableIdleTimeMillis>1800000</softMinEvictableIdleTimeMillis>
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<blockWhenExhausted>true</blockWhenExhausted>
</poolConfig>
<infos>
<info name="group1_db0" host="127.0.0.1" password="123456" port="6379" database="0" timeout="5000"/>
<info name="group1_db1" host="127.0.0.1" password="123456" port="6379" database="1" timeout="5000"/>
<info name="group1_db2" host="127.0.0.1" password="123456" port="6379" database="2" timeout="5000"/>
<info name="group1_db5" host="127.0.0.1" password="123456" port="6379" database="5" timeout="5000"/>
<info name="group1_db8" host="127.0.0.1" password="123456" port="6379" database="8" timeout="5000"/>
<info name="group1_db9" host="127.0.0.1" password="123456" port="6379" database="9" timeout="5000"/>
<info name="group1_db10" host="127.0.0.1" password="123456" port="6379" database="10" timeout="5000"/>
<info name="group1_db11" host="127.0.0.1" password="123456" port="6379" database="11" timeout="5000"/>
</infos>
</plugin>
</serivce-core>

View File

@ -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 <hp then
return 3
else
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
end
return {mgr_hp,tag_hp}

View File

@ -0,0 +1,119 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.group</groupId>
<artifactId>web_group_robot</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<build.type>pro</build.type>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--依赖 data_cache -->
<dependency>
<groupId>com.data</groupId>
<artifactId>data_cache</artifactId>
<version>1.0.1</version>
</dependency>
<!--依赖 taurus-core -->
<dependency>
<groupId>com.taurus</groupId>
<artifactId>taurus-core</artifactId>
<version>1.0.1</version>
</dependency>
<!--依赖 taurus-web -->
<dependency>
<groupId>com.taurus</groupId>
<artifactId>taurus-web</artifactId>
<version>1.0.1</version>
</dependency>
<!-- 需要用redis时导入 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!-- 需要用HikariCP时导入 ,自己在项目中添加 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.3.1</version>
</dependency>
<!-- 需要用mysql时导入 ,自己在项目中添加 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!-- https://mvnrepository.com/artifact/jdom/jdom -->
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-webapp -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>8.2.0.v20160908</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>ROOT</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<warSourceExcludes>logs/**,config/**</warSourceExcludes>
<webResources>
<resource>
<targetPath>config/</targetPath>
<directory>${project.basedir}/build/${build.type}/</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -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<String,String> 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();
}
}
}

View File

@ -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";
}

View File

@ -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);
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -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<Integer> 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<Integer> 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<Integer> 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);
}
}

View File

@ -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);
}
}

View File

@ -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<String> 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<String> 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<String> 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<String, String> mapString = Redis.use("group1_db1").hgetAll("gods_special");
if (mapString == null)
return;
for (Map.Entry<String, String> 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<String> 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<String> 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<String> 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<String, String> roomMap = new HashMap<String, String>();
/**
* 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<Integer> 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<String, String> redis_room_map, int maxPlayers) {
Map<Integer, Integer> playerMapBySeat = new HashMap<Integer, Integer>();
for(int i = 1; i <= maxPlayers; i++)
{
playerMapBySeat.put(i, getRobot(maxPlayers));
}
Iterator<Map.Entry<Integer, Integer>> it = playerMapBySeat.entrySet().iterator();
List<Integer> seat_list = new ArrayList<>();
List<Integer> player_list = new ArrayList<>();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) 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<String> 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<String> 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<String> nameList = new ArrayList<>();
ArrayList<String> 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<String, String> map = new HashMap<String, String>();
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: 20191215
* @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<String> nickList, ArrayList<String> headList) throws Exception {
int count = 0;
long id = 0;
ArrayList<String> 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;
}
}

View File

@ -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<Integer> 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<String, String> redis_room_map, int maxPlayers) {
Map<Integer, Integer> playerMapBySeat = new HashMap<Integer, Integer>();
for(int i = 1; i <= maxPlayers; i++)
{
playerMapBySeat.put(i, getRobot(maxPlayers));
}
Iterator<Map.Entry<Integer, Integer>> it = playerMapBySeat.entrySet().iterator();
List<Integer> seat_list = new ArrayList<>();
List<Integer> player_list = new ArrayList<>();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) 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<String> 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<String> 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<String> rooms = js11.zrevrangeByScore(grooms_key, max_value, min_value);
long sttime = System.currentTimeMillis() / 1000;
for (String room : rooms) {
List<String> 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<String> pids = js11.keys("g{426149}:play:*");
List<Integer> 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<Integer> 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<String,String> 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<String> 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<String> 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<String, String> roomMap = new HashMap<String, String>();
/**
* 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<Integer> seat_list = new ArrayList<>();
List<Integer> 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<String> nameList = new ArrayList<>();
ArrayList<String> 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<String, String> map = new HashMap<String, String>();
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: 20191215
* @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<String> nickList, ArrayList<String> headList) throws Exception {
int count = 0;
long id = 0;
ArrayList<String> 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;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -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());
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,220 @@
package com.group.service;
import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TObject;
import com.taurus.core.util.*;
import com.group.service.TaurusClient.ConnectionProtocol;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.HttpURLConnection;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.util.LinkedList;
import java.util.Queue;
/**
* Http?
* @author daixiwei daixiwei15@126.com
*
*/
public class HttpClient implements ISocketLayer {
private static final Logger logger = Logger.getLogger(HttpClient.class);
private static final byte[] NULL_BYTES = new byte[0];
private static final String _Method = "POST";
private static final String _ContentTypeName = "Content-Type";
private static final String _ContentType = "application/octet-stream";
private static final String _Result = "$r";
private static final String _Param = "$p";
private static final String _Session = "$s";
private static final String _Version = "$v";
String _url;
String _session_id = "";
final Queue<Runnable> _actionQueue = new LinkedList<Runnable>();
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<SocketCode> onConnect) {
}
@Override
public void setOnEvent(ICallback<Message> onEvent) {
}
@Override
public ConnectionProtocol getProtocol() {
return ConnectionProtocol.Web;
}
}

View File

@ -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<SocketCode> onConnect);
/**
* E
*/
public void setOnEvent(ICallback<Message> onEvent);
/**
*
*/
public int getAveragePingTime();
/**
* Session
*/
public String getSession();
/**
* Session
* @param session
*/
public void setSession(String session);
}

View File

@ -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<MessageResponse> callback;
/**
*
*/
public Object data;
/**
*
*/
public long lastTime;
/**
* GID
*/
public int gid;
}

View File

@ -0,0 +1,17 @@
package com.group.service;
/**
*
* @author daixiwei daixiwei15@126.com
*
*/
public class MessageResponse {
/**
*
*/
public Message messageData;
/**
* ?
*/
public int returnCode;
}

View File

@ -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<TaurusClient> _clientList = new ArrayList<TaurusClient>();
private static Map<Integer, TaurusClient> _clientMap = new HashMap<Integer, TaurusClient>();
/**
*
*/
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();
}
}
}

View File

@ -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
}

View File

@ -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<Message, ICallback<MessageResponse>> _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<Message, ICallback<MessageResponse>>();
_id = _getValidID();
NetManager.addNetClient(this);
_currentIp = host;
_gameId = game;
_threadManager = new ThreadManager();
_threadManager.start();
_scoket = socket;
_scoket.setOnConnect(new ICallback<SocketCode>() {
@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<Message>() {
@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<MessageResponse>() {
@Override
public void action(MessageResponse response) {
ICallback<MessageResponse> 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<Message>() {
@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<MessageResponse> 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<MessageResponse> 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";
}
}

View File

@ -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<Message> _dataDelegate;
public Message _message;
}
private boolean _running = false;
private Thread _outThread;
private boolean _outHasQueuedItems = false;
private Queue<MessgaeThread> _outThreadQueue = new LinkedList<MessgaeThread>();
private Object _outQueueLocker = new Object();
private Stack<MessgaeThread> pool = new Stack<MessgaeThread>();
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<Message> _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<Message> callback, Message message) {
MessgaeThread hashtable = MessgaeThreadGet();
hashtable._dataDelegate = callback;
hashtable._message = message;
Object obj = _outQueueLocker;
synchronized (obj) {
_outThreadQueue.offer(hashtable);
_outHasQueuedItems = true;
}
}
}

View File

@ -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;
/**
*
*
* @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
}
}

View File

@ -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;
}
}

View File

@ -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<Long> _valueQueue;
private Queue<Long> write_queue = new LinkedList<Long>();
public LagMonitor(SocketEngine engine, int interval, int queueSize) {
if (interval < 1) {
interval = 1;
}
_engine = engine;
_valueQueue = new ArrayList<Long>();
_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);
}
}
}

View File

@ -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;
}

View File

@ -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<SocketCode> _onConnect;
ICallback<Message> _onEvent;
private Queue<Runnable> _actionQueue = new LinkedList<Runnable>();
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<SocketCode> onConnect) {
_onConnect = onConnect;
}
@Override
public void setOnEvent(ICallback<Message> onEvent) {
_onEvent = onEvent;
}
public int getProtocolCompression() {
return 100;
}
}

View File

@ -0,0 +1,13 @@
package com.group.service.io;
/**
* ?
* @author daixiwei daixiwei15@126.com
*
*/
public enum SocketState{
Disconnected,
Connecting,
Connected,
Disconnecting
}

View File

@ -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);
}
}

View File

@ -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<Message> _handleList = new ArrayList<Message>();
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();
}
}

View File

@ -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;
}
}

View File

@ -0,0 +1,19 @@
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<filter>
<filter-name>taurus-web</filter-name>
<filter-class>com.taurus.web.WebFilter</filter-class>
<init-param>
<param-name>main</param-name>
<param-value>com.group.MainServer</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>taurus-web</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

View File

@ -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}

View File

@ -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

View File

@ -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}

View File

@ -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}

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<serivce-core>
<log4jPath>log4j.properties</log4jPath>
<plugin>
<id>database</id>
<class>com.taurus.core.plugin.database.DataBasePlugin</class>
<poolConfig>
<!-- 最大连接数, 默认10个 -->
<maxPool>100</maxPool>
<!-- 最小空闲连接数, 默认0个 -->
<minIdle>10</minIdle>
<!-- 配置获取连接等待超时的时间,单位是毫秒, 默认180000 -->
<maxLifetime>180000</maxLifetime>
<!--hsqldb - "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
Oracle - "select 1 from dual"
DB2 - "select 1 from sysibm.sysdummy1"
mysql - "select 1" -->
<validationQuery>select 1</validationQuery>
<!-- 连接超时时间,默认30000-->
<connectionTimeout>10000</connectionTimeout>
<!-- 待机超时时间,单位是毫秒, 默认60000 -->
<idleTimeout>60000</idleTimeout>
<!-- jdbc 属性 -->
<props>
<useSSL>false</useSSL>
<useUnicode>true</useUnicode>
<characterEncoding>utf-8</characterEncoding>
<!-- 服务器时区 -->
<serverTimezone>UTC</serverTimezone>
<!-- 预编译缓存 -->
<cachePrepStmts>true</cachePrepStmts>
<!-- 预编译缓存大小 -->
<prepStmtCacheSize>250</prepStmtCacheSize>
<!-- 控制长度多大的sql可以被缓存 -->
<prepStmtCacheSqlLimit>2048</prepStmtCacheSqlLimit>
</props>
</poolConfig>
<databases>
<db>
<name>db1</name>
<driverName>com.mysql.cj.jdbc.Driver</driverName>
<jdbcUrl>jdbc:mysql://47.109.55.7:8060/wb_game</jdbcUrl>
<userName>root</userName>
<password>6KYnXJjGhxNceF8e</password>
</db>
</databases>
</plugin>
<plugin>
<id>redis</id>
<class>com.taurus.core.plugin.redis.RedisPlugin</class>
<poolConfig>
<!-- 最大连接数, 默认8个 -->
<maxTotal>80</maxTotal>
<!-- 最大空闲连接数, 默认8个 -->
<maxIdle>20</maxIdle>
<!-- 最小空闲连接数, 默认0个 -->
<minIdle>5</minIdle>
<!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
<maxWaitMillis>-1</maxWaitMillis>
<!-- 在borrow一个jedis实例时是否提前进行alidate操作, 默认false -->
<testOnBorrow>true</testOnBorrow>
<!-- 在return给pool时是否提前进行validate操作, 默认false -->
<testOnReturn>true</testOnReturn>
<!-- 表示有一个idle object evitor线程对idle object进行扫描如果validate失败
此object会被从pool中drop掉这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义, 默认true -->
<testWhileIdle>true</testWhileIdle>
<!-- 表示idle object evitor每次扫描的最多的对象数, 默认-1 -->
<numTestsPerEvictionRun>100</numTestsPerEvictionRun>
<!-- 表示一个对象至少停留在idle状态的最短时间然后才能被idle object evitor扫描并驱逐
这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义 , 默认60000-->
<minEvictableIdleTimeMillis>60000</minEvictableIdleTimeMillis>
<!-- 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认30000 -->
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
<!-- 在minEvictableIdleTimeMillis基础上加入了至少minIdle个对象已经在pool里面了。
如果为-1evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillisd大于0
则此项设置无意义且只有在timeBetweenEvictionRunsMillis大于0时才有意义默认1800000 -->
<softMinEvictableIdleTimeMillis>1800000</softMinEvictableIdleTimeMillis>
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<blockWhenExhausted>true</blockWhenExhausted>
</poolConfig>
<infos>
<info name="group1_db0" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="0" timeout="5000"/>
<info name="group1_db1" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="1" timeout="5000"/>
<info name="group1_db2" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="2" timeout="5000"/>
<info name="group1_db5" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="5" timeout="5000"/>
<info name="group1_db8" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="8" timeout="5000"/>
<info name="group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="9" timeout="5000"/>
<info name="group1_db10" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="10" timeout="5000"/>
<info name="group1_db11" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="11" timeout="5000"/>
<info name="tmp_group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="654sads" port="6479" database="9" timeout="5000"/>
</infos>
</plugin>
</serivce-core>

View File

@ -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 <hp then
return 3
else
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
end
return {mgr_hp,tag_hp}

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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.<init>(URL.java:610)
at java.net.URL.<init>(URL.java:507)
at java.net.URL.<init>(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!

View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern</Arg>
<Arg>.*/.*jsp-api-[^/]\.jar$|./.*jsp-[^/]\.jar$|./.*taglibs[^/]*\.jar$
</Arg>
</Call>
</Configure>

View File

@ -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<String,String> 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<String> 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<String,String> 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<String> 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<String,String> 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<String> 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();
}
}
}

View File

@ -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();
}
}

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More