初始提交,实现WebSocket聊天室基本功能
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user