diff --git a/game/src/main/java/com/ccsens/game/service/ClientService.java b/game/src/main/java/com/ccsens/game/service/ClientService.java index 83d9037b..5a773fcf 100644 --- a/game/src/main/java/com/ccsens/game/service/ClientService.java +++ b/game/src/main/java/com/ccsens/game/service/ClientService.java @@ -77,10 +77,22 @@ public class ClientService implements IClientService { log.info("未找到游戏信息"); throw new BaseException(CodeEnum.PARAM_ERROR); } + boolean isGroup = gameRecord.getGameGroup() == GameConstant.GAME_GROUP; + + if (isGroup) { + if (ObjectUtil.isNull(join.getGroupId())) { + log.info("分组信息为空"); + throw new BaseException(CodeEnum.GROUP_NOT_CHOICE); + } + GameGroup gameGroup = gameGroupDao.selectByPrimaryKey(join.getGroupId()); + if(gameGroup == null || gameGroup.getRecordId().longValue() != join.getUrlId().longValue()){ + log.info("分组信息不正确,分组id:{},游戏id:{}",join.getGroupId(),join.getUrlId()); + throw new BaseException(CodeEnum.PARAM_ERROR); + } + } //获取游戏的购买记录和类型 // TODO 暂时没有购买相关的,先不查询 // GameUserPay gameUserPay = gameUserPayDao.selectByPrimaryKey(gameRecord.getUserPayId()); - boolean isGroup = gameRecord.getGameGroup() == GameConstant.GAME_GROUP; //根据游戏ID和用户ID查询用户是否加入 GameUserJoinExample example = new GameUserJoinExample(); @@ -91,12 +103,7 @@ public class ClientService implements IClientService { //查询结果,返回对应的信息 return joinResult(gameUserJoins.get(0), gameRecord, isGroup, join.getGroupId()); } - if (isGroup) { - if (ObjectUtil.isNull(join.getGroupId())) { - log.info("分组信息为空"); - throw new BaseException(CodeEnum.GROUP_NOT_CHOICE); - } - } + //游戏已结束 if (gameRecord.getGameStatus().byteValue() == GameConstant.GAME_COMPLETED) { 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 6c1c2aee..38f508bf 100644 --- a/game/src/main/java/com/ccsens/game/service/ScreenService.java +++ b/game/src/main/java/com/ccsens/game/service/ScreenService.java @@ -39,7 +39,6 @@ import java.io.*; import java.util.*; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.atomic.AtomicInteger; /** * @author zy @@ -232,7 +231,7 @@ public class ScreenService implements IScreenService { if(StrUtil.isNotEmpty(durationStr)){ boolean match = StringUtil.isMatch(durationStr, StringUtil.NUMBER_DOUBLE); if(match){ - int duration = (int) Double.parseDouble(durationStr) * 60; + int duration = (int) (Double.parseDouble(durationStr) * 60); gameRecord.setDuration(duration); }else { throw new BaseException(CodeEnum.NOT_CONFIG_OR_ERR); @@ -687,29 +686,33 @@ public class ScreenService implements IScreenService { String groupKey = gameRecord.getId() + "_group"; Set> typedTuples = redisUtil.zsRevGetWithScore(groupKey, 0, -1); log.info("查询成绩redis:{}", typedTuples); + ScreenVo.CompletedData completedData = new ScreenVo.CompletedData(); List list = new ArrayList<>(); if (CollectionUtil.isNotEmpty(typedTuples)) { typedTuples.forEach(type -> { - ScreenVo.CompletedData completedData = new ScreenVo.CompletedData(); - GameGroup gameGroup = JSON.parseObject((String) type.getValue(), GameGroup.class); - int score = type.getScore().intValue(); - Object o = redisUtil.get(gameGroup.getId() + GameConstant.GAME_GROUP_NUM); - if (o==null) { - o = 0; - } - completedData.setTotalMember((int)o); - completedData.setTotalScore(score); - completedData.setAverageScore((int)o == 0 ? 0 : completedData.getTotalScore()/(int)o); - completedData.setTotalTimes(score/100); - completedData.setAverageTimes((int)o == 0 ? 0 : completedData.getTotalTimes()/(int)o); - completedData.setWinGroup(gameGroup.getName()); - GameUserJoinExample joinExample = new GameUserJoinExample(); - joinExample.createCriteria().andRecordIdEqualTo(gameRecord.getId()).andScoreGreaterThan(completedData.getAverageTimes()); - long l = gameUserJoinDao.countByExample(joinExample); - completedData.setOver(totalMember == 0 ? 0 : (int) (l * 100 / totalMember)); - list.add(completedData); + completedData.setTotalScore(completedData.getTotalScore() + type.getScore().intValue()); + + +// ScreenVo.CompletedData completedData = new ScreenVo.CompletedData(); +//// GameGroup gameGroup = JSON.parseObject((String) type.getValue(), GameGroup.class); +//// int score = type.getScore().intValue(); +//// Object o = redisUtil.get(gameGroup.getId() + GameConstant.GAME_GROUP_NUM); +//// if (o==null) { +//// o = 0; +//// } +//// completedData.setTotalMember((int)o); +//// completedData.setTotalScore(score); +//// completedData.setAverageScore((int)o == 0 ? 0 : completedData.getTotalScore()/(int)o); +//// completedData.setTotalTimes(score/100); +//// completedData.setAverageTimes((int)o == 0 ? 0 : completedData.getTotalTimes()/(int)o); +//// completedData.setWinGroup(gameGroup.getName()); +//// GameUserJoinExample joinExample = new GameUserJoinExample(); +//// joinExample.createCriteria().andRecordIdEqualTo(gameRecord.getId()).andScoreGreaterThan(completedData.getAverageTimes()); +//// long l = gameUserJoinDao.countByExample(joinExample); +//// completedData.setOver(totalMember == 0 ? 0 : (int) (l * 100 / totalMember)); +//// list.add(completedData); }); } else { @@ -720,35 +723,36 @@ public class ScreenService implements IScreenService { } groupVos.forEach(groupVo -> { - groupVo.setScore(groupVo.getTotalMembers() == null || groupVo.getTotalMembers() == 0 ? 0 : groupVo.getScore()/groupVo.getTotalMembers()); - ScreenVo.CompletedData completedData = new ScreenVo.CompletedData(); - - int members = groupVo.getTotalMembers() == null ? 0 : groupVo.getTotalMembers(); - completedData.setTotalMember(members); - completedData.setTotalScore(groupVo.getScore()); - completedData.setAverageScore(members == 0 ? 0 : completedData.getTotalScore()/members); - completedData.setTotalTimes(groupVo.getScore() == null ? 0 : groupVo.getScore()/100); - completedData.setAverageTimes(members == 0 ? 0 : completedData.getTotalTimes()/members); - completedData.setWinGroup(groupVo.getGroupName()); - GameUserJoinExample joinExample = new GameUserJoinExample(); - joinExample.createCriteria().andRecordIdEqualTo(gameRecord.getId()).andScoreGreaterThan(completedData.getAverageTimes()); - long l = gameUserJoinDao.countByExample(joinExample); - completedData.setOver(totalMember == 0 ? 0 : (int) (l * 100 /totalMember)); - list.add(completedData); + completedData.setTotalScore((groupVo.getScore() == null ? 0 : groupVo.getScore()) + completedData.getTotalScore()); +// groupVo.setScore(groupVo.getTotalMembers() == null || groupVo.getTotalMembers() == 0 ? 0 : groupVo.getScore()/groupVo.getTotalMembers()); +// ScreenVo.CompletedData completedData = new ScreenVo.CompletedData(); +// +// int members = groupVo.getTotalMembers() == null ? 0 : groupVo.getTotalMembers(); +// completedData.setTotalMember(members); +// completedData.setTotalScore(groupVo.getScore()); +// completedData.setAverageScore(members == 0 ? 0 : completedData.getTotalScore()/members); +// completedData.setTotalTimes(groupVo.getScore() == null ? 0 : groupVo.getScore()/100); +// completedData.setAverageTimes(members == 0 ? 0 : completedData.getTotalTimes()/members); +// completedData.setWinGroup(groupVo.getGroupName()); +// GameUserJoinExample joinExample = new GameUserJoinExample(); +// joinExample.createCriteria().andRecordIdEqualTo(gameRecord.getId()).andScoreGreaterThan(completedData.getAverageTimes()); +// long l = gameUserJoinDao.countByExample(joinExample); +// completedData.setOver(totalMember == 0 ? 0 : (int) (l * 100 /totalMember)); +// list.add(completedData); }); - - - - - - - } + completedData.setAverageScore(totalMember == 0 ? 0 : completedData.getTotalScore() / totalMember); + completedData.setTotalTimes(completedData.getTotalScore() / 100); + completedData.setAverageTimes(totalMember == 0 ? 0 : completedData.getTotalTimes() / totalMember); - if (gameRecord.getRankRule() == GameConstant.RANK_RULE_AVA) { - CollectionUtil.sort(list, (t1,t2)-> t2.getAverageScore() - t1.getAverageScore()); - } + GameUserJoinExample joinExample = new GameUserJoinExample(); + joinExample.createCriteria().andRecordIdEqualTo(gameRecord.getId()).andScoreGreaterThan(completedData.getAverageScore()); + long l = gameUserJoinDao.countByExample(joinExample); + completedData.setOver(totalMember == 0 ? 0 : (int) (l * 100 / totalMember)); +// if (gameRecord.getRankRule() == GameConstant.RANK_RULE_AVA) { +// CollectionUtil.sort(list, (t1,t2)-> t2.getAverageScore() - t1.getAverageScore()); +// } //TODO 1、分别查询redis内每个队伍的总分, @@ -781,7 +785,7 @@ public class ScreenService implements IScreenService { // completedData = getCompletedData(userJoinList); // } //前十名 - ScreenVo.CompletedData completedData = list.get(0); +// ScreenVo.CompletedData completedData = list.get(0); List top2 = getTopUsers(gameRecord.getId()); completedData.setMembers(top2); return completedData; diff --git a/game/src/main/java/com/ccsens/game/util/SendMsg.java b/game/src/main/java/com/ccsens/game/util/SendMsg.java index e7f15e34..1cb39162 100644 --- a/game/src/main/java/com/ccsens/game/util/SendMsg.java +++ b/game/src/main/java/com/ccsens/game/util/SendMsg.java @@ -65,7 +65,6 @@ public class SendMsg { if (CollectionUtil.isNotEmpty(outs)) { rabbitTemplate.convertAndSend(RabbitMQConfig.GAME_STATUS, JacksonUtil.beanToJson(outs)); log.info("发送成功:{}", JacksonUtil.beanToJson(outs)); - } }