From 931db8e069b1c53d7b88c2c36aff3e76a4c38fc6 Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 30 Jul 2021 15:03:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E6=9C=8D=E5=8D=81=E7=BB=9D=E9=98=B5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/db/redis/RedisKey.java | 4 +- .../com/ljsd/jieling/db/redis/RedisUtil.java | 31 +++++++---- .../ljsd/jieling/logic/GlobleSystemLogic.java | 4 ++ .../logic/family/CrossDeathPathLogic.java | 26 ++++++---- .../jieling/logic/family/DeathPathLogic.java | 16 +++--- .../ljsd/jieling/logic/mail/MailLogic.java | 14 +++++ .../jieling/logic/rank/CrossRankManager.java | 52 +++++++++---------- .../ljsd/jieling/logic/rank/RankLogic.java | 5 +- .../logic/rank/rankImpl/AbstractRank.java | 12 +++-- .../rankImpl/DeathPathEveryGuildRank.java | 5 +- .../rankImpl/DeathPathTotalGuildRank.java | 5 +- .../ljsd/jieling/thread/task/MinuteTask.java | 2 +- 12 files changed, 110 insertions(+), 66 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index 15311da61..23f06600c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -1,6 +1,7 @@ package com.ljsd.jieling.db.redis; import com.ljsd.jieling.db.mongo.AreaManager; +import com.ljsd.jieling.logic.GlobleSystemLogic; import java.util.HashSet; import java.util.Set; @@ -434,7 +435,4 @@ public class RedisKey { // } } - - - } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java index da80ecfd5..d565562a4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java @@ -984,10 +984,12 @@ public class RedisUtil { return null; } - - public Long getZSetreverseRank(String type,String key, String value){ - String rkey = getKey(type,key); + return getZSetreverseRank(type,key,value,true); + } + + public Long getZSetreverseRank(String type,String key, String value, boolean choice){ + String rkey = getKey(type,key,choice); for (int i = 0; i < MAX_TRY_TIMES; i++) { try { Long rank = redisTemplate.opsForZSet().reverseRank(rkey, value); @@ -1003,9 +1005,12 @@ public class RedisUtil { return -1L; } - public Double getZSetScore(String type,String key, String value){ - String rkey = getKey(type, key); + return getZSetScore(type,key,value,true); + } + + public Double getZSetScore(String type,String key, String value, boolean choice){ + String rkey = getKey(type, key, choice); for (int i = 0; i < MAX_TRY_TIMES; i++) { try { Double score = redisTemplate.opsForZSet().score(rkey, value); @@ -1034,12 +1039,20 @@ public class RedisUtil { } - public void incrementZsetScore(String type,String key, String value, int changeScore){ - incrementZsetScore(type,key,value,(double)(changeScore)); + public void incrementZsetScore(String type,String key, String value, int changeScore){ + incrementZsetScore(type,key,value,(double)(changeScore), true); } - public void incrementZsetScore(String type,String key, String value, double changeScore){ - String rkey = getKey(type, key); + public void incrementZsetScore(String type,String key, String value, int changeScore, boolean choice){ + incrementZsetScore(type,key,value,(double)(changeScore), choice); + } + + public void incrementZsetScore(String type,String key, String value, double changeScore){ + incrementZsetScore(type,key,value,changeScore, true); + } + + public void incrementZsetScore(String type,String key, String value, double changeScore, boolean choice){ + String rkey = getKey(type, key,choice); for (int i = 0; i < MAX_TRY_TIMES; i++) { try { redisTemplate.opsForZSet().incrementScore(rkey,value,changeScore); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java index 95bef1eae..d6e2a164d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java @@ -252,6 +252,10 @@ public class GlobleSystemLogic implements IEventHandler { index++; } + // 跨服排行榜处理 + CrossRankManager.getInstance().cleanCrossRank(); + CrossRankManager.getInstance().crossRankHandle(true); + redisUtil.putMapEntrys(RedisKey.SERVER_SPLIT_INFO,"",split); //发分组邮件 split.keySet().forEach(server->redisUtil.putMapEntry(RedisKey.SERVER_SPLIT_MAIL_INFO,"",server,0)); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java index 8b35f6d86..ccabba4f3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java @@ -6,6 +6,9 @@ import com.ljsd.jieling.db.mongo.core.CServerInfo; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.dao.GuildInfoCache; +import com.ljsd.jieling.logic.rank.RankContext; +import com.ljsd.jieling.logic.rank.RankEnum; +import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.tools.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -90,26 +93,30 @@ public class CrossDeathPathLogic { //操作每个关的公会、个人数据 BigDecimal decimal = new BigDecimal(String.valueOf(damage)).divide(new BigDecimal(String.valueOf(Math.pow(10,15)))); long everyGuildChangeScore = (long)damage*1000; - if(redisUtil.getZSetScore(groupId+":"+RedisKey.DEATH_PATH_EVERY_PERSON_RANK,String.valueOf(pathId), String.valueOf(uid))==-1){ + AbstractRank everyPerson = RankContext.getRankEnum(RankEnum.DEATH_PATH_EVERY_PERSON_RANK.getType()); + if(redisUtil.getZSetScore(everyPerson.getCrossRedisKey(),String.valueOf(pathId), String.valueOf(uid), false)==-1){ //记录人数操作 everyGuildChangeScore = everyGuildChangeScore+1; } String before = firstGuild(redisUtil, groupId, pathId); - redisUtil.incrementZsetScore(groupId+":"+RedisKey.DEATH_PATH_EVERY_GUILD_RANK,String.valueOf(pathId),String.valueOf(guildId), everyGuildChangeScore); + AbstractRank everyGuild = RankContext.getRankEnum(RankEnum.DEATH_PATH_EVERY_GUILD_RANK.getType()); + redisUtil.incrementZsetScore(everyGuild.getCrossRedisKey(),String.valueOf(pathId),String.valueOf(guildId), everyGuildChangeScore, false); String after = firstGuild(redisUtil, groupId, pathId); + AbstractRank totalGuild = RankContext.getRankEnum(RankEnum.DEATH_PATH_TOTAL_GUILD_RANK.getType()); if(!before.equals(after)){ decimal = decimal.add(new BigDecimal(1)); if(!"".equals(before)){ - redisUtil.incrementZsetScore(groupId+":"+RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,"",before, -1); + redisUtil.incrementZsetScore(totalGuild.getCrossRedisKey(),"",before, -1,false); } } + AbstractRank totalPerson = RankContext.getRankEnum(RankEnum.DEATH_PATH_TOTAL_PERSON_RANK.getType()); // 个人单个排行 - redisUtil.incrementZsetScore(groupId+":"+RedisKey.DEATH_PATH_EVERY_PERSON_RANK,String.valueOf(pathId),String.valueOf(uid), damage); + redisUtil.incrementZsetScore(everyPerson.getCrossRedisKey(),String.valueOf(pathId),String.valueOf(uid), damage,false); //操作总的个人伤害 - redisUtil.incrementZsetScore(groupId+":"+RedisKey.DEATH_PATH_TOTAL_PERSON_RANK,"",String.valueOf(uid), damage); + redisUtil.incrementZsetScore(totalPerson.getCrossRedisKey(),"",String.valueOf(uid), damage,false); //操作总的工会伤害 - redisUtil.incrementZsetScore(groupId+":"+RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,"",String.valueOf(guildId), decimal.doubleValue()); + redisUtil.incrementZsetScore(totalGuild.getCrossRedisKey(),"",String.valueOf(guildId), decimal.doubleValue(),false); // 结算标识设置 redisUtil.hset(RedisKey.DEATH_PATH_EVERY_OVER_HASH,String.valueOf(GameApplication.serverId),1); } @@ -157,9 +164,10 @@ public class CrossDeathPathLogic { */ public Map crossDeathPathReward(int groupId,int serverId){ if(TimeUtils.getHourOfDay()!=0){ - return new HashMap<>(); + return new HashMap<>(1); } - Set> values = RedisUtil.getInstence().getZsetreverseRangeWithScores(groupId+":" + RedisKey.DEATH_PATH_TOTAL_GUILD_RANK, "", 0, -1); + AbstractRank totalGuild = RankContext.getRankEnum(RankEnum.DEATH_PATH_TOTAL_GUILD_RANK.getType()); + Set> values = RedisUtil.getInstence().getZsetreverseRangeWithScores(totalGuild.getCrossRedisKey(), "", 0, -1, false); HashMap hashMap = new HashMap<>(); int rank =0; for(ZSetOperations.TypedTuple value:values){ @@ -175,7 +183,7 @@ public class CrossDeathPathLogic { Map hmget = RedisUtil.getInstence().hmget(RedisKey.DEATH_PATH_EVERY_OVER_HASH); if (hmget == null || hmget.size() < 1) { - Cursor cursor = RedisUtil.getInstence().scan(groupId + ":DEATH_PATH*", -1); + Cursor cursor = RedisUtil.getInstence().scan("DEATH_PATH*"+groupId+":*", -1); while (cursor.hasNext()) { //找到一次就添加一次 String next = cursor.next(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java index 01c7ec66f..e13586c49 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java @@ -305,14 +305,16 @@ public class DeathPathLogic { for (int i = 1; i <= 10; i++) { String key; // 是否是跨服 + Set> zSetReverseRangeWithScores; if (groupId > 0) { - key = groupId + ":" + guildRank.getRedisKey(); + key = guildRank.getCrossRedisKey(); + zSetReverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(key, String.valueOf(i), 0, 0,false); LOGGER.info("========================获取十绝阵内部信息,跨服:{}",uid); } else { key = guildRank.getRedisKey(); + zSetReverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(key, String.valueOf(i), 0, 0,true); LOGGER.info("========================获取十绝阵内部信息,本地:{}",uid); } - Set> zSetReverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(key, String.valueOf(i), 0, 0); Iterator> iterator = zSetReverseRangeWithScores.iterator(); if (!iterator.hasNext()) { continue; @@ -425,7 +427,6 @@ public class DeathPathLogic { LOGGER.info("==================跨服十绝阵上榜处理:{}",task.toString()); } catch (Exception e) { LOGGER.error("==================跨服十绝阵上榜异常:{}",e.getMessage()); - e.printStackTrace(); } return; } @@ -551,15 +552,16 @@ public class DeathPathLogic { } //根据排名进行随机奖励 int rank; - String key; + AbstractRank rankEnum = RankContext.getRankEnum(RankEnum.DEATH_PATH_TOTAL_GUILD_RANK.getType()); if(groupId>0){ - key = groupId + ":" + RedisKey.DEATH_PATH_TOTAL_GUILD_RANK; + String key = rankEnum.getCrossRedisKey(); + rank = RedisUtil.getInstence().getZSetreverseRank(key, "", String.valueOf(user.getPlayerInfoManager().getGuildId()),false).intValue(); LOGGER.info("==================获取十绝阵奖励,跨服,分组:{},玩家:{}",groupId,uid); }else { - key = RedisKey.DEATH_PATH_TOTAL_GUILD_RANK; + String key = rankEnum.getRedisKey(); + rank = RedisUtil.getInstence().getZSetreverseRank(key, "", String.valueOf(user.getPlayerInfoManager().getGuildId()),true).intValue(); LOGGER.info("==================获取十绝阵奖励,本地,分组:{},玩家:{}",groupId,uid); } - rank = RedisUtil.getInstence().getZSetreverseRank(key, "", String.valueOf(user.getPlayerInfoManager().getGuildId())).intValue(); if(rank==-1||rank==0){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java index d6ac0d851..92f4ccb65 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java @@ -11,6 +11,7 @@ import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; +import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.MailingSystem; @@ -424,6 +425,19 @@ public class MailLogic { MongoUtil.getInstence().getMyMongoTemplate().saveWithoutMongoRoot(serverConfigTmp); MailLogic.getInstance().sendSystemMail(title,new ArrayList<>(),content,nowTime,"",30*24*60*60,"system",TimeUtils.now(),"0"); + sendCrossServerIndication(); + } + + /** + * 跨服推送全部在线玩家 + */ + public void sendCrossServerIndication(){ + int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); + int result = crossGroup == -1 ? 0 : 1; + PlayerInfoProto.IsCrossResponse build = PlayerInfoProto.IsCrossResponse.newBuilder().setIsCross(result).build(); + for(ISession session:OnlineUserManager.sessionMap.values()){ + MessageUtil.sendIndicationMessage(session.getUid(),build); + } } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/CrossRankManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/CrossRankManager.java index 683962c6d..be855a18f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/CrossRankManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/CrossRankManager.java @@ -43,35 +43,11 @@ public class CrossRankManager { */ private long time = 0L; - /** - * 是否需要进行数据处理 - */ -// public void isDataHandle(){ -// LOGGER.info("==========================开始验证是否需要进行跨服数据处理"); -// // 获取全部服务器分组信息 -// Map groupValues = RedisUtil.getInstence().getMapValues(RedisKey.SERVER_SPLIT_INFO, "", Integer.class, Integer.class); -// if (groupValues == null || groupValues.isEmpty()){ -// return; -// } -// // 获取本服id和本服的分组信息 -// int serverId = GameApplication.serverId; -// Integer groupId = groupValues.get(serverId); -// if (groupId == null || groupId <= 0){ -// return; -// } -// // stream聚合, 筛选条件value==groupId, 正序返回 -// List list = groupValues.entrySet().stream().filter(v -> v.getValue().equals(groupId)).map(Map.Entry::getKey).sorted().collect(Collectors.toList()); -// // 缓存服务器列表,其他地方会用 -// serverListByGroup.clear(); -// serverListByGroup.addAll(list); -// LOGGER.info("==========================验证是否需要进行跨服数据处理结果"); -// } - /** * 跨服排行处理 */ - public void crossRankHandle(){ - if (!isTime()){ + public void crossRankHandle(boolean choice){ + if (choice || !isTime()){ // 不是处理数据的服务器 return; } @@ -85,7 +61,7 @@ public class CrossRankManager { int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); if(crossGroup != -1){ AbstractRank rank = RankContext.getRankEnum(type); - String key = RedisUtil.getInstence().getKey(rank.getRedisKey(),String.valueOf(crossGroup),false); + String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false); Set> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(rank.getRedisKey(), "", 0, 100, true); for (ZSetOperations.TypedTuple tuple : range) { if (tuple.getValue().length() == 8){ @@ -126,4 +102,26 @@ public class CrossRankManager { LOGGER.info("==================工会缓存处理============="); } + /** + * 清理跨服排行榜 + */ + public void cleanCrossRank(){ + for (RankEnum value : RankEnum.values()) { + int type = value.getType(); + if (RankContext.isCrossRank2(type)) { + //跨服 + if (RankContext.isCrossRank(type)) { + // 获取分组id,是否跨服 + int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); + if (crossGroup != -1) { + AbstractRank rank = RankContext.getRankEnum(type); + String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false); + RedisUtil.getInstence().del(key); + LOGGER.info("=====================跨服排行榜清理========,key:{}", key); + } + } + } + } + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java index 2576bb1e1..f3048f42f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java @@ -76,9 +76,8 @@ public class RankLogic { AbstractRank rank = RankContext.getRankEnum(type); if(RankContext.isCrossRank(type) && isCross == 1){ //跨服 - int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); - if(crossGroup>0){ - rankResponse = rank.getCrossRank(session.getUid(),String.valueOf(crossGroup),index/20+1, 20); + if(GlobleSystemLogic.getInstence().getCrossGroup() > 0){ + rankResponse = rank.getCrossRank(session.getUid(),rkey,index/20+1, 20); } }else{ rankResponse = rank.getRank(session.getUid(),rkey,index/20+1, 20); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index 89ac7eabd..c547dc959 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -75,8 +75,9 @@ public abstract class AbstractRank implements IRank { page = 1; } int start = (page - 1) * rankEndLine, end = page * rankEndLine - 1; - Set> scores = RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, rkey, start, end, false); - if(start%rankEndLine == 0){ + Set> scores = + RedisUtil.getInstence().getZsetreverseRangeWithScores(getCrossRedisKey(), rkey, start, end, false); + if(start % rankEndLine == 0){ start++; } PlayerInfoProto.RankResponse.Builder allUserResponse = getAllUserResponse(scores,start); @@ -98,7 +99,7 @@ public abstract class AbstractRank implements IRank { } CrossServiceLogic.getInstance().dispose(user); } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("================跨服排行榜缓存玩家数据报错=========,uid:{},error:{}",uid,e.getMessage()); } } @@ -134,6 +135,11 @@ public abstract class AbstractRank implements IRank { return redisKey; } + public String getCrossRedisKey() { + int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); + return RedisUtil.getInstence().getKey(redisKey,String.valueOf(crossGroup),false); + } + public int getType() { return type; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathEveryGuildRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathEveryGuildRank.java index 949cbff9d..1fbdc616c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathEveryGuildRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathEveryGuildRank.java @@ -2,12 +2,11 @@ package com.ljsd.jieling.logic.rank.rankImpl; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.dao.GuilidManager; -import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; +import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; -import org.springframework.data.redis.core.ZSetOperations; /** @@ -20,6 +19,7 @@ public class DeathPathEveryGuildRank extends AbstractRank { super(type, redisKey); } + @Override protected void getOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) { GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue())); CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() @@ -39,6 +39,7 @@ public class DeathPathEveryGuildRank extends AbstractRank { return new long[]{(long)(score/1000),(int)(score%1000)}; } + @Override public double getScore(double... data) { long result = (long) (data[0]*1000); if(data.length>1){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathTotalGuildRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathTotalGuildRank.java index aca685928..f73105e46 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathTotalGuildRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/DeathPathTotalGuildRank.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.rank.rankImpl; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.dao.GuilidManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GuildInfo; @@ -31,14 +32,14 @@ public class DeathPathTotalGuildRank extends AbstractRank{ @Override public double getScore(double... data) { - BigDecimal decimal = null; - decimal = new BigDecimal(String.valueOf(data[0])).divide(new BigDecimal(String.valueOf(Math.pow(10,15)))); + BigDecimal decimal = new BigDecimal(String.valueOf(data[0])).divide(new BigDecimal(String.valueOf(Math.pow(10,15)))); if(data.length>1){ decimal = decimal.add(new BigDecimal(data[1])); } return decimal.doubleValue(); } + @Override protected void getOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) throws Exception { GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue())); DeathChallengeCount countInfo = RedisUtil.getInstence().get(RedisKey.DEATH_PATH_TOTAL_CHALLENGE_COUNT, String.valueOf(guildInfo.getId()), DeathChallengeCount.class); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index 47df75d80..dbaafc808 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -146,7 +146,7 @@ public class MinuteTask extends Thread { } try { - CrossRankManager.getInstance().crossRankHandle(); + CrossRankManager.getInstance().crossRankHandle(false); }catch (Exception e){ e.printStackTrace(); LOGGER.error("跨服排行榜初始化一次,Exception::=>{}",e.toString());