本地调试成功
This commit is contained in:
		
							parent
							
								
									304f2fbd0c
								
							
						
					
					
						commit
						cc95f82b7f
					
				@ -12,6 +12,28 @@
 | 
				
			|||||||
    <groupId>com.kob.backend</groupId>
 | 
					    <groupId>com.kob.backend</groupId>
 | 
				
			||||||
    <artifactId>backend</artifactId>
 | 
					    <artifactId>backend</artifactId>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 项目打包类型 : jar -->
 | 
				
			||||||
 | 
					    <packaging>jar</packaging>
 | 
				
			||||||
 | 
					    <build>
 | 
				
			||||||
 | 
					        <plugins>
 | 
				
			||||||
 | 
					            <plugin>
 | 
				
			||||||
 | 
					                <groupId>org.springframework.boot</groupId>
 | 
				
			||||||
 | 
					                <artifactId>spring-boot-maven-plugin</artifactId>
 | 
				
			||||||
 | 
					                <!--这里写上main方法所在类的路径-->
 | 
				
			||||||
 | 
					                <configuration>
 | 
				
			||||||
 | 
					                    <mainClass>com.kob.backend.BackendApplication</mainClass>
 | 
				
			||||||
 | 
					                </configuration>
 | 
				
			||||||
 | 
					                <executions>
 | 
				
			||||||
 | 
					                    <execution>
 | 
				
			||||||
 | 
					                        <goals>
 | 
				
			||||||
 | 
					                            <goal>repackage</goal>
 | 
				
			||||||
 | 
					                        </goals>
 | 
				
			||||||
 | 
					                    </execution>
 | 
				
			||||||
 | 
					                </executions>
 | 
				
			||||||
 | 
					            </plugin>
 | 
				
			||||||
 | 
					        </plugins>
 | 
				
			||||||
 | 
					    </build>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <properties>
 | 
					    <properties>
 | 
				
			||||||
        <maven.compiler.source>8</maven.compiler.source>
 | 
					        <maven.compiler.source>8</maven.compiler.source>
 | 
				
			||||||
        <maven.compiler.target>8</maven.compiler.target>
 | 
					        <maven.compiler.target>8</maven.compiler.target>
 | 
				
			||||||
 | 
				
			|||||||
@ -48,7 +48,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
 | 
				
			|||||||
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
 | 
					                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
 | 
				
			||||||
                .and()
 | 
					                .and()
 | 
				
			||||||
                .authorizeRequests()
 | 
					                .authorizeRequests()
 | 
				
			||||||
                .antMatchers("/user/account/token/", "/user/account/register/").permitAll()
 | 
					                .antMatchers("/api/user/account/token/", "/api/user/account/register/").permitAll()
 | 
				
			||||||
                .antMatchers("/pk/start/","/pk/receive/bot/move/").hasIpAddress("127.0.0.1")
 | 
					                .antMatchers("/pk/start/","/pk/receive/bot/move/").hasIpAddress("127.0.0.1")
 | 
				
			||||||
                .antMatchers(HttpMethod.OPTIONS).permitAll()
 | 
					                .antMatchers(HttpMethod.OPTIONS).permitAll()
 | 
				
			||||||
                .anyRequest().authenticated();
 | 
					                .anyRequest().authenticated();
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,6 @@ import com.kob.backend.mapper.UserMapper;
 | 
				
			|||||||
import com.kob.backend.pojo.User;
 | 
					import com.kob.backend.pojo.User;
 | 
				
			||||||
import com.kob.backend.service.impl.utils.UserDetailsImpl;
 | 
					import com.kob.backend.service.impl.utils.UserDetailsImpl;
 | 
				
			||||||
import com.kob.backend.utils.JwtUtil;
 | 
					import com.kob.backend.utils.JwtUtil;
 | 
				
			||||||
import com.sun.xml.internal.bind.v2.TODO;
 | 
					 | 
				
			||||||
import io.jsonwebtoken.Claims;
 | 
					import io.jsonwebtoken.Claims;
 | 
				
			||||||
import org.jetbrains.annotations.NotNull;
 | 
					import org.jetbrains.annotations.NotNull;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
				
			|||||||
