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