From 2b0607a26ae6a1fdee0c97b9d73ce0e201b03a16 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 8 Jun 2020 22:28:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=BD=A6=E8=BF=9F=E5=8F=91=E5=A5=96bug?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=8E=92=E8=A1=8C=E6=A6=9C=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E5=90=8Dbug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/core/function/CarDelayFunction.java | 2 +- .../java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 74e64b63e..4e4a11b40 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 @@ -75,6 +75,7 @@ public class CarDelayFunction implements FunctionManager { }); for(ZSetOperations.TypedTuple item : guildRangeWithScores){ + rank++; String value = item.getValue(); int guildId = Integer.parseInt(value); @@ -83,7 +84,6 @@ public class CarDelayFunction implements FunctionManager { if(guildInfo==null){ continue; } - rank++; Collection> values = guildInfo.getMembers().values(); if(userLevelGuildMap.containsKey(guildId)){ values.add(usersByGuildId.get(guildId)); 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 2d2a6b3cd..1f34a04a9 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 @@ -92,7 +92,7 @@ public abstract class AbstractRank implements IRank { //获取第一名信息 public CommonProto.UserRank.Builder getFirst() throws Exception { - Set> rankByKey = getRankByKey("", 0, 1); + Set> rankByKey = getRankByKey("", 0, 0); CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); if(rankByKey.size()!=1){ return builder; From 789afff18c3e70768b8b977b6077e2a48287967c Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 9 Jun 2020 00:54:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/db/redis/RedisKey.java | 1 + .../jieling/handler/RankFirstHandler.java | 2 +- .../jieling/logic/GlobalDataManaager.java | 2 + .../activity/event/GuildForceChangeEvent.java | 55 +++++++++++ .../GuildForceChangeEventHandler.java | 34 +++++++ .../ljsd/jieling/logic/family/GuildLogic.java | 6 +- .../jieling/logic/player/PlayerLogic.java | 4 + .../com/ljsd/jieling/logic/rank/RankEnum.java | 4 +- .../ljsd/jieling/logic/rank/RankLogic.java | 8 +- .../logic/rank/rankImpl/AbstractRank.java | 6 +- .../logic/rank/rankImpl/GuildForceRank.java | 91 +++++++++++++++++++ 11 files changed, 203 insertions(+), 10 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/GuildForceChangeEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/GuildForceChangeEventHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java 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 b985ca2ee..4e94048ae 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 @@ -133,6 +133,7 @@ public class RedisKey { public static final String RANDOM_CARD_RANK="RANDOM_CARD_RANK"; public static final String RANDOM_CARD_PERFECT_RANK = "RANDOM_CARD_PERFECT_RANK"; + public static final String GUILD_FORCE_RANK = "GUILD_FORCE_RANK"; public static final String GUILD_BOSS_RANK = "GUILD_BOSS_RANK"; public static final String GUILD_RED_PACKAGE_RANK = "GUILD_RED_PACKAGE_RANK"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java index 31e55fca2..22bd8565d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java @@ -20,6 +20,6 @@ public class RankFirstHandler extends BaseHandler entry : user.getGuildMyInfo().getGuidHelpInfo().entrySet()) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 11ec6c815..b1e56574a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -16,6 +16,7 @@ import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.logic.activity.event.GuildForceChangeEvent; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.UserForceChangeEvent; import com.ljsd.jieling.logic.activity.eventhandler.UserForceUpEventHandler; @@ -266,6 +267,9 @@ public class PlayerLogic { int teamForce = HeroLogic.getInstance().calTeamTotalForce(user, teamId, false); System.out.println(teamForce); if(user.getPlayerInfoManager().getMaxForce() < teamForce){ + if(user.getPlayerInfoManager().getGuildId()!=0){ + Poster.getPoster().dispatchEvent(new GuildForceChangeEvent(user.getId(),user.getPlayerInfoManager().getGuildId(),2,teamForce-user.getPlayerInfoManager().getMaxForce())); + } user.getPlayerInfoManager().setMaxForce(teamForce); Poster.getPoster().dispatchEvent(new UserForceChangeEvent(uid,teamForce)); user.getUserMissionManager().onGameEvent(user,GameEvent.USER_FORCE_CHANGE); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java index 3c943dd58..823a2051f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java @@ -27,8 +27,8 @@ public enum RankEnum { DEATH_PATH_EVERY_PERSON_RANK(15,RedisKey.DEATH_PATH_EVERY_PERSON_RANK,DeathPathEveryPersonRank::new),//param1:当前阵玩家伤害 param2:无 param3:无 DEATH_PATH_EVERY_GUILD_RANK(16,RedisKey.DEATH_PATH_EVERY_GUILD_RANK, DeathPathEveryGuildRank::new),//param1:当前阵公会伤害 param2:当前工会挑战人数 param3:无 DEATH_PATH_TOTAL_PERSON_RANK(17,RedisKey.DEATH_PATH_TOTAL_PERSON_RANK,DeathPathTotalPersonRank::new),//param1:玩家总伤害 param2:无 param3:无 - DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new);//param1:工会总伤害 param2:无 param3:无 - + DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new),//param1:工会总伤害 param2:无 param3:无 + GUILD_FORCE_RANK(20,RedisKey.GUILD_FORCE_RANK,GuildForceRank::new);//param1:公会总战力 param2:无 param3:无 private int type; private String redisKey; 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 103fc4622..f42196e44 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 @@ -60,12 +60,14 @@ public class RankLogic { * @param messageType * @throws Exception */ - public void getRankFirstInfo(ISession session, List rankTypes, MessageTypeProto.MessageType messageType) throws Exception { + public void getRankFirstInfo(ISession session, List rankTypes,List activityId,MessageTypeProto.MessageType messageType) throws Exception { PlayerManager playerManager = UserManager.getUser(session.getUid()).getPlayerInfoManager(); PlayerInfoProto.RankFirstResponse.Builder response = PlayerInfoProto.RankFirstResponse.newBuilder(); - for(int type :rankTypes){ + for(int i = 0 ; i > rankByKey = getRankByKey("", 0, 0); + public CommonProto.UserRank.Builder getFirst(int activityId) throws Exception { + Set> rankByKey = getRankByKey(activityId==0?"":String.valueOf(activityId), 0, 0); CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); if(rankByKey.size()!=1){ return builder; @@ -129,7 +129,7 @@ public abstract class AbstractRank implements IRank { CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo); builder.addRanks(oneUserRank); } - public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){ + public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo) throws Exception { CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() .setUid(everyUser.getId()) .setUserName(everyUser.getPlayerInfoManager().getNickName()) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java new file mode 100644 index 000000000..1cf89cd9e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/GuildForceRank.java @@ -0,0 +1,91 @@ +package com.ljsd.jieling.logic.rank.rankImpl; + +import com.ljsd.jieling.core.GlobalsDef; +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 com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.data.redis.core.ZSetOperations; + +import java.util.Set; + +/** + * @author lvxinran + * @date 2020/6/8 + * @discribe + */ +public class GuildForceRank extends AbstractRank { + + + public GuildForceRank(int type, String redisKey) { + super(type, redisKey); + } + + @Override + public int[] getDataByScore(Double score) { + return new int[]{score.intValue()}; + } + + @Override + public double getScore(double... data) { + return data[0]; + } + + @Override + protected void getOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) throws Exception { + GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue())); + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(index) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(data.getScore())) + .setParam3(getParam3(data.getScore())); + CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() + .setUid(guildInfo.getId()) + .setGuildName(guildInfo.getName()) + .setRankInfo(everyRankInfo); + builder.addRanks(everyRank); + } + @Override + protected void getMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse){ + int guildId = user.getPlayerInfoManager().getGuildId(); + int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,rkey,Integer.toString(guildId)).intValue(); + Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, rkey, Integer.toString(guildId)); + CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(myRank) + .setParam1(getParam1(zSetScore)) + .setParam2(getParam2(zSetScore)).build(); + allUserResponse.setMyRankInfo(towerRankInfo); + } + public CommonProto.UserRank.Builder getFirst(int activityId) throws Exception { + Set> rankByKey = getRankByKey(activityId==0?"":String.valueOf(activityId), 0, 0); + CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); + if(rankByKey.size()!=1){ + return builder; + } + ZSetOperations.TypedTuple data = rankByKey.iterator().next(); + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(1) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(data.getScore())) + .setParam3(getParam3(data.getScore())); + int gid = Integer.parseInt(data.getValue()); + GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid); + Set chairMan = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN); + int chairManId = chairMan.iterator().next(); + User user = UserManager.getUser(chairManId); + CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() + .setUid(chairManId) + .setUserName(user.getPlayerInfoManager().getNickName()) + .setHead(user.getPlayerInfoManager().getHead()) + .setHeadFrame(user.getPlayerInfoManager().getHeadFrame()) + .setLevel(user.getPlayerInfoManager().getLevel()) + .setRankInfo(everyRankInfo) + .setForce(user.getPlayerInfoManager().getMaxForce()) + .setSex(user.getPlayerInfoManager().getSex()) + .setGuildName(guildInfo.getName()); + return everyRank; + } +}