@ -46,8 +46,8 @@ public class WebSocketServer {
 | 
				
			|||||||
    private User user;
 | 
					    private User user;
 | 
				
			||||||
    public Game game = null;
 | 
					    public Game game = null;
 | 
				
			||||||
    // addPlayer 添加用户到匹配池的 URL; removePlayer 从匹配池移除用户的 URL
 | 
					    // addPlayer 添加用户到匹配池的 URL; removePlayer 从匹配池移除用户的 URL
 | 
				
			||||||
    private final static String addPlayerUrl = "http://127.0.0.1:3001/player/add/";
 | 
					    private final static String addPlayerUrl = "http://127.0.0.1:3002/player/add/";
 | 
				
			||||||
    private final static String removePlayerUrl = "http://127.0.0.1:3001/player/remove/";
 | 
					    private final static String removePlayerUrl = "http://127.0.0.1:3002/player/remove/";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    public void setRestTemplate(RestTemplate restTemplate) {
 | 
					    public void setRestTemplate(RestTemplate restTemplate) {
 | 
				
			||||||
 | 
				
			|||||||
@ -33,7 +33,7 @@ public class Game extends Thread {
 | 
				
			|||||||
    // 定义失败者: all(平局), A(A输), B(B输)
 | 
					    // 定义失败者: all(平局), A(A输), B(B输)
 | 
				
			||||||
    private String loser = "";
 | 
					    private String loser = "";
 | 
				
			||||||
    // 传送消息给 BotRunningSystem 的链接
 | 
					    // 传送消息给 BotRunningSystem 的链接
 | 
				
			||||||
    private static final String addBotUrl = "http://127.0.0.1:3002/bot/add/";
 | 
					    private static final String addBotUrl = "http://127.0.0.1:3003/bot/add/";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 初始化(有参)构造函数
 | 
					    // 初始化(有参)构造函数
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					// 微服务内部 api
 | 
				
			||||||
package com.kob.backend.controller.pk;
 | 
					package com.kob.backend.controller.pk;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.kob.backend.service.pk.ReceiveBotMoveService;
 | 
					import com.kob.backend.service.pk.ReceiveBotMoveService;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					// 微服务内部 api
 | 
				
			||||||
package com.kob.backend.controller.pk;
 | 
					package com.kob.backend.controller.pk;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@ public class GetRankListController {
 | 
				
			|||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private GetRankListService getRankListService;
 | 
					    private GetRankListService getRankListService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @GetMapping("/ranklist/getranklist/")
 | 
					    @GetMapping("/api/ranklist/getranklist/")
 | 
				
			||||||
    JSONObject getRankList(@RequestParam Map<String, String> data) {
 | 
					    JSONObject getRankList(@RequestParam Map<String, String> data) {
 | 
				
			||||||
        Integer page = Integer.parseInt(data.get("page_index"));
 | 
					        Integer page = Integer.parseInt(data.get("page_index"));
 | 
				
			||||||
        Integer.parseInt(data.get("page_index"));
 | 
					        Integer.parseInt(data.get("page_index"));
 | 
				
			||||||
 | 
				
			|||||||
@ -15,7 +15,7 @@ public class GetRecordListController {
 | 
				
			|||||||
    private GetRecordListService getRecordListService;
 | 
					    private GetRecordListService getRecordListService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 这里只需要获取,因此只需要用 get 方法(需要新建和修改数据时,使用 post 方法)
 | 
					    // 这里只需要获取,因此只需要用 get 方法(需要新建和修改数据时,使用 post 方法)
 | 
				
			||||||
    @GetMapping("/record/getlist/")
 | 
					    @GetMapping("/api/record/getlist/")
 | 
				
			||||||
    public JSONObject getList(@RequestParam Map<String, String> data) {
 | 
					    public JSONObject getList(@RequestParam Map<String, String> data) {
 | 
				
			||||||
        // 解析出 page 信息
 | 
					        // 解析出 page 信息
 | 
				
			||||||
        Integer page = Integer.parseInt(data.get("page_index"));
 | 
					        Integer page = Integer.parseInt(data.get("page_index"));
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@ public class InfoController {
 | 
				
			|||||||
    private InfoService infoService;
 | 
					    private InfoService infoService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//    获取信息
 | 
					//    获取信息
 | 
				
			||||||
    @GetMapping("/user/account/info/")
 | 
					    @GetMapping("/api/user/account/info/")
 | 
				
			||||||
    public Map<String,String> getInfo(){
 | 
					    public Map<String,String> getInfo(){
 | 
				
			||||||
        return infoService.getInfo();
 | 
					        return infoService.getInfo();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -16,7 +16,7 @@ public class LoginController {
 | 
				
			|||||||
    private LoginService loginService;
 | 
					    private LoginService loginService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//    登录使用 POST 请求,密文传输,更安全
 | 
					//    登录使用 POST 请求,密文传输,更安全
 | 
				
			||||||
    @PostMapping("/user/account/token/")
 | 
					    @PostMapping("/api/user/account/token/")
 | 
				
			||||||
    public Map<String,String> getToken(@RequestParam Map<String,String> map){
 | 
					    public Map<String,String> getToken(@RequestParam Map<String,String> map){
 | 
				
			||||||
        String username = map.get("username");
 | 
					        String username = map.get("username");
 | 
				
			||||||
        String password = map.get("password");
 | 
					        String password = map.get("password");
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@ public class RegisterController {
 | 
				
			|||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private RegisterService registerService;
 | 
					    private RegisterService registerService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @PostMapping("/user/account/register/")
 | 
					    @PostMapping("/api/user/account/register/")
 | 
				
			||||||
    public Map<String, String> register(@RequestParam Map<String, String> map) {
 | 
					    public Map<String, String> register(@RequestParam Map<String, String> map) {
 | 
				
			||||||
        String username = map.get("username");
 | 
					        String username = map.get("username");
 | 
				
			||||||
        String password = map.get("password");
 | 
					        String password = map.get("password");
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@ public class AddController {
 | 
				
			|||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private AddService addService;
 | 
					    private AddService addService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @PostMapping("/user/bot/add/")
 | 
					    @PostMapping("/api/user/bot/add/")
 | 
				
			||||||
    public Map<String,String> add(@RequestParam Map<String,String> data){
 | 
					    public Map<String,String> add(@RequestParam Map<String,String> data){
 | 
				
			||||||
        return addService.add(data);
 | 
					        return addService.add(data);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -15,7 +15,7 @@ public class GetListController {
 | 
				
			|||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private GetListService getListService;
 | 
					    private GetListService getListService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @GetMapping("/user/bot/getlist/")
 | 
					    @GetMapping("/api/user/bot/getlist/")
 | 
				
			||||||
    public List<Bot> getList(){
 | 
					    public List<Bot> getList(){
 | 
				
			||||||
        return getListService.getList();
 | 
					        return getListService.getList();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@ public class RemoveController {
 | 
				
			|||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private RemoveService removeService;
 | 
					    private RemoveService removeService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @PostMapping("/user/bot/remove/")
 | 
					    @PostMapping("/api/user/bot/remove/")
 | 
				
			||||||
    public Map<String,String> remove(@RequestParam Map<String,String> data){
 | 
					    public Map<String,String> remove(@RequestParam Map<String,String> data){
 | 
				
			||||||
        return removeService.remove(data);
 | 
					        return removeService.remove(data);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@ public class UpdateController {
 | 
				
			|||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private UpdateService updateService;
 | 
					    private UpdateService updateService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @PostMapping("/user/bot/update/")
 | 
					    @PostMapping("/api/user/bot/update/")
 | 
				
			||||||
    public Map<String,String> update(@RequestParam Map<String,String> data){
 | 
					    public Map<String,String> update(@RequestParam Map<String,String> data){
 | 
				
			||||||
        return updateService.update(data);
 | 
					        return updateService.update(data);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
#default server port
 | 
					#default server port
 | 
				
			||||||
server.port=3000
 | 
					server.port=3001
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#mysql database connect profile
 | 
					#mysql database connect profile
 | 
				
			||||||
spring.datasource.username=root
 | 
					spring.datasource.username=root
 | 
				
			||||||
 | 
				
			|||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
package com.kob.backend;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					 | 
				
			||||||
import org.springframework.boot.test.context.SpringBootTest;
 | 
					 | 
				
			||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
					 | 
				
			||||||
import org.springframework.security.crypto.password.PasswordEncoder;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@SpringBootTest
 | 
					 | 
				
			||||||
class BackendApplicationTests {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//    测试明文加密
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    void contextLoads() {
 | 
					 | 
				
			||||||
        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
 | 
					 | 
				
			||||||
        System.out.println(passwordEncoder.encode("123"));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -12,6 +12,28 @@
 | 
				
			|||||||
    <groupId>com.kob.botrunningsystem</groupId>
 | 
					    <groupId>com.kob.botrunningsystem</groupId>
 | 
				
			||||||
    <artifactId>botrunningsystem</artifactId>
 | 
					    <artifactId>botrunningsystem</artifactId>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 项目打包类型 : jar -->
 | 
				
			||||||
 | 
					    <packaging>jar</packaging>
 | 
				
			||||||
 | 
					    <build>
 | 
				
			||||||
 | 
					        <plugins>
 | 
				
			||||||
 | 
					            <plugin>
 | 
				
			||||||
 | 
					                <groupId>org.springframework.boot</groupId>
 | 
				
			||||||
 | 
					                <artifactId>spring-boot-maven-plugin</artifactId>
 | 
				
			||||||
 | 
					                <!--这里写上main方法所在类的路径-->
 | 
				
			||||||
 | 
					                <configuration>
 | 
				
			||||||
 | 
					                    <mainClass>com.kob.botrunningsystem.BotRunningSystemApplication</mainClass>
 | 
				
			||||||
 | 
					                </configuration>
 | 
				
			||||||
 | 
					                <executions>
 | 
				
			||||||
 | 
					                    <execution>
 | 
				
			||||||
 | 
					                        <goals>
 | 
				
			||||||
 | 
					                            <goal>repackage</goal>
 | 
				
			||||||
 | 
					                        </goals>
 | 
				
			||||||
 | 
					                    </execution>
 | 
				
			||||||
 | 
					                </executions>
 | 
				
			||||||
 | 
					            </plugin>
 | 
				
			||||||
 | 
					        </plugins>
 | 
				
			||||||
 | 
					    </build>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <properties>
 | 
					    <properties>
 | 
				
			||||||
        <maven.compiler.source>8</maven.compiler.source>
 | 
					        <maven.compiler.source>8</maven.compiler.source>
 | 
				
			||||||
        <maven.compiler.target>8</maven.compiler.target>
 | 
					        <maven.compiler.target>8</maven.compiler.target>
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,7 @@ import java.util.function.Supplier;
 | 
				
			|||||||
public class Consumer extends Thread {
 | 
					public class Consumer extends Thread {
 | 
				
			||||||
    private Bot bot;
 | 
					    private Bot bot;
 | 
				
			||||||
    // 定义返回信息 URL
 | 
					    // 定义返回信息 URL
 | 
				
			||||||
    private final static String receiveBotMoveUrl = "http://127.0.0.1:3000/pk/receive/bot/move/";
 | 
					    private final static String receiveBotMoveUrl = "http://127.0.0.1:3001/pk/receive/bot/move/";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //注入 RestTemplate 用于给 backend 服务发送信息
 | 
					    //注入 RestTemplate 用于给 backend 服务发送信息
 | 
				
			||||||
    private static RestTemplate restTemplate;
 | 
					    private static RestTemplate restTemplate;
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
server.port=3002
 | 
					server.port=3003
 | 
				
			||||||
@ -12,6 +12,28 @@
 | 
				
			|||||||
    <groupId>com.kob.matchingsystem</groupId>
 | 
					    <groupId>com.kob.matchingsystem</groupId>
 | 
				
			||||||
    <artifactId>matchingsystem</artifactId>
 | 
					    <artifactId>matchingsystem</artifactId>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 项目打包类型 : jar -->
 | 
				
			||||||
 | 
					    <packaging>jar</packaging>
 | 
				
			||||||
 | 
					    <build>
 | 
				
			||||||
 | 
					        <plugins>
 | 
				
			||||||
 | 
					            <plugin>
 | 
				
			||||||
 | 
					                <groupId>org.springframework.boot</groupId>
 | 
				
			||||||
 | 
					                <artifactId>spring-boot-maven-plugin</artifactId>
 | 
				
			||||||
 | 
					                <!--这里写上main方法所在类的路径-->
 | 
				
			||||||
 | 
					                <configuration>
 | 
				
			||||||
 | 
					                    <mainClass>com.kob.matchingsystem.MatchingSystemApplication</mainClass>
 | 
				
			||||||
 | 
					                </configuration>
 | 
				
			||||||
 | 
					                <executions>
 | 
				
			||||||
 | 
					                    <execution>
 | 
				
			||||||
 | 
					                        <goals>
 | 
				
			||||||
 | 
					                            <goal>repackage</goal>
 | 
				
			||||||
 | 
					                        </goals>
 | 
				
			||||||
 | 
					                    </execution>
 | 
				
			||||||
 | 
					                </executions>
 | 
				
			||||||
 | 
					            </plugin>
 | 
				
			||||||
 | 
					        </plugins>
 | 
				
			||||||
 | 
					    </build>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <properties>
 | 
					    <properties>
 | 
				
			||||||
        <maven.compiler.source>8</maven.compiler.source>
 | 
					        <maven.compiler.source>8</maven.compiler.source>
 | 
				
			||||||
        <maven.compiler.target>8</maven.compiler.target>
 | 
					        <maven.compiler.target>8</maven.compiler.target>
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,7 @@ public class MatchingPool extends Thread {
 | 
				
			|||||||
    // 定义一个锁, Reentrant Lock 是可重入锁
 | 
					    // 定义一个锁, Reentrant Lock 是可重入锁
 | 
				
			||||||
    private final ReentrantLock lock = new ReentrantLock();
 | 
					    private final ReentrantLock lock = new ReentrantLock();
 | 
				
			||||||
    // 定义微服务传值 URL
 | 
					    // 定义微服务传值 URL
 | 
				
			||||||
    private static final String startGameUrl = "http://127.0.0.1:3000/pk/start/";
 | 
					    private static final String startGameUrl = "http://127.0.0.1:3001/pk/start/";
 | 
				
			||||||
    // 定义 RestTemplate 用来微服务数据通信
 | 
					    // 定义 RestTemplate 用来微服务数据通信
 | 
				
			||||||
    private static RestTemplate restTemplate;
 | 
					    private static RestTemplate restTemplate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -27,11 +27,11 @@ public class MatchingPool extends Thread {
 | 
				
			|||||||
        MatchingPool.restTemplate = restTemplate;
 | 
					        MatchingPool.restTemplate = restTemplate;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void addPlayer(Integer userId, Integer rating,Integer botId) {
 | 
					    public void addPlayer(Integer userId, Integer rating, Integer botId) {
 | 
				
			||||||
        lock.lock();
 | 
					        lock.lock();
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            // 一开始匹配等待时间是 0
 | 
					            // 一开始匹配等待时间是 0
 | 
				
			||||||
            playerList.add(new Player(userId, rating,botId, 0));
 | 
					            playerList.add(new Player(userId, rating, botId, 0));
 | 
				
			||||||
        } finally {
 | 
					        } finally {
 | 
				
			||||||
            lock.unlock();
 | 
					            lock.unlock();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -65,7 +65,7 @@ public class MatchingPool extends Thread {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // 判断两名玩家是否匹配
 | 
					    // 判断两名玩家是否匹配
 | 
				
			||||||
    private boolean checkMatched(Player a, Player b) {
 | 
					    private boolean checkMatched(Player a, Player b) {
 | 
				
			||||||
        int ratingDelta = Math.abs(a.getRating() - b.getRating());    // 两名玩家的天梯积分之差
 | 
					        int ratingDelta = Math.abs(a.getRating() - b.getRating()); // 两名玩家的天梯积分之差
 | 
				
			||||||
        // a b 两名玩家的等待时间最小值
 | 
					        // a b 两名玩家的等待时间最小值
 | 
				
			||||||
        // min 是两方任意一方接受等待时间就可以匹配, max 是两方都接受的匹配
 | 
					        // min 是两方任意一方接受等待时间就可以匹配, max 是两方都接受的匹配
 | 
				
			||||||
        int minWaitingTime = Math.min(a.getWaitingTime(), b.getWaitingTime());
 | 
					        int minWaitingTime = Math.min(a.getWaitingTime(), b.getWaitingTime());
 | 
				
			||||||
@ -79,29 +79,31 @@ public class MatchingPool extends Thread {
 | 
				
			|||||||
        MultiValueMap<String, String> data = new LinkedMultiValueMap<>();
 | 
					        MultiValueMap<String, String> data = new LinkedMultiValueMap<>();
 | 
				
			||||||
        // 返回两名玩家的 userId 和 botId
 | 
					        // 返回两名玩家的 userId 和 botId
 | 
				
			||||||
        data.add("a_id", a.getUserId().toString());
 | 
					        data.add("a_id", a.getUserId().toString());
 | 
				
			||||||
        data.add("a_bot_id",a.getBotId().toString());
 | 
					        data.add("a_bot_id", a.getBotId().toString());
 | 
				
			||||||
        data.add("b_id", b.getUserId().toString());
 | 
					        data.add("b_id", b.getUserId().toString());
 | 
				
			||||||
        data.add("b_bot_id",b.getBotId().toString());
 | 
					        data.add("b_bot_id", b.getBotId().toString());
 | 
				
			||||||
        restTemplate.postForObject(startGameUrl, data, String.class);
 | 
					        restTemplate.postForObject(startGameUrl, data, String.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 尝试匹配所有玩家
 | 
					    // 尝试匹配所有玩家
 | 
				
			||||||
    private void matchPlayers() {
 | 
					    private void matchPlayers() {
 | 
				
			||||||
        //TODO 后端调试
 | 
					        // TODO 后端调试
 | 
				
			||||||
        System.out.println("match players: " + playerList.toString());
 | 
					        // System.out.println("match players: " + playerList.toString());
 | 
				
			||||||
        // havaMatched 表示玩家已经匹配过了
 | 
					        // havaMatched 表示玩家已经匹配过了
 | 
				
			||||||
        boolean[] haveMatched = new boolean[playerList.size()];
 | 
					        boolean[] haveMatched = new boolean[playerList.size()];
 | 
				
			||||||
        for (int i = 0; i < playerList.size(); i++) {
 | 
					        for (int i = 0; i < playerList.size(); i++) {
 | 
				
			||||||
            if (haveMatched[i]) continue;    // 如果当前枚举到的玩家已经匹配过了,则跳过改玩家
 | 
					            if (haveMatched[i])
 | 
				
			||||||
            for (int j = i + 1; j < playerList.size(); j++) {   // j 从 i+1 开始枚举
 | 
					                continue; // 如果当前枚举到的玩家已经匹配过了,则跳过改玩家
 | 
				
			||||||
                if (haveMatched[j]) continue;
 | 
					            for (int j = i + 1; j < playerList.size(); j++) { // j 从 i+1 开始枚举
 | 
				
			||||||
 | 
					                if (haveMatched[j])
 | 
				
			||||||
 | 
					                    continue;
 | 
				
			||||||
                // 如果 i 和 j 都没有匹配,则将 a 和 b 玩家取出来
 | 
					                // 如果 i 和 j 都没有匹配,则将 a 和 b 玩家取出来
 | 
				
			||||||
                Player a = playerList.get(i);
 | 
					                Player a = playerList.get(i);
 | 
				
			||||||
                Player b = playerList.get(j);
 | 
					                Player b = playerList.get(j);
 | 
				
			||||||
                // 判断 a 和 b 能否匹配:如果匹配,则将结果返回,并将 a 和 b 的位置置为 true
 | 
					                // 判断 a 和 b 能否匹配:如果匹配,则将结果返回,并将 a 和 b 的位置置为 true
 | 
				
			||||||
                if (checkMatched(a, b)) {
 | 
					                if (checkMatched(a, b)) {
 | 
				
			||||||
                    haveMatched[i] = haveMatched[j] = true; // 置为已匹配
 | 
					                    haveMatched[i] = haveMatched[j] = true; // 置为已匹配
 | 
				
			||||||
                    sendResult(a, b);   // 返回匹配玩家结果
 | 
					                    sendResult(a, b); // 返回匹配玩家结果
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
server.port=3001
 | 
					server.port=3002
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 264 KiB  | 
@ -5,7 +5,7 @@
 | 
				
			|||||||
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
					    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
				
			||||||
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
 | 
					    <meta name="viewport" content="width=device-width,initial-scale=1.0">
 | 
				
			||||||
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
 | 
					    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
 | 
				
			||||||
    <title><%= htmlWebpackPlugin.options.title %></title>
 | 
					    <title>KoS</title>
 | 
				
			||||||
  </head>
 | 
					  </head>
 | 
				
			||||||
  <body>
 | 
					  <body>
 | 
				
			||||||
    <noscript>
 | 
					    <noscript>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
import $ from "jquery";
 | 
					// import $ from "jquery";
 | 
				
			||||||
import store from ".";
 | 
					// import store from ".";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  state: {
 | 
					  state: {
 | 
				
			||||||
@ -22,25 +22,25 @@ export default {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  actions: {
 | 
					  actions: {
 | 
				
			||||||
    getRecordList(context, data) {
 | 
					    // getRecordList(context, data) {
 | 
				
			||||||
      // 获取 Bot 列表
 | 
					    //   // 获取 Bot 列表
 | 
				
			||||||
      $.ajax({
 | 
					    //   $.ajax({
 | 
				
			||||||
        url: "http://localhost:3001/api/record/getlist/",
 | 
					    //     url: "http://localhost:3001/api/record/getlist/",
 | 
				
			||||||
        data: {
 | 
					    //     data: {
 | 
				
			||||||
          page_index: data.page,
 | 
					    //       page_index: data.page,
 | 
				
			||||||
        },
 | 
					    //     },
 | 
				
			||||||
        type: "GET",
 | 
					    //     type: "GET",
 | 
				
			||||||
        headers: {
 | 
					    //     headers: {
 | 
				
			||||||
          Authorization: "Bearer " + store.state.user.token,
 | 
					    //       Authorization: "Bearer " + store.state.user.token,
 | 
				
			||||||
        },
 | 
					    //     },
 | 
				
			||||||
        success(resp) {
 | 
					    //     success(resp) {
 | 
				
			||||||
          data.success(resp);
 | 
					    //       data.success(resp);
 | 
				
			||||||
        },
 | 
					    //     },
 | 
				
			||||||
        error(resp) {
 | 
					    //     error(resp) {
 | 
				
			||||||
          data.error(resp);
 | 
					    //       data.error(resp);
 | 
				
			||||||
        },
 | 
					    //     },
 | 
				
			||||||
      });
 | 
					    //   });
 | 
				
			||||||
    },
 | 
					    // },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  modules: {},
 | 
					  modules: {},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -93,7 +93,7 @@ export default {
 | 
				
			|||||||
      $.ajax({
 | 
					      $.ajax({
 | 
				
			||||||
        url: "http://localhost:3001/api/ranklist/getranklist/",
 | 
					        url: "http://localhost:3001/api/ranklist/getranklist/",
 | 
				
			||||||
        data: {
 | 
					        data: {
 | 
				
			||||||
          page_index:page,
 | 
					          page_index: page,
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        type: "GET",
 | 
					        type: "GET",
 | 
				
			||||||
        headers: {
 | 
					        headers: {
 | 
				
			||||||
 | 
				
			|||||||
@ -62,6 +62,7 @@ import ContentBase from "../../components/ContentBase.vue";
 | 
				
			|||||||
import { useStore } from 'vuex';
 | 
					import { useStore } from 'vuex';
 | 
				
			||||||
import { ref } from "vue";
 | 
					import { ref } from "vue";
 | 
				
			||||||
import router from "@/router/index";
 | 
					import router from "@/router/index";
 | 
				
			||||||
 | 
					import $ from "jquery";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  components: {
 | 
					  components: {
 | 
				
			||||||
@ -103,9 +104,15 @@ export default {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const pull_page = (page) => { // 加载分页
 | 
					    const pull_page = (page) => { // 加载分页
 | 
				
			||||||
      current_page = page;  // 更新页面序号
 | 
					      current_page = page;  // 更新页面序号
 | 
				
			||||||
 | 
					      $.ajax({
 | 
				
			||||||
      store.dispatch("getRecordList", {
 | 
					        url: "http://localhost:3001/api/record/getlist/",
 | 
				
			||||||
        page,
 | 
					        data: {
 | 
				
			||||||
 | 
					          page_index: page,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        type: "GET",
 | 
				
			||||||
 | 
					        headers: {
 | 
				
			||||||
 | 
					          Authorization: "Bearer " + store.state.user.token,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        success(resp) {
 | 
					        success(resp) {
 | 
				
			||||||
          console.log(resp.records);
 | 
					          console.log(resp.records);
 | 
				
			||||||
          records.value = resp.records;
 | 
					          records.value = resp.records;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user