分组修改
parent
ce10e5f88a
commit
aade43b553
|
@ -236,39 +236,37 @@ public class GlobleSystemLogic implements IEventHandler {
|
||||||
}
|
}
|
||||||
//这里为所有服务器的世界等级
|
//这里为所有服务器的世界等级
|
||||||
Map<String,Integer> worldLevelMap = redisUtil.getMapValues(RedisKey.SERVER_WORLDLEVE_INFO,"",String.class,Integer.class);
|
Map<String,Integer> worldLevelMap = redisUtil.getMapValues(RedisKey.SERVER_WORLDLEVE_INFO,"",String.class,Integer.class);
|
||||||
LOGGER.info("Global开始分组");
|
LOGGER.info("跨服开始分组");
|
||||||
long lastHour = TimeUtils.getLastOrUnderHour(TimeUtils.now(), 1, 0, 0, true);
|
long lastHour = TimeUtils.getLastOrUnderHour(TimeUtils.now(), 1, 0, 0, true);
|
||||||
lastHour+=(2*TimeUtils.WEEK);
|
lastHour+=TimeUtils.WEEK;
|
||||||
int expireTime =(int)((lastHour-TimeUtils.now())/1000);
|
int expireTime =(int)((lastHour-TimeUtils.now())/1000);
|
||||||
redisUtil.set(RedisKey.MATCHED_SPLIT_KEY,String.valueOf(1),expireTime-60);
|
redisUtil.set(RedisKey.MATCHED_SPLIT_KEY,String.valueOf(1),expireTime-60);
|
||||||
//提前两分钟结算
|
//提前两分钟结算
|
||||||
redisUtil.set(RedisKey.MATCHED_VERSION,TimeUtils.getTimeStampYMD(System.currentTimeMillis()),expireTime-120);
|
redisUtil.set(RedisKey.MATCHED_VERSION,TimeUtils.getTimeStampYMD(System.currentTimeMillis()),expireTime-120);
|
||||||
worldLevelMap.forEach((k,v)->redisUtil.zsetAddOne(RedisKey.SERVER_LEVEL_RANK,k,v));
|
worldLevelMap.forEach((k,v)->redisUtil.zsetAddOne(RedisKey.SERVER_LEVEL_RANK,k,v));
|
||||||
Set<ZSetOperations.TypedTuple<String>> zsetRevRangeWithScore = redisUtil.getZsetreverseRangeByRangeWithScores(RedisKey.SERVER_LEVEL_RANK, setting.getWorldLevel(), 999);
|
Set<ZSetOperations.TypedTuple<String>> zsetRevRangeWithScore = redisUtil.getZsetreverseRangeByRangeWithScores(RedisKey.SERVER_LEVEL_RANK, setting.getWorldLevel(), 999);
|
||||||
// int remain = zsetRevRangeWithScore.size() % 8;
|
|
||||||
//如果只有一个服到达条件,则不进行分组
|
|
||||||
if(zsetRevRangeWithScore.size()>1){
|
|
||||||
int index = 0;
|
|
||||||
int areaId = 1;
|
|
||||||
Map<String,Integer> split = new HashMap<>(zsetRevRangeWithScore.size());
|
|
||||||
for(ZSetOperations.TypedTuple<String> data:zsetRevRangeWithScore){
|
|
||||||
if(index>=setting.getServerNum()){
|
|
||||||
if((zsetRevRangeWithScore.size()-areaId*setting.getServerNum())>setting.getServerNum()/2){
|
|
||||||
areaId++;
|
|
||||||
}
|
|
||||||
index=0;
|
|
||||||
}
|
|
||||||
split.put(data.getValue(),areaId);
|
|
||||||
|
|
||||||
index++;
|
int index = 0;
|
||||||
|
int areaId = 1;
|
||||||
|
Map<String,Integer> split = new HashMap<>(zsetRevRangeWithScore.size());
|
||||||
|
for(ZSetOperations.TypedTuple<String> data:zsetRevRangeWithScore){
|
||||||
|
if(index>=setting.getServerNum()){
|
||||||
|
if((zsetRevRangeWithScore.size()-areaId*setting.getServerNum())>setting.getServerNum()/2){
|
||||||
|
areaId++;
|
||||||
|
}
|
||||||
|
index=0;
|
||||||
}
|
}
|
||||||
redisUtil.putMapEntrys(RedisKey.SERVER_SPLIT_INFO,"",split);
|
split.put(data.getValue(),areaId);
|
||||||
//发分组邮件
|
|
||||||
split.keySet().forEach(server->redisUtil.putMapEntry(RedisKey.SERVER_SPLIT_MAIL_INFO,"",server,0));
|
index++;
|
||||||
}
|
}
|
||||||
|
redisUtil.putMapEntrys(RedisKey.SERVER_SPLIT_INFO,"",split);
|
||||||
|
//发分组邮件
|
||||||
|
split.keySet().forEach(server->redisUtil.putMapEntry(RedisKey.SERVER_SPLIT_MAIL_INFO,"",server,0));
|
||||||
|
|
||||||
//释放分布式锁
|
//释放分布式锁
|
||||||
redisUtil.del("SERVER_SPLIT_REDIS_LOCK");
|
redisUtil.del("SERVER_SPLIT_REDIS_LOCK");
|
||||||
LOGGER.info("Global分组结束");
|
LOGGER.info("跨服分组结束");
|
||||||
// splitInfo = RedisUtil.getInstence().getMapValues(RedisKey.SERVER_SPLIT_INFO,"",String.class,Integer.class);
|
// splitInfo = RedisUtil.getInstence().getMapValues(RedisKey.SERVER_SPLIT_INFO,"",String.class,Integer.class);
|
||||||
}
|
}
|
||||||
//获取当前区服的跨服区组 -1为未在分组内
|
//获取当前区服的跨服区组 -1为未在分组内
|
||||||
|
|
Loading…
Reference in New Issue