Browse Source

游戏0821半夜版

master
zy_Java 5 years ago
parent
commit
5a7ac0dbbe
  1. 21
      game/src/main/java/com/ccsens/game/service/ClientService.java
  2. 96
      game/src/main/java/com/ccsens/game/service/ScreenService.java
  3. 1
      game/src/main/java/com/ccsens/game/util/SendMsg.java

21
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) {

96
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<ZSetOperations.TypedTuple<Object>> typedTuples = redisUtil.zsRevGetWithScore(groupKey, 0, -1);
log.info("查询成绩redis:{}", typedTuples);
ScreenVo.CompletedData completedData = new ScreenVo.CompletedData();
List<ScreenVo.CompletedData> 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<ScreenVo.TopUsers> top2 = getTopUsers(gameRecord.getId());
completedData.setMembers(top2);
return completedData;

1
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));
}
}

Loading…
Cancel
Save