From 371e68cfdd4cf08b88638aaf05ecece9aa122ec9 Mon Sep 17 00:00:00 2001
From: dyh <2825183872@qq.com>
Date: Thu, 25 Aug 2022 05:19:41 +0800
Subject: [PATCH] =?UTF-8?q?version-2.3[=E5=AE=9E=E7=8E=B0=E8=BF=9E?=
=?UTF-8?q?=E4=B8=AASpringBoot=E9=97=B4=E7=9A=84=E9=80=9A=E4=BF=A1?=
=?UTF-8?q?=EF=BC=88=E5=B0=86=E5=8C=B9=E9=85=8D=E7=B3=BB=E7=BB=9F=E6=94=BE?=
=?UTF-8?q?=E5=9C=A8=E5=BE=AE=E6=9C=8D=E5=8A=A1=E6=A8=A1=E5=9D=97=EF=BC=89?=
=?UTF-8?q?]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
{backend => backendcloud}/.gitignore | 0
.../.mvn/wrapper/MavenWrapperDownloader.java | 0
.../.mvn/wrapper/maven-wrapper.jar | Bin
.../.mvn/wrapper/maven-wrapper.properties | 0
{backend => backendcloud}/README.md | 0
{backend => backendcloud/backend}/pom.xml | 67 ++--------
.../com/kob/backend/BackendApplication.java | 0
.../com/kob/backend/config/CorsConfig.java | 0
.../backend/config/RestTemplateConfig.java | 13 ++
.../kob/backend/config/SecurityConfig.java | 1 +
.../kob/backend/config/WebSocketConfig.java | 0
.../filter/JwtAuthenticationTokenFilter.java | 0
.../kob/backend/consumer/WebSocketServer.java | 103 +++++++++-------
.../com/kob/backend/consumer/utils/Cell.java | 0
.../com/kob/backend/consumer/utils/Game.java | 6 +-
.../consumer/utils/JwtAuthentication.java | 0
.../kob/backend/consumer/utils/Player.java | 0
.../controller/pk/BotInfoController.java | 0
.../controller/pk/IndexController.java | 0
.../controller/pk/StartGameController.java | 23 ++++
.../user/account/InfoController.java | 0
.../user/account/LoginController.java | 0
.../user/account/RegisterController.java | 0
.../controller/user/bot/AddController.java | 0
.../user/bot/GetListController.java | 0
.../controller/user/bot/RemoveController.java | 0
.../controller/user/bot/UpdateController.java | 0
.../com/kob/backend/mapper/BotMapper.java | 0
.../com/kob/backend/mapper/RecordMapper.java | 0
.../com/kob/backend/mapper/UserMapper.java | 0
.../main/java/com/kob/backend/pojo/Bot.java | 1 -
.../java/com/kob/backend/pojo/Record.java | 0
.../main/java/com/kob/backend/pojo/User.java | 1 +
.../service/impl/UserDetailsServiceImpl.java | 0
.../service/impl/bot/AddServiceImpl.java | 2 +-
.../service/impl/bot/GetListServiceImpl.java | 0
.../service/impl/bot/RemoveServiceImpl.java | 0
.../service/impl/bot/UpdateServiceImpl.java | 1 -
.../service/impl/pk/StartGameServiceImpl.java | 15 +++
.../impl/user/account/InfoServiceImpl.java | 0
.../impl/user/account/LoginServiceImpl.java | 0
.../user/account/RegisterServiceImpl.java | 2 +-
.../service/impl/utils/UserDetailsImpl.java | 0
.../backend/service/pk/StartGameService.java | 5 +
.../service/user/account/InfoService.java | 0
.../service/user/account/LoginService.java | 0
.../service/user/account/RegisterService.java | 0
.../backend/service/user/bot/AddService.java | 0
.../service/user/bot/GetListService.java | 0
.../service/user/bot/RemoveService.java | 0
.../service/user/bot/UpdateService.java | 0
.../java/com/kob/backend/utils/JwtUtil.java | 0
.../src/main/resources/application.properties | 0
.../src/main/resources/static/image/icon.png | Bin
.../main/resources/templates/pk/index.html | 0
.../kob/backend/BackendApplicationTests.java | 0
backendcloud/matchingsystem/Copy.txt | 94 ++++++++++++++
backendcloud/matchingsystem/pom.xml | 64 ++++++++++
.../MatchingSystemApplication.java | 13 ++
.../config/RestTemplateConfig.java | 13 ++
.../matchingsystem/config/SecurityConfig.java | 23 ++++
.../controller/MatchingController.java | 31 +++++
.../service/MatchingService.java | 6 +
.../service/impl/MatchingServiceImpl.java | 26 ++++
.../service/impl/utils/MatchingPool.java | 115 ++++++++++++++++++
.../service/impl/utils/Player.java | 14 +++
.../src/main/resources/application.properties | 1 +
{backend => backendcloud}/mvnw | 0
{backend => backendcloud}/mvnw.cmd | 0
backendcloud/pom.xml | 95 +++++++++++++++
70 files changed, 632 insertions(+), 103 deletions(-)
rename {backend => backendcloud}/.gitignore (100%)
rename {backend => backendcloud}/.mvn/wrapper/MavenWrapperDownloader.java (100%)
rename {backend => backendcloud}/.mvn/wrapper/maven-wrapper.jar (100%)
rename {backend => backendcloud}/.mvn/wrapper/maven-wrapper.properties (100%)
rename {backend => backendcloud}/README.md (100%)
rename {backend => backendcloud/backend}/pom.xml (65%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/BackendApplication.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/config/CorsConfig.java (100%)
create mode 100644 backendcloud/backend/src/main/java/com/kob/backend/config/RestTemplateConfig.java
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/config/SecurityConfig.java (94%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/config/WebSocketConfig.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/config/filter/JwtAuthenticationTokenFilter.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/consumer/WebSocketServer.java (60%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/consumer/utils/Cell.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/consumer/utils/Game.java (93%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/consumer/utils/JwtAuthentication.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/consumer/utils/Player.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/pk/BotInfoController.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/pk/IndexController.java (100%)
create mode 100644 backendcloud/backend/src/main/java/com/kob/backend/controller/pk/StartGameController.java
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/user/account/InfoController.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/user/account/LoginController.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/user/account/RegisterController.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/user/bot/AddController.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/user/bot/GetListController.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/user/bot/RemoveController.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/controller/user/bot/UpdateController.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/mapper/BotMapper.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/mapper/RecordMapper.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/mapper/UserMapper.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/pojo/Bot.java (93%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/pojo/Record.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/pojo/User.java (94%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/UserDetailsServiceImpl.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/bot/AddServiceImpl.java (96%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/bot/GetListServiceImpl.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/bot/RemoveServiceImpl.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/bot/UpdateServiceImpl.java (95%)
create mode 100644 backendcloud/backend/src/main/java/com/kob/backend/service/impl/pk/StartGameServiceImpl.java
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/user/account/InfoServiceImpl.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/user/account/LoginServiceImpl.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/user/account/RegisterServiceImpl.java (96%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/impl/utils/UserDetailsImpl.java (100%)
create mode 100644 backendcloud/backend/src/main/java/com/kob/backend/service/pk/StartGameService.java
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/user/account/InfoService.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/user/account/LoginService.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/user/account/RegisterService.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/user/bot/AddService.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/user/bot/GetListService.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/user/bot/RemoveService.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/service/user/bot/UpdateService.java (100%)
rename {backend => backendcloud/backend}/src/main/java/com/kob/backend/utils/JwtUtil.java (100%)
rename {backend => backendcloud/backend}/src/main/resources/application.properties (100%)
rename {backend => backendcloud/backend}/src/main/resources/static/image/icon.png (100%)
rename {backend => backendcloud/backend}/src/main/resources/templates/pk/index.html (100%)
rename {backend => backendcloud/backend}/src/test/java/com/kob/backend/BackendApplicationTests.java (100%)
create mode 100644 backendcloud/matchingsystem/Copy.txt
create mode 100644 backendcloud/matchingsystem/pom.xml
create mode 100644 backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/MatchingSystemApplication.java
create mode 100644 backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/config/RestTemplateConfig.java
create mode 100644 backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/config/SecurityConfig.java
create mode 100644 backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/controller/MatchingController.java
create mode 100644 backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/MatchingService.java
create mode 100644 backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/MatchingServiceImpl.java
create mode 100644 backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/utils/MatchingPool.java
create mode 100644 backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/utils/Player.java
create mode 100644 backendcloud/matchingsystem/src/main/resources/application.properties
rename {backend => backendcloud}/mvnw (100%)
rename {backend => backendcloud}/mvnw.cmd (100%)
create mode 100644 backendcloud/pom.xml
diff --git a/backend/.gitignore b/backendcloud/.gitignore
similarity index 100%
rename from backend/.gitignore
rename to backendcloud/.gitignore
diff --git a/backend/.mvn/wrapper/MavenWrapperDownloader.java b/backendcloud/.mvn/wrapper/MavenWrapperDownloader.java
similarity index 100%
rename from backend/.mvn/wrapper/MavenWrapperDownloader.java
rename to backendcloud/.mvn/wrapper/MavenWrapperDownloader.java
diff --git a/backend/.mvn/wrapper/maven-wrapper.jar b/backendcloud/.mvn/wrapper/maven-wrapper.jar
similarity index 100%
rename from backend/.mvn/wrapper/maven-wrapper.jar
rename to backendcloud/.mvn/wrapper/maven-wrapper.jar
diff --git a/backend/.mvn/wrapper/maven-wrapper.properties b/backendcloud/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from backend/.mvn/wrapper/maven-wrapper.properties
rename to backendcloud/.mvn/wrapper/maven-wrapper.properties
diff --git a/backend/README.md b/backendcloud/README.md
similarity index 100%
rename from backend/README.md
rename to backendcloud/README.md
diff --git a/backend/pom.xml b/backendcloud/backend/pom.xml
similarity index 65%
rename from backend/pom.xml
rename to backendcloud/backend/pom.xml
index 7e762de..8e279b2 100644
--- a/backend/pom.xml
+++ b/backendcloud/backend/pom.xml
@@ -1,20 +1,22 @@
-
+
+
+ backendcloud
+ com.kob
+ 0.0.1-SNAPSHOT
+
4.0.0
- com.kob
+
backend
- 0.0.1-SNAPSHOT
- backend
- backend
- 1.8
- UTF-8
- UTF-8
- 2.3.7.RELEASE
+ 8
+ 8
+
@@ -128,47 +130,4 @@
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.8.1
-
- 1.8
- 1.8
- UTF-8
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- 2.3.7.RELEASE
-
- com.kob.backend.BackendApplication
-
-
-
- repackage
-
- repackage
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/backend/src/main/java/com/kob/backend/BackendApplication.java b/backendcloud/backend/src/main/java/com/kob/backend/BackendApplication.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/BackendApplication.java
rename to backendcloud/backend/src/main/java/com/kob/backend/BackendApplication.java
diff --git a/backend/src/main/java/com/kob/backend/config/CorsConfig.java b/backendcloud/backend/src/main/java/com/kob/backend/config/CorsConfig.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/config/CorsConfig.java
rename to backendcloud/backend/src/main/java/com/kob/backend/config/CorsConfig.java
diff --git a/backendcloud/backend/src/main/java/com/kob/backend/config/RestTemplateConfig.java b/backendcloud/backend/src/main/java/com/kob/backend/config/RestTemplateConfig.java
new file mode 100644
index 0000000..2b7b04f
--- /dev/null
+++ b/backendcloud/backend/src/main/java/com/kob/backend/config/RestTemplateConfig.java
@@ -0,0 +1,13 @@
+package com.kob.backend.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+ @Bean
+ public RestTemplate getRestTemplate(){
+ return new RestTemplate();
+ }
+}
diff --git a/backend/src/main/java/com/kob/backend/config/SecurityConfig.java b/backendcloud/backend/src/main/java/com/kob/backend/config/SecurityConfig.java
similarity index 94%
rename from backend/src/main/java/com/kob/backend/config/SecurityConfig.java
rename to backendcloud/backend/src/main/java/com/kob/backend/config/SecurityConfig.java
index 5ce4c61..b2ef9ce 100644
--- a/backend/src/main/java/com/kob/backend/config/SecurityConfig.java
+++ b/backendcloud/backend/src/main/java/com/kob/backend/config/SecurityConfig.java
@@ -41,6 +41,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.and()
.authorizeRequests()
.antMatchers("/user/account/token/", "/user/account/register/").permitAll()
+ .antMatchers("/pk/start/game/").hasIpAddress("127.0.0.1")
.antMatchers(HttpMethod.OPTIONS).permitAll()
.anyRequest().authenticated();
diff --git a/backend/src/main/java/com/kob/backend/config/WebSocketConfig.java b/backendcloud/backend/src/main/java/com/kob/backend/config/WebSocketConfig.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/config/WebSocketConfig.java
rename to backendcloud/backend/src/main/java/com/kob/backend/config/WebSocketConfig.java
diff --git a/backend/src/main/java/com/kob/backend/config/filter/JwtAuthenticationTokenFilter.java b/backendcloud/backend/src/main/java/com/kob/backend/config/filter/JwtAuthenticationTokenFilter.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/config/filter/JwtAuthenticationTokenFilter.java
rename to backendcloud/backend/src/main/java/com/kob/backend/config/filter/JwtAuthenticationTokenFilter.java
diff --git a/backend/src/main/java/com/kob/backend/consumer/WebSocketServer.java b/backendcloud/backend/src/main/java/com/kob/backend/consumer/WebSocketServer.java
similarity index 60%
rename from backend/src/main/java/com/kob/backend/consumer/WebSocketServer.java
rename to backendcloud/backend/src/main/java/com/kob/backend/consumer/WebSocketServer.java
index 47c5d01..36e27d4 100644
--- a/backend/src/main/java/com/kob/backend/consumer/WebSocketServer.java
+++ b/backendcloud/backend/src/main/java/com/kob/backend/consumer/WebSocketServer.java
@@ -9,6 +9,10 @@ import com.kob.backend.mapper.UserMapper;
import com.kob.backend.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
@@ -24,8 +28,6 @@ public class WebSocketServer {
//它会锁住一小部分,其他部分的读写不受影响,其他线程访问没上锁的地方不会被阻塞。
//(userId,WebSocketServer实例:连接)
public final static ConcurrentHashMap users = new ConcurrentHashMap<>();
- //匹配池
- final private static CopyOnWriteArraySet matchpool = new CopyOnWriteArraySet<>();
//当前用户
private User user ;
//session维护(存)链接
@@ -35,13 +37,18 @@ public class WebSocketServer {
//加入数据库
private static UserMapper userMapper;
public static RecordMapper recordMapper;
+ private static RestTemplate restTemplate;
@Autowired
public void setUserMapper(UserMapper userMapper){
WebSocketServer.userMapper = userMapper;
}
@Autowired
public void setRecordMapper(RecordMapper recordMapper) { WebSocketServer.recordMapper = recordMapper;}
+ @Autowired
+ public void setRestTemplate(RestTemplate restTemplate){ WebSocketServer.restTemplate = restTemplate ;}
+ private static final String addPlayerUrl = "http://127.0.0.1:3001/player/add/";
+ private static final String removePlayerUrl = "http://127.0.0.1:3001/player/remove/";
@OnOpen
public void onOpen(Session session, @PathParam("token") String token) throws IOException//token是前端url里的参数
@@ -66,57 +73,67 @@ public class WebSocketServer {
System.out.println("disconnexted!");
if(this.user != null){
users.remove(this.user.getId());
- matchpool.remove(this.user);
}
}
- //前端点击 开始匹配 触发
- private void startMatching(){
- System.out.println("start matching!");
- matchpool.add(this.user);
-
- while(matchpool.size() >= 2) {
- Iterator it = matchpool.iterator();//迭代器
- User a = it.next(), b = it.next();
- matchpool.remove(a);
- matchpool.remove(b);
-
- //一局游戏的线程
- Game game =new Game(13,14,20,a.getId(),b.getId());
- game.createMap();
- //a,b共同的地图==>将地图赋给a,b对应的连接
+
+ //封装向前端传地图,操作等信息(匹配成功后调用)
+ public static void startGame(Integer aId,Integer bId){
+
+ User a =userMapper.selectById(aId),b = userMapper.selectById(bId);
+
+ //一局游戏的线程
+ Game game =new Game(13,14,20,a.getId(),b.getId());
+ game.createMap();
+ //a,b共同的地图==>将地图赋给a,b对应的连接
+ if(users.get(a.getId()) != null)
users.get(a.getId()).game = game ;
+ if(users.get(b.getId()) != null)
users.get(b.getId()).game = game ;//b连接的地图
- game.start();
-
- JSONObject respGame = new JSONObject();
- respGame.put("a_id",game.getPlayerA().getId());
- respGame.put("a_sx",game.getPlayerA().getSx());
- respGame.put("a_sy",game.getPlayerA().getSy());
- respGame.put("b_id",game.getPlayerB().getId());
- respGame.put("b_sx",game.getPlayerB().getSx());
- respGame.put("b_sy",game.getPlayerB().getSy());
- respGame.put("map",game.getG());
-
-
- JSONObject respA = new JSONObject();//返回给a
- respA.put("event", "start-matching");
- respA.put("opponent_username", b.getUsername());
- respA.put("opponent_photo", b.getPhoto());
- respA.put("game", respGame);
+ game.start();
+
+ JSONObject respGame = new JSONObject();
+ respGame.put("a_id",game.getPlayerA().getId());
+ respGame.put("a_sx",game.getPlayerA().getSx());
+ respGame.put("a_sy",game.getPlayerA().getSy());
+ respGame.put("b_id",game.getPlayerB().getId());
+ respGame.put("b_sx",game.getPlayerB().getSx());
+ respGame.put("b_sy",game.getPlayerB().getSy());
+ respGame.put("map",game.getG());
+
+
+ JSONObject respA = new JSONObject();//返回给a
+ respA.put("event", "start-matching");
+ respA.put("opponent_username", b.getUsername());
+ respA.put("opponent_photo", b.getPhoto());
+ respA.put("game", respGame);
+ if(users.get(a.getId()) != null)
users.get(a.getId()).sendMessage(respA.toJSONString());//获取a对应的连接,向前端传递信息(String)
- JSONObject respB = new JSONObject();//返回给b
- respB.put("event", "start-matching");
- respB.put("opponent_username", a.getUsername());
- respB.put("opponent_photo", a.getPhoto());
- respB.put("game", respGame);
+ JSONObject respB = new JSONObject();//返回给b
+ respB.put("event", "start-matching");
+ respB.put("opponent_username", a.getUsername());
+ respB.put("opponent_photo", a.getPhoto());
+ respB.put("game", respGame);
+ if(users.get(b.getId()) != null)
users.get(b.getId()).sendMessage(respB.toJSONString());//获取b对应的连接,向前端传递信息(String)
- }
}
- //前端点击 取消 触发
+
+ //前端点击 开始匹配 触发--》加入一个用户进行匹配--->发送请求给matchingsystem
+ private void startMatching(){
+ System.out.println("start matching!");
+ //向另一个Spring Boot发送的数据
+ MultiValueMap data = new LinkedMultiValueMap<>();
+ data.add("user_id",this.user.getId().toString());
+ data.add("rating",this.user.getRating().toString());
+ restTemplate.postForObject(addPlayerUrl, data, String.class);
+ }
+
+ //前端点击 取消 触发 ---》取消一个用户的匹配--->发送请求给matchingsystem
private void stopMatching(){
System.out.println("stop matching!");
- matchpool.remove(this.user);
+ MultiValueMap data = new LinkedMultiValueMap<>();
+ data.add("user_id",this.user.getId().toString());
+ restTemplate.postForObject(removePlayerUrl,data,String.class);
}
public void move(int dirction){
diff --git a/backend/src/main/java/com/kob/backend/consumer/utils/Cell.java b/backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/Cell.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/consumer/utils/Cell.java
rename to backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/Cell.java
diff --git a/backend/src/main/java/com/kob/backend/consumer/utils/Game.java b/backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/Game.java
similarity index 93%
rename from backend/src/main/java/com/kob/backend/consumer/utils/Game.java
rename to backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/Game.java
index 6e200fb..606e1d0 100644
--- a/backend/src/main/java/com/kob/backend/consumer/utils/Game.java
+++ b/backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/Game.java
@@ -245,8 +245,10 @@ public class Game extends Thread {
public void sendAllMessage(String message){
//向全端发信息
- WebSocketServer.users.get(playerA.getId()).sendMessage(message);
- WebSocketServer.users.get(playerB.getId()).sendMessage(message);
+ if(WebSocketServer.users.get(playerA.getId())!=null)
+ WebSocketServer.users.get(playerA.getId()).sendMessage(message);
+ if(WebSocketServer.users.get(playerB.getId())!=null)
+ WebSocketServer.users.get(playerB.getId()).sendMessage(message);
}
private void saveToDatabase()
diff --git a/backend/src/main/java/com/kob/backend/consumer/utils/JwtAuthentication.java b/backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/JwtAuthentication.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/consumer/utils/JwtAuthentication.java
rename to backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/JwtAuthentication.java
diff --git a/backend/src/main/java/com/kob/backend/consumer/utils/Player.java b/backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/Player.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/consumer/utils/Player.java
rename to backendcloud/backend/src/main/java/com/kob/backend/consumer/utils/Player.java
diff --git a/backend/src/main/java/com/kob/backend/controller/pk/BotInfoController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/pk/BotInfoController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/pk/BotInfoController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/pk/BotInfoController.java
diff --git a/backend/src/main/java/com/kob/backend/controller/pk/IndexController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/pk/IndexController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/pk/IndexController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/pk/IndexController.java
diff --git a/backendcloud/backend/src/main/java/com/kob/backend/controller/pk/StartGameController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/pk/StartGameController.java
new file mode 100644
index 0000000..53b8788
--- /dev/null
+++ b/backendcloud/backend/src/main/java/com/kob/backend/controller/pk/StartGameController.java
@@ -0,0 +1,23 @@
+package com.kob.backend.controller.pk;
+
+import com.kob.backend.service.pk.StartGameService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+@RestController
+public class StartGameController {
+ @Autowired
+ private StartGameService startGameService;
+
+ @PostMapping("/pk/start/game/")
+ public String StartGame(@RequestParam MultiValueMap data){
+ Integer aId = Integer.parseInt(Objects.requireNonNull(data.getFirst("a_id")));
+ Integer bId = Integer.parseInt(Objects.requireNonNull(data.getFirst("b_id")));
+ return startGameService.startGame(aId,bId);
+ }
+}
diff --git a/backend/src/main/java/com/kob/backend/controller/user/account/InfoController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/user/account/InfoController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/user/account/InfoController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/user/account/InfoController.java
diff --git a/backend/src/main/java/com/kob/backend/controller/user/account/LoginController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/user/account/LoginController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/user/account/LoginController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/user/account/LoginController.java
diff --git a/backend/src/main/java/com/kob/backend/controller/user/account/RegisterController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/user/account/RegisterController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/user/account/RegisterController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/user/account/RegisterController.java
diff --git a/backend/src/main/java/com/kob/backend/controller/user/bot/AddController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/user/bot/AddController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/user/bot/AddController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/user/bot/AddController.java
diff --git a/backend/src/main/java/com/kob/backend/controller/user/bot/GetListController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/user/bot/GetListController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/user/bot/GetListController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/user/bot/GetListController.java
diff --git a/backend/src/main/java/com/kob/backend/controller/user/bot/RemoveController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/user/bot/RemoveController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/user/bot/RemoveController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/user/bot/RemoveController.java
diff --git a/backend/src/main/java/com/kob/backend/controller/user/bot/UpdateController.java b/backendcloud/backend/src/main/java/com/kob/backend/controller/user/bot/UpdateController.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/controller/user/bot/UpdateController.java
rename to backendcloud/backend/src/main/java/com/kob/backend/controller/user/bot/UpdateController.java
diff --git a/backend/src/main/java/com/kob/backend/mapper/BotMapper.java b/backendcloud/backend/src/main/java/com/kob/backend/mapper/BotMapper.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/mapper/BotMapper.java
rename to backendcloud/backend/src/main/java/com/kob/backend/mapper/BotMapper.java
diff --git a/backend/src/main/java/com/kob/backend/mapper/RecordMapper.java b/backendcloud/backend/src/main/java/com/kob/backend/mapper/RecordMapper.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/mapper/RecordMapper.java
rename to backendcloud/backend/src/main/java/com/kob/backend/mapper/RecordMapper.java
diff --git a/backend/src/main/java/com/kob/backend/mapper/UserMapper.java b/backendcloud/backend/src/main/java/com/kob/backend/mapper/UserMapper.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/mapper/UserMapper.java
rename to backendcloud/backend/src/main/java/com/kob/backend/mapper/UserMapper.java
diff --git a/backend/src/main/java/com/kob/backend/pojo/Bot.java b/backendcloud/backend/src/main/java/com/kob/backend/pojo/Bot.java
similarity index 93%
rename from backend/src/main/java/com/kob/backend/pojo/Bot.java
rename to backendcloud/backend/src/main/java/com/kob/backend/pojo/Bot.java
index d8564f4..477f0cc 100644
--- a/backend/src/main/java/com/kob/backend/pojo/Bot.java
+++ b/backendcloud/backend/src/main/java/com/kob/backend/pojo/Bot.java
@@ -18,7 +18,6 @@ public class Bot {
private String title;
private String description;
private String content;
- private Integer rating;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
private Date createtime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
diff --git a/backend/src/main/java/com/kob/backend/pojo/Record.java b/backendcloud/backend/src/main/java/com/kob/backend/pojo/Record.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/pojo/Record.java
rename to backendcloud/backend/src/main/java/com/kob/backend/pojo/Record.java
diff --git a/backend/src/main/java/com/kob/backend/pojo/User.java b/backendcloud/backend/src/main/java/com/kob/backend/pojo/User.java
similarity index 94%
rename from backend/src/main/java/com/kob/backend/pojo/User.java
rename to backendcloud/backend/src/main/java/com/kob/backend/pojo/User.java
index a246af2..14d1ecf 100644
--- a/backend/src/main/java/com/kob/backend/pojo/User.java
+++ b/backendcloud/backend/src/main/java/com/kob/backend/pojo/User.java
@@ -23,4 +23,5 @@ public class User {
private String username;
private String password;
private String photo;
+ private Integer rating;
}
\ No newline at end of file
diff --git a/backend/src/main/java/com/kob/backend/service/impl/UserDetailsServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/UserDetailsServiceImpl.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/impl/UserDetailsServiceImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/UserDetailsServiceImpl.java
diff --git a/backend/src/main/java/com/kob/backend/service/impl/bot/AddServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/AddServiceImpl.java
similarity index 96%
rename from backend/src/main/java/com/kob/backend/service/impl/bot/AddServiceImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/AddServiceImpl.java
index 0dd4677..73933e8 100644
--- a/backend/src/main/java/com/kob/backend/service/impl/bot/AddServiceImpl.java
+++ b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/AddServiceImpl.java
@@ -62,7 +62,7 @@ public class AddServiceImpl implements AddService {
}
Date now = new Date();
- Bot bot = new Bot(null,user.getId(),title,description,content,1500,now,now);
+ Bot bot = new Bot(null,user.getId(),title,description,content,now,now);
botMapper.insert(bot);
map.put("error_message","success");
diff --git a/backend/src/main/java/com/kob/backend/service/impl/bot/GetListServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/GetListServiceImpl.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/impl/bot/GetListServiceImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/GetListServiceImpl.java
diff --git a/backend/src/main/java/com/kob/backend/service/impl/bot/RemoveServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/RemoveServiceImpl.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/impl/bot/RemoveServiceImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/RemoveServiceImpl.java
diff --git a/backend/src/main/java/com/kob/backend/service/impl/bot/UpdateServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/UpdateServiceImpl.java
similarity index 95%
rename from backend/src/main/java/com/kob/backend/service/impl/bot/UpdateServiceImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/UpdateServiceImpl.java
index b9d5185..b42b9f5 100644
--- a/backend/src/main/java/com/kob/backend/service/impl/bot/UpdateServiceImpl.java
+++ b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/bot/UpdateServiceImpl.java
@@ -80,7 +80,6 @@ public class UpdateServiceImpl implements UpdateService {
title,
description,
content,
- bot.getRating(),
bot.getCreatetime(),
now
);
diff --git a/backendcloud/backend/src/main/java/com/kob/backend/service/impl/pk/StartGameServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/pk/StartGameServiceImpl.java
new file mode 100644
index 0000000..3b91f6e
--- /dev/null
+++ b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/pk/StartGameServiceImpl.java
@@ -0,0 +1,15 @@
+package com.kob.backend.service.impl.pk;
+
+import com.kob.backend.consumer.WebSocketServer;
+import com.kob.backend.service.pk.StartGameService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class StartGameServiceImpl implements StartGameService {
+ @Override
+ public String startGame(Integer aId, Integer bId) {
+ System.out.println("start game: "+ aId+" "+bId);
+ WebSocketServer.startGame(aId,bId);
+ return "start game success";
+ }
+}
diff --git a/backend/src/main/java/com/kob/backend/service/impl/user/account/InfoServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/user/account/InfoServiceImpl.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/impl/user/account/InfoServiceImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/user/account/InfoServiceImpl.java
diff --git a/backend/src/main/java/com/kob/backend/service/impl/user/account/LoginServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/user/account/LoginServiceImpl.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/impl/user/account/LoginServiceImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/user/account/LoginServiceImpl.java
diff --git a/backend/src/main/java/com/kob/backend/service/impl/user/account/RegisterServiceImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/user/account/RegisterServiceImpl.java
similarity index 96%
rename from backend/src/main/java/com/kob/backend/service/impl/user/account/RegisterServiceImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/user/account/RegisterServiceImpl.java
index a28c239..7845854 100644
--- a/backend/src/main/java/com/kob/backend/service/impl/user/account/RegisterServiceImpl.java
+++ b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/user/account/RegisterServiceImpl.java
@@ -79,7 +79,7 @@ public class RegisterServiceImpl implements RegisterService {
//添加一个用户
String encodedPassword = passwordEncoder.encode(password);//密码
String photo = "https://cdn.acwing.com/media/user/profile/photo/85918_lg_5ed2550a14.png";
- User user = new User(null,username,encodedPassword,photo);
+ User user = new User(null,username,encodedPassword,photo,1500);
userMapper.insert(user);
map.put("error_message","success");
diff --git a/backend/src/main/java/com/kob/backend/service/impl/utils/UserDetailsImpl.java b/backendcloud/backend/src/main/java/com/kob/backend/service/impl/utils/UserDetailsImpl.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/impl/utils/UserDetailsImpl.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/impl/utils/UserDetailsImpl.java
diff --git a/backendcloud/backend/src/main/java/com/kob/backend/service/pk/StartGameService.java b/backendcloud/backend/src/main/java/com/kob/backend/service/pk/StartGameService.java
new file mode 100644
index 0000000..0f21d44
--- /dev/null
+++ b/backendcloud/backend/src/main/java/com/kob/backend/service/pk/StartGameService.java
@@ -0,0 +1,5 @@
+package com.kob.backend.service.pk;
+
+public interface StartGameService {
+ public String startGame(Integer aId,Integer bId);
+}
diff --git a/backend/src/main/java/com/kob/backend/service/user/account/InfoService.java b/backendcloud/backend/src/main/java/com/kob/backend/service/user/account/InfoService.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/user/account/InfoService.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/user/account/InfoService.java
diff --git a/backend/src/main/java/com/kob/backend/service/user/account/LoginService.java b/backendcloud/backend/src/main/java/com/kob/backend/service/user/account/LoginService.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/user/account/LoginService.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/user/account/LoginService.java
diff --git a/backend/src/main/java/com/kob/backend/service/user/account/RegisterService.java b/backendcloud/backend/src/main/java/com/kob/backend/service/user/account/RegisterService.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/user/account/RegisterService.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/user/account/RegisterService.java
diff --git a/backend/src/main/java/com/kob/backend/service/user/bot/AddService.java b/backendcloud/backend/src/main/java/com/kob/backend/service/user/bot/AddService.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/user/bot/AddService.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/user/bot/AddService.java
diff --git a/backend/src/main/java/com/kob/backend/service/user/bot/GetListService.java b/backendcloud/backend/src/main/java/com/kob/backend/service/user/bot/GetListService.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/user/bot/GetListService.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/user/bot/GetListService.java
diff --git a/backend/src/main/java/com/kob/backend/service/user/bot/RemoveService.java b/backendcloud/backend/src/main/java/com/kob/backend/service/user/bot/RemoveService.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/user/bot/RemoveService.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/user/bot/RemoveService.java
diff --git a/backend/src/main/java/com/kob/backend/service/user/bot/UpdateService.java b/backendcloud/backend/src/main/java/com/kob/backend/service/user/bot/UpdateService.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/service/user/bot/UpdateService.java
rename to backendcloud/backend/src/main/java/com/kob/backend/service/user/bot/UpdateService.java
diff --git a/backend/src/main/java/com/kob/backend/utils/JwtUtil.java b/backendcloud/backend/src/main/java/com/kob/backend/utils/JwtUtil.java
similarity index 100%
rename from backend/src/main/java/com/kob/backend/utils/JwtUtil.java
rename to backendcloud/backend/src/main/java/com/kob/backend/utils/JwtUtil.java
diff --git a/backend/src/main/resources/application.properties b/backendcloud/backend/src/main/resources/application.properties
similarity index 100%
rename from backend/src/main/resources/application.properties
rename to backendcloud/backend/src/main/resources/application.properties
diff --git a/backend/src/main/resources/static/image/icon.png b/backendcloud/backend/src/main/resources/static/image/icon.png
similarity index 100%
rename from backend/src/main/resources/static/image/icon.png
rename to backendcloud/backend/src/main/resources/static/image/icon.png
diff --git a/backend/src/main/resources/templates/pk/index.html b/backendcloud/backend/src/main/resources/templates/pk/index.html
similarity index 100%
rename from backend/src/main/resources/templates/pk/index.html
rename to backendcloud/backend/src/main/resources/templates/pk/index.html
diff --git a/backend/src/test/java/com/kob/backend/BackendApplicationTests.java b/backendcloud/backend/src/test/java/com/kob/backend/BackendApplicationTests.java
similarity index 100%
rename from backend/src/test/java/com/kob/backend/BackendApplicationTests.java
rename to backendcloud/backend/src/test/java/com/kob/backend/BackendApplicationTests.java
diff --git a/backendcloud/matchingsystem/Copy.txt b/backendcloud/matchingsystem/Copy.txt
new file mode 100644
index 0000000..18ee3fd
--- /dev/null
+++ b/backendcloud/matchingsystem/Copy.txt
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backendcloud/matchingsystem/pom.xml b/backendcloud/matchingsystem/pom.xml
new file mode 100644
index 0000000..d2a4379
--- /dev/null
+++ b/backendcloud/matchingsystem/pom.xml
@@ -0,0 +1,64 @@
+
+
+
+ backendcloud
+ com.kob
+ 0.0.1-SNAPSHOT
+
+ 4.0.0
+
+ com.kob.matchingsystem
+ matchingsystem
+
+
+ 8
+ 8
+
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.24
+ provided
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+ 2.7.3
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ 2021.0.3
+ pom
+ import
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/MatchingSystemApplication.java b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/MatchingSystemApplication.java
new file mode 100644
index 0000000..d3eeda2
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/MatchingSystemApplication.java
@@ -0,0 +1,13 @@
+package com.kob.matchingsystem;
+
+import com.kob.matchingsystem.service.impl.MatchingServiceImpl;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MatchingSystemApplication {
+ public static void main(String[] args) {
+ MatchingServiceImpl.matchingPool.start();//启动线程
+ SpringApplication.run(MatchingSystemApplication.class, args);
+ }
+}
diff --git a/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/config/RestTemplateConfig.java b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/config/RestTemplateConfig.java
new file mode 100644
index 0000000..357054c
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/config/RestTemplateConfig.java
@@ -0,0 +1,13 @@
+package com.kob.matchingsystem.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+ @Bean
+ public RestTemplate getRestTemplate(){
+ return new RestTemplate();
+ }
+}
diff --git a/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/config/SecurityConfig.java b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/config/SecurityConfig.java
new file mode 100644
index 0000000..be39503
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/config/SecurityConfig.java
@@ -0,0 +1,23 @@
+package com.kob.matchingsystem.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpMethod;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.config.http.SessionCreationPolicy;
+
+@Configuration
+@EnableWebSecurity
+public class SecurityConfig extends WebSecurityConfigurerAdapter {
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.csrf().disable()
+ .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+ .and()
+ .authorizeRequests()
+ .antMatchers("/player/add/","/player/remove/").hasIpAddress("localhost")//新加
+ .antMatchers(HttpMethod.OPTIONS).permitAll()
+ .anyRequest().authenticated();
+ }
+}
diff --git a/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/controller/MatchingController.java b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/controller/MatchingController.java
new file mode 100644
index 0000000..648329b
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/controller/MatchingController.java
@@ -0,0 +1,31 @@
+package com.kob.matchingsystem.controller;
+
+import com.kob.matchingsystem.service.MatchingService;
+import com.kob.matchingsystem.service.impl.MatchingServiceImpl;
+import com.kob.matchingsystem.service.impl.utils.MatchingPool;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+@RestController
+public class MatchingController {
+ @Autowired
+ private MatchingService matchingService;
+
+ @PostMapping("/player/add/")
+ public String addPlayer(@RequestParam MultiValueMap data){
+ Integer userId = Integer.parseInt(Objects.requireNonNull(data.getFirst("user_id")));
+ Integer rating = Integer.parseInt(Objects.requireNonNull(data.getFirst("rating")));
+ return matchingService.addPlayer(userId,rating);
+ }
+
+ @PostMapping("/player/remove/")
+ public String removePlayer(@RequestParam MultiValueMap data){
+ Integer userId = Integer.parseInt(Objects.requireNonNull(data.getFirst("user_id")));
+ return matchingService.removePlayer(userId);
+ }
+}
diff --git a/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/MatchingService.java b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/MatchingService.java
new file mode 100644
index 0000000..68be49b
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/MatchingService.java
@@ -0,0 +1,6 @@
+package com.kob.matchingsystem.service;
+
+public interface MatchingService {
+ public String addPlayer(Integer userId,Integer rating);
+ public String removePlayer(Integer userId);
+}
diff --git a/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/MatchingServiceImpl.java b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/MatchingServiceImpl.java
new file mode 100644
index 0000000..1de05ff
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/MatchingServiceImpl.java
@@ -0,0 +1,26 @@
+package com.kob.matchingsystem.service.impl;
+
+import com.kob.matchingsystem.service.MatchingService;
+import com.kob.matchingsystem.service.impl.utils.MatchingPool;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MatchingServiceImpl implements MatchingService {
+ //就一个线程
+ public static final MatchingPool matchingPool = new MatchingPool();
+
+ @Override
+ public String addPlayer(Integer userId, Integer rating) {
+ System.out.println("add player: "+userId+" "+rating);
+ matchingPool.addPlayer(userId,rating);
+ return "add player success";
+ }
+
+ @Override
+ public String removePlayer(Integer userId) {
+ System.out.println("remove player: "+userId);
+ matchingPool.removePlayer(userId);
+ return "remove player success";
+ }
+
+}
diff --git a/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/utils/MatchingPool.java b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/utils/MatchingPool.java
new file mode 100644
index 0000000..773388c
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/utils/MatchingPool.java
@@ -0,0 +1,115 @@
+package com.kob.matchingsystem.service.impl.utils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.locks.ReentrantLock;
+
+//为了将Bean形容的类注入进来
+@Component
+public class MatchingPool extends Thread {
+ private static List players = new ArrayList<>();
+ private ReentrantLock lock = new ReentrantLock();
+ private final static String startGameUrl = "http://127.0.0.1:3000/pk/start/game/";
+ //因为是Bean
+ private static RestTemplate restTemplate ;
+ @Autowired
+ public void setRestTemplate(RestTemplate restTemplate) { MatchingPool.restTemplate = restTemplate ;}
+
+
+ //两个线程访问:1.匹配线程 2.传入参数的线程,开始匹配
+ public void addPlayer(Integer userId,Integer rating){
+ lock.lock();
+ try {
+ players.add(new Player(userId,rating,0));
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public void removePlayer(Integer userId){
+ lock.lock();
+ try {
+ List newPlayers = new ArrayList<>();
+ for(Player player:players){
+ if(!player.getUserId().equals(userId)){
+ newPlayers.add(player);
+ }
+ }
+ players = newPlayers ;
+ } finally {
+ lock.lock();
+ }
+ }
+
+ private void increaseWaitingTime(){//所有玩家的等待加时间1
+ for(Player player:players){
+ player.setWaitingTime(player.getWaitingTime()+1);
+ }
+ }
+
+ private void matcingPlayers(){//匹配所有玩家
+ System.out.println("match players: "+players.toString());
+ boolean[] used = new boolean[players.size()];
+ for(int i = 0 ; i < players.size() ; i++){
+ if(used[i])continue;
+ for(int j = i+1 ;j < players.size() ;j++){
+ if(used[j])continue;
+ Player a = players.get(i),b = players.get(j);
+ if(checkMatched(a,b)){
+ used[i] = used[j] = true;
+ sendResult(a,b);
+ break;
+ }
+ }
+ }
+ //将匹配成功的删除
+ List newPlayers = new ArrayList<>();
+ for(int i= 0;i data = new LinkedMultiValueMap<>();
+ data.put("a_id", Collections.singletonList(a.getUserId().toString()));
+ data.put("b_id", Collections.singletonList(b.getUserId().toString()));
+ restTemplate.postForObject(startGameUrl,data,String.class);
+ }
+
+ @Override
+ public void run() {
+ while(true){
+ try {
+ Thread.sleep(1000);
+ lock.lock();
+ try {
+ increaseWaitingTime();
+ matcingPlayers();
+ } finally {
+ lock.unlock();
+ }
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/utils/Player.java b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/utils/Player.java
new file mode 100644
index 0000000..6765c90
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/java/com/kob/matchingsystem/service/impl/utils/Player.java
@@ -0,0 +1,14 @@
+package com.kob.matchingsystem.service.impl.utils;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Player {
+ private Integer userId;
+ private Integer rating;
+ private Integer waitingTime;//等待时间
+}
diff --git a/backendcloud/matchingsystem/src/main/resources/application.properties b/backendcloud/matchingsystem/src/main/resources/application.properties
new file mode 100644
index 0000000..032aec6
--- /dev/null
+++ b/backendcloud/matchingsystem/src/main/resources/application.properties
@@ -0,0 +1 @@
+server.port=3001
\ No newline at end of file
diff --git a/backend/mvnw b/backendcloud/mvnw
similarity index 100%
rename from backend/mvnw
rename to backendcloud/mvnw
diff --git a/backend/mvnw.cmd b/backendcloud/mvnw.cmd
similarity index 100%
rename from backend/mvnw.cmd
rename to backendcloud/mvnw.cmd
diff --git a/backendcloud/pom.xml b/backendcloud/pom.xml
new file mode 100644
index 0000000..1d7e45b
--- /dev/null
+++ b/backendcloud/pom.xml
@@ -0,0 +1,95 @@
+
+
+ 4.0.0
+ com.kob
+ backendcloud
+ pom
+ 0.0.1-SNAPSHOT
+
+ matchingsystem
+ backend
+
+ backendcloud
+ backendcloud
+
+
+ 1.8
+ UTF-8
+ UTF-8
+ 2.3.7.RELEASE
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ 2021.0.3
+ pom
+ import
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 1.8
+ 1.8
+ UTF-8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.3.7.RELEASE
+
+ com.kob.backendcloud.BackendcloudApplication
+
+
+
+ repackage
+
+ repackage
+
+
+
+
+
+
+
+