diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java b/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java index ab9893ef9..7dfef13ed 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java @@ -37,8 +37,9 @@ public class CarDelayFunction implements FunctionManager { String guildKey = RedisUtil.getInstence().getKey(guildRank.getRedisKey(), ""); String crossKey = RedisUtil.getInstence().getKey(personRank.getCrossRedisKey(), "",false); String crossGuildKey = RedisUtil.getInstence().getKey(guildRank.getCrossRedisKey(), "",false); + String carPeopleNum = RedisUtil.getInstence().getKey(RedisKey.CAR_DEALY_GUILD_FIGHT_PEOPLE_NUM,""); - String[] delKeys = {key,guildKey,crossKey,crossGuildKey}; + String[] delKeys = {key,guildKey,crossKey,crossGuildKey,carPeopleNum}; RedisUtil.getInstence().rename(60*60*16, backName, delKeys); // String userLevelGuild = RedisUtil.getInstence().getKey(RedisKey.USER_LEVEL_GUILD_INFO, ""); // delKeys.add(userLevelGuild); 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 f1fb82397..26a8d440d 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 @@ -310,6 +310,7 @@ public class RedisKey { // 车迟斗法 public static final String CAR_DEALY_RANK = "CAR_DEALY_RANK"; public static final String CAR_DEALY_GUILD_RANK = "CAR_DEALY_GUILD_RANK"; + public static final String CAR_DEALY_GUILD_FIGHT_PEOPLE_NUM = "CAR_DEALY_GUILD_FIGHT_PEOPLE_NUM"; //公会战进攻获得星数排行榜 public static final String FAMILY_FIGHT_STAR_RANK = "FAMILY_FIGHT_STAR_RANK"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java index b6c60b299..e22313297 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java @@ -2,12 +2,14 @@ package com.ljsd.jieling.handler; import com.ljsd.GameApplication; import com.ljsd.fight.FightType; +import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; +import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.*; @@ -36,6 +38,7 @@ import rpc.protocols.FightInfoProto; import rpc.protocols.MessageTypeProto; import util.TimeUtils; +import java.util.HashSet; import java.util.List; @Component @@ -54,6 +57,12 @@ public class FastChallengeHandler extends BaseHandler 0){ personRank.incrementCrossRankScore(uid,"",gainScore); - guildRank.incrementCrossRankScore(guildInfo.getId(),"",gainScore,isNew?1:0); + guildRank.incrementCrossRankScore(guildInfo.getId(),"",gainScore); }else { personRank.incrementRankScore(uid,"",gainScore); - guildRank.incrementRankScore(guildInfo.getId(),"",gainScore,isNew?1:0); + guildRank.incrementRankScore(guildInfo.getId(),"",gainScore); } } user.getUserMissionManager().onGameEvent(user, GameEvent.CAR_PLAY,1); }break; - case 2:{ + case 2:{//抢夺 FightResult fightResult; String challengeName; String challengeNameColor; @@ -169,16 +177,16 @@ public class FastChallengeHandler extends BaseHandler 0){ personRank.incrementCrossRankScore(uid,"",gainScore); personRank.incrementCrossRankScore(challengeId,"",-gainScore); - guildRank.incrementCrossRankScore(guildInfo.getId(),"",gainScore,isNew?1:0); + guildRank.incrementCrossRankScore(guildInfo.getId(),"",gainScore); if(challengeGuild!=0){ - guildRank.incrementCrossRankScore(challengeGuild,"",-gainScore,0); + guildRank.incrementCrossRankScore(challengeGuild,"",-gainScore); } }else { personRank.incrementRankScore(uid,"",gainScore); personRank.incrementRankScore(challengeId,"",-gainScore); - guildRank.incrementRankScore(guildInfo.getId(),"",gainScore,isNew?1:0); + guildRank.incrementRankScore(guildInfo.getId(),"",gainScore); if(challengeGuild!=0){ - guildRank.incrementRankScore(challengeGuild,"",-gainScore,0); + guildRank.incrementRankScore(challengeGuild,"",-gainScore); } } } @@ -244,6 +252,9 @@ public class FastChallengeHandler extends BaseHandler{}",i); sendRandomEvent(user); - } + }*/ for (int i = keyVal.getValue().getBatteTime(); i <= offlineEndTime; i = i + battleInterval) { //复活玩家 if (keyVal.getValue().getPlayerHp() == 0 && keyVal.getValue().getPlayerReliveTime() <= i) { @@ -450,7 +446,7 @@ public class ExplorerMapLogic { if (minute == 0) { sendRandomEvent(user); }*/ - sendRandomEvent(user); + //sendRandomEvent(user); } sendDisappearEvent(user); MongoUtil.getLjsdMongoTemplate().lastUpdate(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java index 4ee40d769..30783e37c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java @@ -19,6 +19,7 @@ import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.activity.ActivityTypeEnum; +import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.activity.event.*; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.*; @@ -198,6 +199,8 @@ public class GuildLogic { addGuildLog(guildInfo.getId(),GuildDef.Log.CREATE,user.getPlayerInfoManager().getNickName()); // 创建公会 CrossDeathPathLogic.setCrossGuild(guildInfo); + // 更新redis + CrossServiceLogic.getInstance().saveBasicPlayerToRedis(user); PlayerInfoCache cache = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(uid), PlayerInfoCache.class); cache.setGuildPosition(GlobalsDef.CHAIRMAN); 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 7489f0382..6eb0fece0 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 @@ -349,7 +349,6 @@ public abstract class AbstractRank implements IRank { } @Override public long getParam1(Double data) { - return getDataByScore(data).length>0?getDataByScore(data)[0]:0; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CarDealyGuildRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CarDealyGuildRank.java index f0248d8ef..b811a21c7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CarDealyGuildRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CarDealyGuildRank.java @@ -1,13 +1,26 @@ package com.ljsd.jieling.logic.rank.rankImpl; +import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.handler.FastChallengeHandler; +import com.ljsd.jieling.logic.GlobalDataManaager; +import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.TimeControllerOfFunction; +import com.ljsd.jieling.logic.dao.cross.CSPlayer; +import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.family.CrossDeathPathLogic; +import com.ljsd.jieling.logic.family.DeathPathLogic; import org.springframework.data.redis.core.ZSetOperations; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; +import java.util.Set; + /** * @author Administrator */ @@ -17,13 +30,93 @@ public class CarDealyGuildRank extends CrossGuildForceRank{ } @Override - public long[] getDataByScore(Double score) { - return new long[]{ score.longValue()/1000,score.longValue()%1000}; + protected void getCrossOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) throws Exception { + GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue())); + if (mapEntry == null){ + return; + } + CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId()); + if (csPlayer == null){ + return; + } + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(index) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(0,Integer.parseInt(data.getValue()))) + .setParam3(getParam3(data.getScore())); + CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(csPlayer,everyRankInfo); + builder.addRanks(oneUserRank); } @Override - public double getScore(double... data) { - return (long) (data[0]*1000 + data[1]); + public CommonProto.UserRank.Builder getFirstByCross(String rKey){ + Set> rankByKey = + RedisUtil.getInstence().getZsetreverseRangeWithScores(getCrossRedisKey(),rKey, 0, 0, false); + CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); + if(rankByKey.size()!=1){ + return builder; + } + + ZSetOperations.TypedTuple data = rankByKey.iterator().next(); + GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue())); + if (mapEntry == null){ + return builder; + } + CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId()); + if (csPlayer == null){ + return builder; + } + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(1) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(0, Integer.parseInt(data.getValue()))) + .setParam3(getParam3(data.getScore())); + builder = getCrossOneUserRank(csPlayer,everyRankInfo); + return builder; + } + + + @Override + public void getCrossMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){ + int guildId = user.getPlayerInfoManager().getGuildId(); + if (guildId == 0){ + return; + } + int myRank= RedisUtil.getInstence().getZSetreverseRank(getCrossRedisKey(), rkey, Integer.toString(guildId),false).intValue(); + Double zSetScore = RedisUtil.getInstence().getZSetScore(getCrossRedisKey(), rkey, Integer.toString(guildId),false); + CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(myRank) + .setParam1(getParam1(zSetScore)) + .setParam2(getParam2(0,guildId)) + .build(); + allUserResponse.setMyRankInfo(towerRankInfo); + } + + @Override + public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception { + TimeControllerOfFunction controller = GlobalDataManaager.getInstance().getTimeControllerOfFunctionByFunctinoType(FunctionIdEnum.Car_Delay); + if (controller == null){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + return super.getRank(uid,rkey,page,rankEndLine); + } + + @Override + public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception { + TimeControllerOfFunction controller = GlobalDataManaager.getInstance().getTimeControllerOfFunctionByFunctinoType(FunctionIdEnum.Car_Delay); + if (controller == null){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + return super.getCrossRank(uid,rkey,page,rankEndLine); + } + + @Override + public long getParam1(Double data) { + return (long) getScore(data); + } + + public int getParam2(int uid, int guildId) { + return FastChallengeHandler.carDealyFightPeopleNum(uid,guildId); } @Override @@ -38,8 +131,7 @@ public class CarDealyGuildRank extends CrossGuildForceRank{ CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() .setRank(index) .setParam1(getParam1(data.getScore())) - .setParam2(getParam2(data.getScore())); - + .setParam2(getParam2(0,guildId)); CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder() .setGuildName(familyName) .setRankInfo(everyRankInfo) @@ -55,7 +147,8 @@ public class CarDealyGuildRank extends CrossGuildForceRank{ CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder() .setRank(myRank) .setParam1(getParam1(zSetScore)) - .setParam2(getParam2(zSetScore)).build(); + .setParam2(getParam2(0,guildId)) + .build(); allUserResponse.setMyRankInfo(towerRankInfo); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CarDealyRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CarDealyRank.java index 9ce07d016..c16a99cf1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CarDealyRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CarDealyRank.java @@ -1,8 +1,33 @@ package com.ljsd.jieling.logic.rank.rankImpl; +import com.ljsd.jieling.core.FunctionIdEnum; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.logic.GlobalDataManaager; +import com.ljsd.jieling.logic.dao.TimeControllerOfFunction; +import rpc.protocols.PlayerInfoProto; + public class CarDealyRank extends ForceRank{ public CarDealyRank(int type, String redisKey) { super(type, redisKey); } + + @Override + public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception { + TimeControllerOfFunction controller = GlobalDataManaager.getInstance().getTimeControllerOfFunctionByFunctinoType(FunctionIdEnum.Car_Delay); + if (controller == null){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + return super.getRank(uid,rkey,page,rankEndLine); + } + + @Override + public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception { + TimeControllerOfFunction controller = GlobalDataManaager.getInstance().getTimeControllerOfFunctionByFunctinoType(FunctionIdEnum.Car_Delay); + if (controller == null){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + return super.getCrossRank(uid,rkey,page,rankEndLine); + } } 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 0c4765023..7f8328a8b 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 @@ -258,8 +258,7 @@ public class MinuteTask extends Thread { i++; LOGGER.error("------------------------------asdfa --------------:"+eachEle+" i:"+i); - user.getUserMissionManager().onGameEvent(user, GameEvent.EXPLORE, MissionType.EXPLORE_ENEMYHISTORYHIGH_NUM, - i); + //user.getUserMissionManager().onGameEvent(user, GameEvent.EXPLORE, MissionType.EXPLORE_ENEMYHISTORYHIGH_NUM, i); } RankEnum.toRank(RankEnum.EXPLORE_RANK.getType()).removeRank("");