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/service/impl/GameServiceImpl.java |  376 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 311 insertions(+), 65 deletions(-)

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();

--
Gitblit v1.9.1