From aa985f2a7ff9fe5daab7d4b56d463fbfb2e8152f Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Sat, 14 Nov 2020 05:59:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E4=BB=BB=E5=91=BDbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/family/GuildLogic.java | 24 +++++++++++++++++-- .../jieling/logic/player/PlayerLogic.java | 22 +++++++++++++---- 2 files changed, 40 insertions(+), 6 deletions(-) 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 8b5211b09..e126abae3 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 @@ -694,8 +694,28 @@ public class GuildLogic { if(guildId == 0){ throw new ErrorCodeException(ErrorCode.FAMILY_NO); } - GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId); + User targetUser = UserManager.getUser(targetUid); + int targetUserGuildId = targetUser.getPlayerInfoManager().getGuildId(); + if(targetUserGuildId == 0){ + throw new ErrorCodeException(ErrorCode.FAMILY_NO); + } + + if(guildId!=targetUserGuildId){ + throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS); + } + + GuildInfo guildInfo = GuilidManager.guildInfoMap.get(targetUserGuildId); int uidType = getMemberType(uid, guildInfo.getMembers()); + boolean isIn=false; + for(Set memberEntry : guildInfo.getMembers().values()){ + if(memberEntry.contains(targetUid)){ + isIn =true; + break; + } + } + if(!isIn){ + throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS); + } int targetType = getMemberType(targetUid, guildInfo.getMembers()); if(uidType>1 || uidType>targetType){ throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS); @@ -715,7 +735,7 @@ public class GuildLogic { // RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(uid),cache); PlayerLogic.getInstance().playerInfoUpdate(UserManager.getUser(targetUid)); sendPositionChange(targetUid,position); - User targetUser = UserManager.getUser(targetUid); + if(position == GlobalsDef.CHAIRMAN){ guildInfo.removeMember(GlobalsDef.CHAIRMAN,uid); PlayerLogic.getInstance().playerInfoUpdate(user); 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 a5269e51d..f638c1cc8 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 @@ -402,12 +402,13 @@ public class PlayerLogic { public void flushUserdataEvery(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception { //跟新签到天数 - if (!TimeUtils.isSameMonthFiveWithNow(user.getPlayerInfoManager().getOffLineTime())) { - user.getPlayerInfoManager().getPhoneBindInfo().setState(0); + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + if (!TimeUtils.isSameMonthFiveWithNow(playerInfoManager.getOffLineTime())) { + playerInfoManager.getPhoneBindInfo().setState(0); } - user.getPlayerInfoManager().setMonthCardDailyTake(new HashSet<>());//刷新月卡信息 + playerInfoManager.setMonthCardDailyTake(new HashSet<>());//刷新月卡信息 if(null!=fBuilder){ - PhoneBindInfo phoneBindInfo = user.getPlayerInfoManager().getPhoneBindInfo(); + PhoneBindInfo phoneBindInfo =playerInfoManager.getPhoneBindInfo(); fBuilder.setPlayerBindPhone(CommonProto.PlayerBindPhone.newBuilder().setPhoneNum(phoneBindInfo.getPhoneNum()).setState(phoneBindInfo.getState()).build()); } @@ -419,6 +420,19 @@ public class PlayerLogic { ItemUtil.itemCost(user, dailyScore, BIReason.DAILY_SCORE_CONSUME, 1); } + //退出公会 隔天清空援助信息 + if(playerInfoManager.getGuildId()==0){ + GuildMyInfo guildMyInfo = user.getGuildMyInfo(); + if(guildMyInfo.getGuidHelpInfo().size()!=0||guildMyInfo.getGuidHelpHadTakeInfo().size()!=0){ + guildMyInfo.setGuidHelpInfo(new HashMap<>()); + guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>()); + guildMyInfo.setGuildHelpSendTime(0); + guildMyInfo.setGuildHelpReward(false); + guildMyInfo.setGuildHelpTime(0); + } + + } + } public void modifyDecoration(ISession session, int type,int decorationId,MessageTypeProto.MessageType messageType) throws Exception {