From 8b880876803980fb1e59f3b7ba8737307d2d117e Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 01 Jul 2024 09:49:30 +0800
Subject: [PATCH] 后台
---
src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java | 3
src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java | 1
src/main/java/cc/mrbird/febs/mall/service/GameService.java | 3
src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java | 376 ++++++++++++++++++++++++++++++++++++++--------
src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java | 3
src/main/java/cc/mrbird/febs/websocket/HttpAuthHandler.java | 2
src/main/java/cc/mrbird/febs/mall/vo/ApiRoomInfoVo.java | 49 ++++++
src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java | 3
src/main/java/cc/mrbird/febs/mall/dto/ApiRoomInfoDto.java | 16 ++
src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java | 14 +
src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java | 1
11 files changed, 400 insertions(+), 71 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java
index cadbef9..c45e368 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java
@@ -3,10 +3,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.service.GameService;
-import cc.mrbird.febs.mall.vo.ApiCreateRoomVo;
-import cc.mrbird.febs.mall.vo.ApiFlashGameVo;
-import cc.mrbird.febs.mall.vo.ApiGamePlayerVo;
-import cc.mrbird.febs.mall.vo.ApiNextGameVo;
+import cc.mrbird.febs.mall.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
@@ -46,6 +43,15 @@
return gameService.chooseNum(apiChooseNumDto);
}
+ @ApiOperation(value = "GUESSROOMID获取房间信息", notes = "GUESSROOMID获取房间信息")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiRoomInfoVo.class)
+ })
+ @PostMapping(value = "/roomInfo")
+ public FebsResponse roomInfo(@RequestBody @Valid ApiRoomInfoDto apiRoomInfoDto) {
+ return gameService.roomInfo(apiRoomInfoDto);
+ }
+
@ApiOperation(value = "GUESS刷新当前一局", notes = "GUESS刷新当前一局")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = ApiNextGameVo.class)
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java
index 0ec38f0..bc2570b 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java
@@ -4,13 +4,14 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "ApiBindAddressDto", description = "参数接收类")
public class ApiBindAddressDto {
- @NotNull(message = "地址不能为空")
+ @NotBlank(message = "地址不能为空")
@ApiModelProperty(value = "地址", example = "1")
private String address;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiRoomInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiRoomInfoDto.java
new file mode 100644
index 0000000..03975e3
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiRoomInfoDto.java
@@ -0,0 +1,16 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiRoomInfoDto", description = "请求类")
+public class ApiRoomInfoDto {
+
+ @NotNull(message = "参数不能为空")
+ @ApiModelProperty(value = "房间ID")
+ private Long roomId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java b/src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java
index 6355859..c635199 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java
@@ -11,6 +11,7 @@
private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房
private String password;//房间密码(房间唯一编码,自动生成)
private Long ownerMemberId;//房主用户表ID
+ private String roomOwner;//房主用户表ID
private Integer state;//房间状态0-未开始1-正常2-结束
public static final Integer STATE_READY = 0;
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java b/src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java
index f7b8414..3d110c6 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java
@@ -11,6 +11,7 @@
private Long roomId;//
private Long memberId;//用户表ID
private Integer ownerState;//1-房主 2-玩家
+ private Integer state;//1-进入 2-退出
public static final Integer OWNER_TRUE = 1;
public static final Integer OWNER_FALSE = 2;
diff --git a/src/main/java/cc/mrbird/febs/mall/service/GameService.java b/src/main/java/cc/mrbird/febs/mall/service/GameService.java
index e873ac6..33e1e1e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/GameService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/GameService.java
@@ -45,4 +45,7 @@
FebsResponse existGame(ApiExistGameDto apiExistGameDto);
FebsResponse flashGame(ApiFlashGameDto apiFlashGameDto);
+
+ FebsResponse roomInfo(ApiRoomInfoDto apiRoomInfoDto);
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java
index ad6c898..889092b 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java
@@ -101,6 +101,24 @@
throw new FebsException("用户没有创建房间的权限!");
}
+ QueryWrapper<GameRoomChild> roomChildQueryWrapper = new QueryWrapper<>();
+ roomChildQueryWrapper.eq("member_id",memberId);
+ roomChildQueryWrapper.eq("state",GameRoomChild.OWNER_TRUE);
+ List<GameRoomChild> roomChildExists = gameRoomChildMapper.selectList(roomChildQueryWrapper);
+ if(CollUtil.isNotEmpty(roomChildExists)){
+ List<Long> roomIds = roomChildExists.stream().map(GameRoomChild::getRoomId).collect(Collectors.toList());
+
+ QueryWrapper<GameRoom> roomQuery = new QueryWrapper<>();
+ roomQuery.in("id",roomIds);
+ List<GameRoom> gameRooms = gameRoomMapper.selectList(roomQuery);
+ List<GameRoom> collect = gameRooms.stream().filter(room -> room.getState() != GameRoom.STATE_DONE).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(collect)){
+ if(collect.size() > 0){
+ throw new FebsException("请退出房间,房间码:"+collect.get(0).getPassword());
+ }
+ }
+ }
+
QueryWrapper<GameRoom> gameRoomQuery = new QueryWrapper<>();
gameRoomQuery.eq("owner_member_id",memberId);
gameRoomQuery.ne("state",GameRoom.STATE_DONE);
@@ -125,6 +143,7 @@
gameRoom.setRoomType(roomType);
gameRoom.setState(GameRoom.STATE_READY);
gameRoom.setOwnerMemberId(memberId);
+ gameRoom.setRoomOwner(mallMember.getAccountLogin());
gameRoom.setGameTime(gameTime);
gameRoomMapper.insert(gameRoom);
@@ -147,6 +166,7 @@
gameRoomChild.setRoomId(gameRoom.getId());
gameRoomChild.setOwnerState(GameRoomChild.OWNER_TRUE);
gameRoomChild.setMemberId(memberId);
+ gameRoomChild.setState(GameRoomChild.OWNER_TRUE);
gameRoomChildMapper.insert(gameRoomChild);
ApiCreateRoomVo apiCreateRoomVo = new ApiCreateRoomVo();
@@ -218,6 +238,7 @@
public void sendMsgByRoomId(Long roomId,String msg) {
QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>();
gameRoomChildQueryWrapper.eq("room_id",roomId);
+ gameRoomChildQueryWrapper.eq("state",GameRoomChild.OWNER_TRUE);
List<GameRoomChild> gameRoomChildrens = gameRoomChildMapper.selectList(gameRoomChildQueryWrapper);
if(CollUtil.isEmpty(gameRoomChildrens)){
return;
@@ -279,6 +300,7 @@
QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>();
gameRoomChildQueryWrapper.eq("room_id",gameRoom.getId());
gameRoomChildQueryWrapper.eq("member_id",memberId);
+ gameRoomChildQueryWrapper.eq("state",GameRoomChild.OWNER_TRUE);
GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper);
if(ObjectUtil.isEmpty(gameRoomChildExist)){
throw new FebsException("请重新进入房间");
@@ -290,7 +312,7 @@
throw new FebsException("余额不足");
}
if(amount.compareTo(balance) > 0){
- throw new FebsException("请减小金额");
+ throw new FebsException("余额不足");
}
GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(gameRoom.getRoomType());
@@ -346,28 +368,82 @@
gameGameChildMapper.insert(gameGameChild);
if(1 == chooseNum){
- BigDecimal add = gameGame.getPickOne().add(amount).setScale(2,BigDecimal.ROUND_DOWN);
- gameGame.setPickOne(add);
+ QueryWrapper<GameGameChild> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("game_id",gameId);
+ objectQueryWrapper.eq("pick_num",chooseNum);
+ List<GameGameChild> gameGameChildren = gameGameChildMapper.selectList(objectQueryWrapper);
+ BigDecimal tzAmount = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren)){
+ tzAmount = gameGameChildren.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ gameGame.setPickOne(tzAmount);
}
if(2 == chooseNum){
- BigDecimal add = gameGame.getPickTwo().add(amount).setScale(2,BigDecimal.ROUND_DOWN);
- gameGame.setPickTwo(add);
+ QueryWrapper<GameGameChild> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("game_id",gameId);
+ objectQueryWrapper.eq("pick_num",chooseNum);
+ List<GameGameChild> gameGameChildren = gameGameChildMapper.selectList(objectQueryWrapper);
+ BigDecimal tzAmount = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren)){
+ tzAmount = gameGameChildren.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ gameGame.setPickTwo(tzAmount);
}
if(3 == chooseNum){
- BigDecimal add = gameGame.getPickThree().add(amount).setScale(2,BigDecimal.ROUND_DOWN);
- gameGame.setPickThree(add);
+ QueryWrapper<GameGameChild> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("game_id",gameId);
+ objectQueryWrapper.eq("pick_num",chooseNum);
+ List<GameGameChild> gameGameChildren = gameGameChildMapper.selectList(objectQueryWrapper);
+ BigDecimal tzAmount = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren)){
+ tzAmount = gameGameChildren.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ gameGame.setPickThree(tzAmount);
}
if(4 == chooseNum){
- BigDecimal add = gameGame.getPickFour().add(amount).setScale(2,BigDecimal.ROUND_DOWN);
- gameGame.setPickFour(add);
+ QueryWrapper<GameGameChild> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("game_id",gameId);
+ objectQueryWrapper.eq("pick_num",chooseNum);
+ List<GameGameChild> gameGameChildren = gameGameChildMapper.selectList(objectQueryWrapper);
+ BigDecimal tzAmount = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren)){
+ tzAmount = gameGameChildren.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ gameGame.setPickFour(tzAmount);
}
if(5 == chooseNum){
- BigDecimal add = gameGame.getPickFive().add(amount).setScale(2,BigDecimal.ROUND_DOWN);
- gameGame.setPickFive(add);
+ QueryWrapper<GameGameChild> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("game_id",gameId);
+ objectQueryWrapper.eq("pick_num",chooseNum);
+ List<GameGameChild> gameGameChildren = gameGameChildMapper.selectList(objectQueryWrapper);
+ BigDecimal tzAmount = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren)){
+ tzAmount = gameGameChildren.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ gameGame.setPickFive(tzAmount);
}
if(6 == chooseNum){
- BigDecimal add = gameGame.getPickSix().add(amount).setScale(2,BigDecimal.ROUND_DOWN);
- gameGame.setPickSix(add);
+ QueryWrapper<GameGameChild> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("game_id",gameId);
+ objectQueryWrapper.eq("pick_num",chooseNum);
+ List<GameGameChild> gameGameChildren = gameGameChildMapper.selectList(objectQueryWrapper);
+ BigDecimal tzAmount = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren)){
+ tzAmount = gameGameChildren.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ gameGame.setPickSix(tzAmount);
}
gameGameMapper.updateById(gameGame);
@@ -388,7 +464,9 @@
@Override
@Transactional(rollbackFor = Exception.class)
public FebsResponse gameIn(ApiGameDto apiGameDto) {
+
Long memberId = LoginUserUtil.getLoginUser().getId();
+ log.info("加入房间:"+memberId);
/**
* 验证唯一房间编码是否存在
* 验证当前是否已经加入过该房间
@@ -410,62 +488,66 @@
QueryWrapper<GameRoomChild> roomChildQueryWrapper = new QueryWrapper<>();
roomChildQueryWrapper.eq("member_id",memberId);
+ roomChildQueryWrapper.eq("state",GameRoomChild.OWNER_TRUE);
List<GameRoomChild> roomChildExists = gameRoomChildMapper.selectList(roomChildQueryWrapper);
if(CollUtil.isNotEmpty(roomChildExists)){
List<Long> roomIds = roomChildExists.stream().map(GameRoomChild::getRoomId).collect(Collectors.toList());
-
- QueryWrapper<GameRoom> roomQuery = new QueryWrapper<>();
- roomQuery.in("id",roomIds);
- List<GameRoom> gameRooms = gameRoomMapper.selectList(roomQuery);
- List<GameRoom> collect = gameRooms.stream().filter(room -> room.getState() != GameRoom.STATE_DONE).collect(Collectors.toList());
- if(CollUtil.isNotEmpty(collect)){
- if(collect.size() > 1){
- throw new FebsException("请回到房间,房间码:"+collect.get(0).getPassword());
+ roomIds.remove(gameRoom.getId());
+ if(CollUtil.isNotEmpty(roomIds)){
+ QueryWrapper<GameRoom> roomQuery = new QueryWrapper<>();
+ roomQuery.in("id",roomIds);
+ List<GameRoom> gameRooms = gameRoomMapper.selectList(roomQuery);
+ List<GameRoom> collect = gameRooms.stream().filter(room -> room.getState() != GameRoom.STATE_DONE).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(collect)){
+ if(collect.size() > 0){
+ throw new FebsException("请退出房间,房间码:"+collect.get(0).getPassword());
+ }
}
}
}
-
ApiGamePlayerVo apiGamePlayerVo = new ApiGamePlayerVo();
QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>();
gameRoomChildQueryWrapper.eq("room_id",gameRoom.getId());
gameRoomChildQueryWrapper.eq("member_id",memberId);
+ gameRoomChildQueryWrapper.eq("owner_state",GameRoomChild.OWNER_TRUE);
GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper);
MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
BigDecimal balance = mallMemberWallet.getBalance();
GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(gameRoom.getRoomType());
if(ObjectUtil.isNotEmpty(gameRoomChildExist)){
- Integer ownerState = gameRoomChildExist.getOwnerState();
- if(GameRoomChild.OWNER_TRUE == ownerState){
- BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2,BigDecimal.ROUND_DOWN);
- if(roomAmount.compareTo(balance) > 0){
- throw new FebsException("进入房间,需要"+roomAmount+",请先充值");
- }
- }else{
- BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN);
- if(minAmount.compareTo(balance) > 0){
- throw new FebsException("继续游戏需要"+minAmount+",请先充值");
- }
+ BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2,BigDecimal.ROUND_DOWN);
+ if(roomAmount.compareTo(balance) > 0){
+ throw new FebsException("进入房间,需要"+roomAmount+",请先充值");
}
+ apiGamePlayerVo.setPlayerType(GameRoomChild.OWNER_TRUE);
}else{
BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN);
if(minAmount.compareTo(balance) > 0){
throw new FebsException("继续游戏需要"+minAmount+",请先充值");
}
+ apiGamePlayerVo.setPlayerType(GameRoomChild.OWNER_FALSE);
}
- if(ObjectUtil.isNotEmpty(gameRoomChildExist)){
- apiGamePlayerVo.setPlayerType(gameRoomChildExist.getOwnerState());
- }else{
+
+ QueryWrapper<GameRoomChild> childQueryWrapper = new QueryWrapper<>();
+ childQueryWrapper.eq("room_id",gameRoom.getId());
+ childQueryWrapper.eq("member_id",memberId);
+ GameRoomChild childQueryWrapperExist = gameRoomChildMapper.selectOne(childQueryWrapper);
+
+ if(ObjectUtil.isNotEmpty(childQueryWrapperExist)){
+ childQueryWrapperExist.setState(GameRoomChild.OWNER_TRUE);
+ gameRoomChildMapper.updateById(childQueryWrapperExist);
+ }else{
GameRoomChild gameRoomChild = new GameRoomChild();
gameRoomChild.setRoomId(gameRoom.getId());
gameRoomChild.setMemberId(memberId);
gameRoomChild.setOwnerState(GameRoomChild.OWNER_FALSE);
+ gameRoomChild.setState(GameRoomChild.OWNER_TRUE);
gameRoomChildMapper.insert(gameRoomChild);
- apiGamePlayerVo.setPlayerType(gameRoomChild.getOwnerState());
}
apiGamePlayerVo.setBalance(balance);
@@ -526,6 +608,7 @@
gameRoomChildQueryWrapper.eq("room_id",roomId);
gameRoomChildQueryWrapper.eq("member_id",memberId);
gameRoomChildQueryWrapper.eq("owner_state",GameRoomChild.OWNER_TRUE);
+ gameRoomChildQueryWrapper.eq("state",GameRoomChild.OWNER_TRUE);
GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper);
if(ObjectUtil.isEmpty(gameRoomChildExist)){
throw new FebsException("房间不存在");
@@ -695,23 +778,16 @@
QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>();
gameRoomChildQueryWrapper.eq("room_id",gameRoom.getId());
gameRoomChildQueryWrapper.eq("member_id",memberId);
+ gameRoomChildQueryWrapper.eq("owner_state",GameRoomChild.OWNER_TRUE);
GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper);
MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
BigDecimal balance = mallMemberWallet.getBalance();
GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(gameRoom.getRoomType());
if(ObjectUtil.isNotEmpty(gameRoomChildExist)){
- Integer ownerState = gameRoomChildExist.getOwnerState();
- if(GameRoomChild.OWNER_TRUE == ownerState){
- BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2,BigDecimal.ROUND_DOWN);
- if(roomAmount.compareTo(balance) > 0){
- throw new FebsException("进入房间,需要"+roomAmount+",请先充值");
- }
- }else{
- BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN);
- if(minAmount.compareTo(balance) > 0){
- throw new FebsException("继续游戏需要"+minAmount+",请先充值");
- }
+ BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2,BigDecimal.ROUND_DOWN);
+ if(roomAmount.compareTo(balance) > 0){
+ throw new FebsException("进入房间,需要"+roomAmount+",请先充值");
}
}else{
BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN);
@@ -720,19 +796,11 @@
}
}
- if(ObjectUtil.isNotEmpty(gameRoomChildExist)){
- apiGamePlayerVo.setPlayerType(gameRoomChildExist.getOwnerState());
- }else{
- GameRoomChild gameRoomChild = new GameRoomChild();
- gameRoomChild.setRoomId(gameRoom.getId());
- gameRoomChild.setMemberId(memberId);
- gameRoomChild.setOwnerState(GameRoomChild.OWNER_FALSE);
- gameRoomChildMapper.insert(gameRoomChild);
- apiGamePlayerVo.setPlayerType(gameRoomChild.getOwnerState());
- }
+ apiGamePlayerVo.setPlayerType(ObjectUtil.isNotEmpty(gameRoomChildExist) ? GameRoomChild.OWNER_TRUE : GameRoomChild.OWNER_FALSE);
apiGamePlayerVo.setBalance(balance);
apiGamePlayerVo.setRoomType(gameRoom.getRoomType());
apiGamePlayerVo.setRoomId(gameRoom.getId());
+ apiGamePlayerVo.setRoomOwner(gameRoom.getRoomOwner());
apiGamePlayerVo.setPassword(gameRoom.getPassword());
apiGamePlayerVo.setState(gameRoom.getState());
apiGamePlayerVo.setGameTime(gameRoom.getGameTime());
@@ -763,6 +831,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public FebsResponse existGame(ApiExistGameDto apiExistGameDto) {
Long memberId = LoginUserUtil.getLoginUser().getId();
Long roomId = apiExistGameDto.getRoomId();
@@ -777,6 +846,9 @@
if(ObjectUtil.isEmpty(gameRoomChildExist)){
throw new FebsException("房间不存在");
}
+ gameRoomChildExist.setState(GameRoomChild.OWNER_FALSE);
+ gameRoomChildMapper.updateById(gameRoomChildExist);
+
Integer ownerState = gameRoomChildExist.getOwnerState();
//如果退出的是房主,那么游戏结束
if(GameRoomChild.OWNER_TRUE == ownerState){
@@ -789,7 +861,29 @@
webSocketRes.setCode(200);
webSocketRes.setMsg("OVER");
this.sendMsgByRoomId(roomId, JSONUtil.parse(webSocketRes).toString());
-// this.sendMsgByRoomId(roomId,"OVER");
+ }
+
+ QueryWrapper<GameGame> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("room_id",roomId);
+ objectQueryWrapper.eq("state",GameGame.STATE_READY);
+ List<GameGame> gameGames = gameGameMapper.selectList(objectQueryWrapper);
+ if(ObjectUtil.isNotEmpty(gameGames)){
+ for(GameGame game :gameGames){
+ ApiEndGameDto apiEndGameDto = new ApiEndGameDto();
+ apiEndGameDto.setRoomId(roomId);
+ apiEndGameDto.setGameId(game.getId());
+ this.endGame(apiEndGameDto);
+ }
+ }
+
+ QueryWrapper<GameRoomChild> roomChildQueryWrapper = new QueryWrapper<>();
+ roomChildQueryWrapper.eq("room_id",roomId);
+ List<GameRoomChild> gameRoomChildren = gameRoomChildMapper.selectList(roomChildQueryWrapper);
+ if(ObjectUtil.isNotEmpty(gameRoomChildren)){
+ for(GameRoomChild child : gameRoomChildren){
+ child.setState(GameRoomChild.OWNER_FALSE);
+ gameRoomChildMapper.updateById(child);
+ }
}
}
//断开websocket
@@ -812,16 +906,168 @@
apiFlashGameVo.setFirstNum(gameGame.getFirstNum());
apiFlashGameVo.setSecondNum(gameGame.getSecondNum());
apiFlashGameVo.setState(gameGame.getState());
- apiFlashGameVo.setPickOne(gameGame.getPickOne());
- apiFlashGameVo.setPickTwo(gameGame.getPickTwo());
- apiFlashGameVo.setPickThree(gameGame.getPickThree());
- apiFlashGameVo.setPickFour(gameGame.getPickFour());
- apiFlashGameVo.setPickFive(gameGame.getPickFive());
- apiFlashGameVo.setPickSix(gameGame.getPickSix());
+
+ QueryWrapper<GameGameChild> objectQueryWrapper1 = new QueryWrapper<>();
+ objectQueryWrapper1.eq("game_id",gameId);
+ objectQueryWrapper1.eq("pick_num",1);
+ List<GameGameChild> gameGameChildren1 = gameGameChildMapper.selectList(objectQueryWrapper1);
+ BigDecimal tzAmount1 = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren1)){
+ tzAmount1 = gameGameChildren1.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ apiFlashGameVo.setPickOne(tzAmount1);
+
+ QueryWrapper<GameGameChild> objectQueryWrapper2 = new QueryWrapper<>();
+ objectQueryWrapper2.eq("game_id",gameId);
+ objectQueryWrapper2.eq("pick_num",2);
+ List<GameGameChild> gameGameChildren2 = gameGameChildMapper.selectList(objectQueryWrapper2);
+ BigDecimal tzAmount2 = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren2)){
+ tzAmount2 = gameGameChildren2.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ apiFlashGameVo.setPickTwo(tzAmount2);
+
+ QueryWrapper<GameGameChild> objectQueryWrapper3 = new QueryWrapper<>();
+ objectQueryWrapper3.eq("game_id",gameId);
+ objectQueryWrapper3.eq("pick_num",3);
+ List<GameGameChild> gameGameChildren3 = gameGameChildMapper.selectList(objectQueryWrapper3);
+ BigDecimal tzAmount3 = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren3)){
+ tzAmount3 = gameGameChildren3.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ apiFlashGameVo.setPickThree(tzAmount3);
+
+ QueryWrapper<GameGameChild> objectQueryWrapper4 = new QueryWrapper<>();
+ objectQueryWrapper4.eq("game_id",gameId);
+ objectQueryWrapper4.eq("pick_num",4);
+ List<GameGameChild> gameGameChildren4 = gameGameChildMapper.selectList(objectQueryWrapper4);
+ BigDecimal tzAmount4 = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren4)){
+ tzAmount4 = gameGameChildren4.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ apiFlashGameVo.setPickFour(tzAmount4);
+
+ QueryWrapper<GameGameChild> objectQueryWrapper5 = new QueryWrapper<>();
+ objectQueryWrapper5.eq("game_id",gameId);
+ objectQueryWrapper5.eq("pick_num",5);
+ List<GameGameChild> gameGameChildren5 = gameGameChildMapper.selectList(objectQueryWrapper5);
+ BigDecimal tzAmount5 = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren5)){
+ tzAmount5 = gameGameChildren5.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ apiFlashGameVo.setPickFive(tzAmount5);
+
+ QueryWrapper<GameGameChild> objectQueryWrapper6 = new QueryWrapper<>();
+ objectQueryWrapper6.eq("game_id",gameId);
+ objectQueryWrapper6.eq("pick_num",6);
+ List<GameGameChild> gameGameChildren6 = gameGameChildMapper.selectList(objectQueryWrapper6);
+ BigDecimal tzAmount6 = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(gameGameChildren6)){
+ tzAmount6 = gameGameChildren6.stream()
+ .map(GameGameChild::getAmount) // 映射amount到流中
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ apiFlashGameVo.setPickSix(tzAmount6);
return new FebsResponse().success().data(apiFlashGameVo);
}
+ @Override
+ public FebsResponse roomInfo(ApiRoomInfoDto apiRoomInfoDto) {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ Long roomId = apiRoomInfoDto.getRoomId();
+ GameRoom gameRoom = gameRoomMapper.selectById(roomId);
+ if(ObjectUtil.isEmpty(gameRoom)){
+ throw new FebsException("房间不存在");
+ }
+
+ if(GameRoom.STATE_DONE == gameRoom.getState()){
+ throw new FebsException("房间已失效");
+ }
+
+ ApiRoomInfoVo apiRoomInfoVo = new ApiRoomInfoVo();
+
+ QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>();
+ gameRoomChildQueryWrapper.eq("room_id",gameRoom.getId());
+ gameRoomChildQueryWrapper.eq("member_id",memberId);
+ gameRoomChildQueryWrapper.eq("owner_state",GameRoomChild.OWNER_TRUE);
+ GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper);
+
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ BigDecimal balance = mallMemberWallet.getBalance();
+ GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(gameRoom.getRoomType());
+ if(ObjectUtil.isNotEmpty(gameRoomChildExist)){
+ BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2,BigDecimal.ROUND_DOWN);
+ if(roomAmount.compareTo(balance) > 0){
+ throw new FebsException("进入房间,需要"+roomAmount+",请先充值");
+ }
+ apiRoomInfoVo.setPlayerType(GameRoomChild.OWNER_TRUE);
+ }else{
+ BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN);
+ if(minAmount.compareTo(balance) > 0){
+ throw new FebsException("继续游戏需要"+minAmount+",请先充值");
+ }
+ apiRoomInfoVo.setPlayerType(GameRoomChild.OWNER_FALSE);
+ }
+
+
+
+ QueryWrapper<GameRoomChild> childQueryWrapper = new QueryWrapper<>();
+ childQueryWrapper.eq("room_id",gameRoom.getId());
+ childQueryWrapper.eq("member_id",memberId);
+ GameRoomChild childQueryWrapperExist = gameRoomChildMapper.selectOne(childQueryWrapper);
+
+ if(ObjectUtil.isNotEmpty(childQueryWrapperExist)){
+ childQueryWrapperExist.setState(GameRoomChild.OWNER_TRUE);
+ gameRoomChildMapper.updateById(childQueryWrapperExist);
+ }
+ apiRoomInfoVo.setBalance(balance);
+
+ apiRoomInfoVo.setRoomType(gameRoom.getRoomType());
+ apiRoomInfoVo.setRoomId(gameRoom.getId());
+ apiRoomInfoVo.setPassword(gameRoom.getPassword());
+ apiRoomInfoVo.setState(gameRoom.getState());
+ apiRoomInfoVo.setGameTime(gameRoom.getGameTime());
+
+ Long ownerMemberId = gameRoom.getOwnerMemberId();
+ MallMember mallMember = mallMemberMapper.selectById(ownerMemberId);
+ apiRoomInfoVo.setRoomOwner(mallMember.getAccountLogin());
+
+ QueryWrapper<GameGame> gameGameQueryWrapper = new QueryWrapper<>();
+ gameGameQueryWrapper.eq("room_id",gameRoom.getId());
+ gameGameQueryWrapper.orderByDesc("CREATED_TIME");
+ gameGameQueryWrapper.last("limit 5");
+ List<GameGame> gameGames = gameGameMapper.selectList(gameGameQueryWrapper);
+ List<ApiGameGameVo> apiGameGameVos = new ArrayList<>();
+ if(CollUtil.isNotEmpty(gameGames)){
+ for(GameGame gameGame : gameGames){
+ ApiGameGameVo apiGameGameVo = new ApiGameGameVo();
+ apiGameGameVo.setFirstNum(ObjectUtil.isEmpty(gameGame.getFirstNum()) ? 0 : gameGame.getFirstNum());
+ apiGameGameVo.setSecondNum(ObjectUtil.isEmpty(gameGame.getSecondNum()) ? 0 : gameGame.getSecondNum());
+ apiGameGameVo.setState(gameGame.getState());
+ apiGameGameVo.setPerkTime(gameGame.getPerkTime());
+ if(GameGame.STATE_READY == gameGame.getState()){
+ apiRoomInfoVo.setGameId(gameGame.getId());
+ apiRoomInfoVo.setCreatedTime(gameGame.getCreatedTime());
+ }
+ apiGameGameVos.add(apiGameGameVo);
+ }
+ }
+ apiRoomInfoVo.setApiGameGameVos(apiGameGameVos);
+
+ return new FebsResponse().success().data(apiRoomInfoVo);
+ }
+
public static void main(String[] args) {
System.out.println(ShareCodeUtil.toSerialNumberCodeTwo(1L));
List<GameRoomTypeEnum> roomLists = GameRoomTypeEnum.ROOM_ONE.getRoomList();
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java
index 1968b3c..84d40c8 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java
@@ -11,6 +11,9 @@
@ApiModelProperty(value = "房间ID")
private Long roomId;
+ @ApiModelProperty(value = "游戏ID")
+ private Long gameId;
+
@ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房")
private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java
index e411fb9..6c1f08c 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java
@@ -32,6 +32,9 @@
@ApiModelProperty(value = "一局游戏时长")
private Integer gameTime;
+ @ApiModelProperty(value = "房主昵称")
+ private String roomOwner;//房间类型 1-初级房2-土豪房3-尊爵房
+
@ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房")
private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiRoomInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiRoomInfoVo.java
new file mode 100644
index 0000000..4c80038
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiRoomInfoVo.java
@@ -0,0 +1,49 @@
+package cc.mrbird.febs.mall.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel(value = "ApiRoomInfoVo", description = "信息返回类")
+public class ApiRoomInfoVo {
+
+ @ApiModelProperty(value = "房间ID")
+ private Long roomId;
+
+ @ApiModelProperty(value = "当前局游戏ID")
+ private Long gameId;
+
+ @ApiModelProperty(value = "身份类型 1-房主 2-玩家")
+ private Integer playerType;//房间类型 1-初级房2-土豪房3-尊爵房
+
+ @ApiModelProperty(value = "余额")
+ private BigDecimal balance;
+
+ @ApiModelProperty(value = "时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createdTime;
+
+ @ApiModelProperty(value = "一局游戏时长")
+ private Integer gameTime;
+
+ @ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房")
+ private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房
+
+ @ApiModelProperty(value = "房主昵称")
+ private String roomOwner;//房间类型 1-初级房2-土豪房3-尊爵房
+
+ @ApiModelProperty(value = "房间状态0-未开始1-正常2-结束")
+ private Integer state;//房间状态0-未开始1-正常2-结束
+
+ @ApiModelProperty(value = "房间唯一编码,自动生成")
+ private String password;//房间密码(房间唯一编码,自动生成)
+
+ @ApiModelProperty(value = "历史开奖记录目前是5局")
+ private List<ApiGameGameVo> apiGameGameVos;//房间密码(房间唯一编码,自动生成)
+}
diff --git a/src/main/java/cc/mrbird/febs/websocket/HttpAuthHandler.java b/src/main/java/cc/mrbird/febs/websocket/HttpAuthHandler.java
index 240eae1..e544531 100644
--- a/src/main/java/cc/mrbird/febs/websocket/HttpAuthHandler.java
+++ b/src/main/java/cc/mrbird/febs/websocket/HttpAuthHandler.java
@@ -32,7 +32,7 @@
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
- log.info("收到消息--{}", message.getPayload());
+// log.info("收到消息--{}", message.getPayload());
WebSocketRes webSocketRes = new WebSocketRes();
webSocketRes.setCode(200);
webSocketRes.setMsg("PONG");
--
Gitblit v1.9.1