From 43ed39e14dc6b0c8cb7ba86a29d9931c0a665006 Mon Sep 17 00:00:00 2001 From: zhizhi wu <2377881365@qq.com> Date: Thu, 20 Aug 2020 22:05:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E8=83=9C=E9=98=9F=E4=BC=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ccsens/game/service/ScreenService.java | 74 ++++++++++++------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/game/src/main/java/com/ccsens/game/service/ScreenService.java b/game/src/main/java/com/ccsens/game/service/ScreenService.java index 3ffd7ab2..7dc11a02 100644 --- a/game/src/main/java/com/ccsens/game/service/ScreenService.java +++ b/game/src/main/java/com/ccsens/game/service/ScreenService.java @@ -507,7 +507,7 @@ public class ScreenService implements IScreenService { //查询游戏是否有分组 GameType gameType = gameTypeDao.selectByPrimaryKey(gameUserPay.getGameTypeId()); ScreenVo.CompletedData completedData; - if (gameType.getIsGroup() == 0) { + if (gameRecord.getGameGroup() == GameConstant.GAME_SINGLE) { completedData = getCompletedData(memberRecord.getMemberRecord()); } else { completedData = getCompletedDataByWin(memberRecord.getMemberRecord()); @@ -677,37 +677,61 @@ public class ScreenService implements IScreenService { /** * 结束时查询胜利组的信息(总分数,总次数,平均以及前十名) */ + + + private ScreenVo.CompletedData getCompletedDataByWin(Long gameRecordId) { ScreenVo.CompletedData completedData = new ScreenVo.CompletedData(); + String groupKey = gameRecordId + "_group"; + Set> typedTuples = redisUtil.zsRevGetWithScore(groupKey, 0, -1); + Iterator> iterator = typedTuples.iterator(); + ZSetOperations.TypedTuple next = iterator.next(); + GameGroup gameGroup = JSON.parseObject((String) next.getValue(), GameGroup.class); + int score = next.getScore().intValue(); + completedData.setTotalScore(score); + completedData.setTotalTimes(score/100); + Object o = redisUtil.get(gameGroup.getId() + GameConstant.GAME_GROUP_NUM); + if (o==null) { + o = 0; + } + completedData.setTotalMember((int)o); + completedData.setAverageTimes((int)o == 0 ? 0 : completedData.getTotalTimes()/(int)o); + completedData.setWinGroup(gameGroup.getName()); + + + GameUserJoinExample joinExample = new GameUserJoinExample(); + joinExample.createCriteria().andRecordIdEqualTo(gameRecordId).andScoreGreaterThan(completedData.getAverageTimes()); + long l = gameUserJoinDao.countByExample(joinExample); + completedData.setOver((int)o == 0 ? 0 : (int) (l * 100 / (int) o)); //TODO 1、分别查询redis内每个队伍的总分, //2、查询获胜队伍的信息 //3、redis内没有则查询数据库 //查询分组信息 - GameGroupExample gameGroupExample = new GameGroupExample(); - gameGroupExample.createCriteria().andRecordIdEqualTo(gameRecordId); - List gameGroupList = gameGroupDao.selectByExample(gameGroupExample); - if (CollectionUtil.isNotEmpty(gameGroupList)) { - List userJoinList = null; - //分别查找两个队伍的总分 - Map group1 = getGroupTotalScore(gameGroupList.get(0).getId()); - Map group2 = getGroupTotalScore(gameGroupList.get(1).getId()); - if (CollectionUtil.isNotEmpty(group1) && CollectionUtil.isNotEmpty(group2)) { - int score1 = (int) group1.get("totalScore"); - int score2 = (int) group2.get("totalScore"); - if (score1 > score2) { - userJoinList = (List) group1.get("userJoinList"); - completedData.setTotalMember(userJoinList.size()); - completedData.setWinGroup(gameGroupList.get(0).getName()); - } else { - userJoinList = (List) group2.get("userJoinList"); - completedData.setTotalMember(userJoinList.size()); - completedData.setWinGroup(gameGroupList.get(1).getName()); - } - } - //5、获取获胜队伍的信息 - completedData = getCompletedData(userJoinList); - } +// GameGroupExample gameGroupExample = new GameGroupExample(); +// gameGroupExample.createCriteria().andRecordIdEqualTo(gameRecordId); +// List gameGroupList = gameGroupDao.selectByExample(gameGroupExample); +// if (CollectionUtil.isNotEmpty(gameGroupList)) { +// List userJoinList = null; +// //分别查找两个队伍的总分 +// Map group1 = getGroupTotalScore(gameGroupList.get(0).getId()); +// Map group2 = getGroupTotalScore(gameGroupList.get(1).getId()); +// if (CollectionUtil.isNotEmpty(group1) && CollectionUtil.isNotEmpty(group2)) { +// int score1 = (int) group1.get("totalScore"); +// int score2 = (int) group2.get("totalScore"); +// if (score1 > score2) { +// userJoinList = (List) group1.get("userJoinList"); +// completedData.setTotalMember(userJoinList.size()); +// completedData.setWinGroup(gameGroupList.get(0).getName()); +// } else { +// userJoinList = (List) group2.get("userJoinList"); +// completedData.setTotalMember(userJoinList.size()); +// completedData.setWinGroup(gameGroupList.get(1).getName()); +// } +// } +// //5、获取获胜队伍的信息 +// completedData = getCompletedData(userJoinList); +// } //前十名 List top2 = getTopUsers(gameRecordId); completedData.setMembers(top2);