Merge branch 'master_test_gn_arena' into master_test_gn

back_recharge
duhui 2021-08-02 18:31:01 +08:00
commit ce261cb562
4 changed files with 55 additions and 44 deletions

View File

@ -227,6 +227,9 @@ public class GlobleSystemLogic implements IEventHandler {
LOGGER.error("跨服分组,未获取到锁"); LOGGER.error("跨服分组,未获取到锁");
return; return;
} }
// 跨服排行榜处理
CrossRankManager.getInstance().cleanCrossRank();
//这里为所有服务器的世界等级 //这里为所有服务器的世界等级
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("跨服开始分组"); LOGGER.info("跨服开始分组");
@ -256,9 +259,6 @@ public class GlobleSystemLogic implements IEventHandler {
index++; index++;
} }
// 跨服排行榜处理
CrossRankManager.getInstance().cleanCrossRank();
CrossRankManager.getInstance().crossRankHandle(true);
redisUtil.putMapEntrys(RedisKey.SERVER_SPLIT_INFO,"",split); redisUtil.putMapEntrys(RedisKey.SERVER_SPLIT_INFO,"",split);
//发分组邮件 //发分组邮件

View File

@ -48,39 +48,34 @@ public class CrossRankManager {
*/ */
public void crossRankHandle(boolean choice){ public void crossRankHandle(boolean choice){
// 时间验证 // 时间验证
if (choice || isTime()){ if (isTime()){
// 全部排行遍历 // 全部排行遍历
for (RankEnum value : RankEnum.values()) { for (RankEnum value : RankEnum.values()) {
int type = value.getType(); int type = value.getType();
boolean rank2 = RankContext.isCrossRank2(type); //跨服
if (rank2){ if(RankContext.isCrossRank2(type) && RankContext.isCrossRank(type)){
//跨服 // 获取分组id是否跨服
if(RankContext.isCrossRank(type)){ int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
// 获取分组id是否跨服 if(crossGroup != -1){
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); AbstractRank rank = RankContext.getRankEnum(type);
if(crossGroup != -1){ String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false);
AbstractRank rank = RankContext.getRankEnum(type); Map<Integer, GuildCache> cacheMap = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_INFO, "", Integer.class, GuildCache.class);
String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false); Set<ZSetOperations.TypedTuple<String>> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(rank.getRedisKey(), "", 0, 100, true);
Map<Integer, GuildCache> cacheMap = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_INFO, "", Integer.class, GuildCache.class); for (ZSetOperations.TypedTuple<String> tuple : range) {
Set<ZSetOperations.TypedTuple<String>> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(rank.getRedisKey(), "", 0, 100, true); if (tuple.getValue().length() == 8){
for (ZSetOperations.TypedTuple<String> tuple : range) { rank.crossUserCache(Integer.parseInt(tuple.getValue()));
if (tuple.getValue().length() == 8){ }else {
rank.crossUserCache(Integer.parseInt(tuple.getValue())); GuildCache cache = cacheMap.get(Integer.valueOf(tuple.getValue()));
}else { if (cache != null && cache.getLeaderUId() != 0){
GuildCache cache = cacheMap.get(Integer.valueOf(tuple.getValue())); rank.crossUserCache(cache.getLeaderUId());
if (cache != null && cache.getLeaderUId() != 0){
rank.crossUserCache(cache.getLeaderUId());
}
} }
RedisUtil.getInstence().zsetAddOne(key,tuple.getValue(),tuple.getScore());
} }
LOGGER.info("=====================跨服排行榜处理========,key:{}",key); RedisUtil.getInstence().zsetAddOne(key,tuple.getValue(),tuple.getScore());
} }
LOGGER.info("=====================跨服排行榜处理========,key:{}",key);
} }
} }
} }
// 更新时间
isTime();
} }
} }
@ -116,17 +111,16 @@ public class CrossRankManager {
public void cleanCrossRank(){ public void cleanCrossRank(){
for (RankEnum value : RankEnum.values()) { for (RankEnum value : RankEnum.values()) {
int type = value.getType(); int type = value.getType();
if (RankContext.isCrossRank2(type)) { //跨服
//跨服 if (RankContext.isCrossRank2(type) && RankContext.isCrossRank(type)) {
if (RankContext.isCrossRank(type)) { // 获取分组id是否跨服
// 获取分组id是否跨服 int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); if (crossGroup != -1) {
if (crossGroup != -1) { AbstractRank rank = RankContext.getRankEnum(type);
AbstractRank rank = RankContext.getRankEnum(type); String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false);
String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false); RedisUtil.getInstence().del(key);
RedisUtil.getInstence().del(key); time = 0L;
LOGGER.info("=====================跨服排行榜清理========,key:{}", key); LOGGER.info("=====================跨服排行榜清理========,key:{},time:{}",key,time);
}
} }
} }
} }

