|
|
@ -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; |
|
|
|