wuheng 1 year ago
parent
commit
1717a5910a

+ 6 - 11
pom.xml

@@ -8,9 +8,9 @@
     <name>gobang-api</name>
     <description>gobang-api</description>
     <properties>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
-        <java.version>11</java.version>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <java.version>1.8</java.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <spring-boot.version>2.7.6</spring-boot.version>
@@ -44,11 +44,6 @@
             <scope>test</scope>
         </dependency>
 
-        <dependency>
-            <groupId>com.hexadevlabs</groupId>
-            <artifactId>gpt4all-java-binding</artifactId>
-            <version>1.1.3</version>
-        </dependency>
     </dependencies>
     <dependencyManagement>
         <dependencies>
@@ -69,8 +64,8 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.8.1</version>
                 <configuration>
-                    <source>11</source>
-                    <target>11</target>
+                    <source>1.8</source>
+                    <target>1.8</target>
                     <encoding>UTF-8</encoding>
                 </configuration>
             </plugin>
@@ -80,7 +75,7 @@
                 <version>${spring-boot.version}</version>
                 <configuration>
                     <mainClass>com.example.gobangapi.GobangApiApplication</mainClass>
-                    <skip>true</skip>
+                    <skip>false</skip>
                 </configuration>
                 <executions>
                     <execution>

+ 3 - 0
src/META-INF/MANIFEST.MF

@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: com.example.gobangapi.GobangApiApplication
+

+ 1 - 0
src/main/java/com/example/gobangapi/config/Constant.java

@@ -5,4 +5,5 @@ public class Constant {
     public static final String ROOM = "room";
     public static final String BEGIN = "begin";
     public static final String POINT = "point";
+    public static final String WIN = "win";
 }

+ 5 - 0
src/main/java/com/example/gobangapi/config/RefreshDataConfig.java

@@ -19,4 +19,9 @@ public class RefreshDataConfig {
     public void hall(){
         GoBangUtils.sendHallData();
     }
+
+    @Scheduled(cron = "0/1 * * * * ?")
+    public void clear(){
+        GoBangUtils.clearDisconnectUser();
+    }
 }

+ 1 - 0
src/main/java/com/example/gobangapi/doman/GameMessage.java

@@ -8,4 +8,5 @@ public class GameMessage {
     CheckerBoardData data;
     GobangRoomItem room;
     int roomId;
+    String winUser;
 }

+ 1 - 0
src/main/java/com/example/gobangapi/doman/GobangRoomItem.java

@@ -17,6 +17,7 @@ public class GobangRoomItem {
     String whiteUsername = "";
     String backSessionId = null;
     String whiteSessionId = null;
+    String winUsername = "";
     CheckerBoardData data = new CheckerBoardData();
     ArrayList<String> sid = new ArrayList<>();
 }

+ 26 - 6
src/main/java/com/example/gobangapi/utils/GoBangUtils.java