View File

@ -252,7 +252,6 @@ public abstract class AbstractRank implements IRank {
} }
private CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){ private CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(everyUser.getId());
return CommonProto.UserRank.newBuilder() return CommonProto.UserRank.newBuilder()
.setUid(everyUser.getId()) .setUid(everyUser.getId())
.setUserName(everyUser.getPlayerInfoManager().getNickName()) .setUserName(everyUser.getPlayerInfoManager().getNickName())
@ -265,8 +264,7 @@ public abstract class AbstractRank implements IRank {
.setUserSkin(everyUser.getPlayerInfoManager().getUserSkin()) .setUserSkin(everyUser.getPlayerInfoManager().getUserSkin())
.setUserTitle(everyUser.getPlayerInfoManager().getUserTitle()) .setUserTitle(everyUser.getPlayerInfoManager().getUserTitle())
.setUserMount(everyUser.getPlayerInfoManager().getUserMount()) .setUserMount(everyUser.getPlayerInfoManager().getUserMount())
.setPracticeLevel(everyUser.getHeroManager().getPracticeLevel()) .setPracticeLevel(everyUser.getHeroManager().getPracticeLevel());
.setServerName(serverName);
} }
public CommonProto.UserRank.Builder getCrossOneUserRank(ArenaOfUser query, CommonProto.RankInfo.Builder everyRankInfo){ public CommonProto.UserRank.Builder getCrossOneUserRank(ArenaOfUser query, CommonProto.RankInfo.Builder everyRankInfo){

View File

@ -5,6 +5,7 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.CrossArenaEnemy; import com.ljsd.jieling.logic.dao.CrossArenaEnemy;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser; import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import config.SArenaRobotConfig; import config.SArenaRobotConfig;
@ -13,6 +14,7 @@ import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto; import rpc.protocols.PlayerInfoProto;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.Set;
/** /**
* @author lvxinran * @author lvxinran
@ -88,9 +90,10 @@ public class CrossArenaRank extends AbstractRank {
.setServerName(query.getPlayerManager().getServerName()) .setServerName(query.getPlayerManager().getServerName())
.setSex(0); .setSex(0);
builder.addRanks(everyRank); builder.addRanks(everyRank);
}
} }
}
@Override
protected void getMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse){ protected void getMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse){
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,rkey,Integer.toString(user.getId())).intValue(); int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,rkey,Integer.toString(user.getId())).intValue();
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, rkey, Integer.toString(user.getId())); Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, rkey, Integer.toString(user.getId()));
@ -108,7 +111,23 @@ public class CrossArenaRank extends AbstractRank {
@Override @Override
public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception { public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
rkey = Integer.toString(GlobleSystemLogic.getInstence().getCrossGroup()); if(rankEndLine==-1){
return getRank(uid,rkey,page,rankEndLine); rankEndLine = 100;
}
User user = UserManager.getUser(uid);
if (page == 0) {
page = 1;
}
int start = (page - 1) * rankEndLine, end = page * rankEndLine - 1;
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
Set<ZSetOperations.TypedTuple<String>> scores =
RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, String.valueOf(crossGroup), start, end, false);
if(start % rankEndLine == 0){
start++;
}
PlayerInfoProto.RankResponse.Builder allUserResponse = getCrossAllUserResponse(scores,start);
//当前用户信息
getCrossMyInfo(user,rkey,allUserResponse);
return allUserResponse.build();
} }
} }