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