初始提交,实现WebSocket聊天室基本功能

This commit is contained in:
2024-04-14 12:11:56 +08:00
parent 7a4faa4e2e
commit 532e23938a
34 changed files with 2427 additions and 24 deletions
@@ -0,0 +1,91 @@
package cn.airnan.dg.controller;
import cn.airnan.dg.configs.Global;
import cn.airnan.dg.entity.Player;
import cn.airnan.dg.entity.Room;
import cn.airnan.dg.service.RoomService;
import cn.airnan.dg.utils.CommonResponse;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
/**
* 房间相关接口
*/
@RestController
@RequestMapping("/api/room")
public class RoomController {
private static final Logger log = LoggerFactory.getLogger(RoomController.class);
@Resource
private RoomService service;
/**
* 获取房间列表
*
* @return 房间列表
*/
@GetMapping("/list")
public CommonResponse list() {
try {
return CommonResponse.success(service.getRooms());
} catch (Exception e) {
return CommonResponse.error(e.getMessage());
}
}
/**
* 创建房间
*
* @return 房间信息
*/
@PostMapping("/create")
public CommonResponse create(@RequestBody Room room) {
try {
if (service.canCreateRoom(room.getId())) {
var result = service.createRoom(room);
if (result != null) {
log.info("【创建房间】{}创建房间:{}", room.getMaster(), room.getId());
return CommonResponse.success(result);
} else {
return CommonResponse.error("创建房间失败,请重试!");
}
} else {
return CommonResponse.error("房间名已存在,换一个吧!");
}
} catch (Exception e) {
return CommonResponse.error(e.getMessage());
}
}
/**
* 判断是否可以加入房间
*
* @return true/false
*/
@PostMapping("/canJoin")
public CommonResponse canJoin(@RequestBody Room room) {
try {
if (service.canJoinRoom(room.getId())) {
List<Player> players = Global.ROOMS.get(room.getId()).getPlayers();
for (Player player : players) {
if (Objects.equals(room.getPlayers().getFirst().getId(), player.getId())) {
return CommonResponse.error("已经在房间里了!");
}
}
return CommonResponse.success(true);
} else {
return CommonResponse.error("房间已满或已经开始游戏,再换一个吧!");
}
} catch (Exception e) {
return CommonResponse.error(e.getMessage());
}
}
}