@@ -50,6 +50,8 @@ public class GoBangUtils {
      * @param session
      */
     public static void close( Session session ){
+        roompop(session);
+        hallpop(session);
         for (String key : userList.keySet()) {
             if ( userList.get(key).getSession().equals(session.getId()) ) {
                 try {
@@ -102,21 +104,18 @@ public class GoBangUtils {
                 GobangRoomItem beginRoom = getRoom(user.getRoomId());
                 if ( (beginRoom.getBackSessionId().equals(session.getId()) ||
                         beginRoom.getWhiteSessionId().equals(session.getId())) ) {
-
                     if ( beginRoom.getBackSessionId().equals(session.getId()) ) {
                         beginRoom.setBackState(2);
                     } else if ( beginRoom.getWhiteSessionId().equals(session.getId()) ) {
                         beginRoom.setWhiteState(2);
                     }
-
                     if ( beginRoom.getBackState() == 2 && beginRoom.getWhiteState() == 2 ) {
                         if ( !beginRoom.getStatus().equals(1) ) {
                             beginRoom.setStatus(1);
                         }
                     }
-
                     beginRoom.setData(revMessage.getData() );
-
+                    beginRoom.setWinUsername("");
                 }
                 break;
             case Constant.POINT:
@@ -137,6 +136,14 @@ public class GoBangUtils {
                     }
                 }
                 break;
+            case Constant.WIN:
+                UserListItem winUser = getUser(session);
+                GobangRoomItem winRoom = getRoom(winUser.getRoomId());
+                winRoom.setStatus(0);
+                winRoom.setWhiteState(1);
+                winRoom.setBackState(1);
+                winRoom.setWinUsername( revMessage.getWinUser() );
+                break;
         }
     }
 
@@ -144,7 +151,7 @@ public class GoBangUtils {
      * 进入房间
      * @param session
      */
-    public static void roompush(Session session, int roomId){
+    private static void roompush(Session session, int roomId){
         GobangRoomItem room = getRoom(roomId);
         if ( Objects.isNull(room) ) {
             System.out.println( "错误数据查不到房间:" + roomId );
@@ -179,7 +186,7 @@ public class GoBangUtils {
      * 进入大厅
      * @param session
      */
-    public static void hallpush(Session session){
+    private static void hallpush(Session session){
         hall.put(session.getId(), (new Date()).toString());
         UserListItem user = getUser(session);
         roompop(session);
@@ -315,4 +322,17 @@ public class GoBangUtils {
         }
         return null;
     }
+
+    /**
+     * 清理断线用户
+     */
+    public static void clearDisconnectUser() {
+        for (String key:  userList.keySet()) {
+            if (!userList.get(key).getSession().isOpen()) {
+                roompop(userList.get(key).getSession());
+                hallpop(userList.get(key).getSession());
+                userList.remove(key);
+            }
+        }
+    }
 }

+ 2 - 49
src/test/java/com/example/gobangapi/GobangApiApplicationTests.java

@@ -1,61 +1,14 @@
 package com.example.gobangapi;
 
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-
-import com.example.gobangapi.doman.GobangRoomItem;
-import com.hexadevlabs.gpt4all.LLModel;
 import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
 
-//@SpringBootTest
+@SpringBootTest
 class GobangApiApplicationTests {
 
     @Test
     void contextLoads() {
 
-        //String prompt = "### Human:\nWhat is the meaning of life\n### Assistant:";
-        String prompt = "Hello";
-        String modelFilePath = "C:\\baidunetdiskdownload\\ggml-gpt4all-j-v1.3-groovy.bin";
-        //String modelFilePath = "C:\\baidunetdiskdownload\\ggml-guanaco-65B_q4.bin";
-
-        try (LLModel model = new LLModel(Path.of(modelFilePath))) {
-
-            LLModel.GenerationConfig config = LLModel.config()
-                    .withNPredict(4096).build();
-            String fullGeneration = model.generate(prompt, config, true);
-            System.out.println( "fullGeneration :" + fullGeneration );
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-    }
-
-    ConcurrentHashMap<String, ArrayList<String>> map = new ConcurrentHashMap();
-
-    ArrayList<String> list1 =  new ArrayList<>( Arrays.asList(new String[]{"1", "2", "3", "4", "5"}) );
-    ArrayList<String> list2 =  new ArrayList<>( Arrays.asList(new String[]{"6", "7", "8", "9", "0"}) );
-    ArrayList<String> list3 =  new ArrayList<>( Arrays.asList(new String[]{"11", "12", "13", "14", "15"}) );
-
-    @Test
-    void t(){
-
-
-        map.put("a", list1);
-        map.put("b", list2);
-        map.put("c", list3);
-
-        for (String key : map.keySet()) {
-            ArrayList<String> item = map.get(key);
-            for (String id : item) {
-                if (id.equals("3")) {
-                    item.remove("5");
-                    System.out.println(map);
-                }
-            }
-        }
 
     }