From 1ed2fd44891dbdc4160b66fc17827a2165c61b69 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Thu, 22 Aug 2019 19:59:23 +0800 Subject: [PATCH 1/5] check mail --- .../src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java | 4 ++++ 1 file changed, 4 insertions(+) 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 a12de3b69..0a4b49a97 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 @@ -192,6 +192,10 @@ public class MailLogic { // mail.setState(Global.MAIL_DRAW_ST_GOT); // mailManager.addMail(mail); } + if(mailItem.length()==0){ + MessageUtil.sendErrorResponse(iSession,0,msgId,"该邮件没有附件可以领取"); + return; + } int[][] itemArr = StringUtil.parseFiledInt2(mailItem.toString()); boolean isLimit = ItemUtil.checkCardAndEquipLimit(user,itemArr); if (isLimit){ From 08615efd4f21493ba4231fdc26af9a29ab19665c Mon Sep 17 00:00:00 2001 From: wangyuan Date: Thu, 22 Aug 2019 20:01:56 +0800 Subject: [PATCH 2/5] fix friend --- .../main/java/com/ljsd/jieling/logic/friend/FriendLogic.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java index 95a010ae8..3c58ade8f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java @@ -328,9 +328,7 @@ public class FriendLogic { @Override public void work(User user) throws Exception { boolean isOnline = OnlineUserManager.checkUidOnline(user.getId()); - if(isOnline){ - MissionEventDistributor.requestStart(); - } + MissionEventDistributor.requestStart(); user.getUserMissionManager().onGameEvent(user, GameEvent.FRIEND_NUMS, 1); if(isOnline){ ISession session = OnlineUserManager.getSessionByUid(user.getId()); From cf0b06fa8cdbeb2b01528d0013ff1eab248c4079 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Fri, 23 Aug 2019 09:41:13 +0800 Subject: [PATCH 3/5] fix online --- .../jieling/logic/friend/FriendLogic.java | 2 +- .../ljsd/jieling/logic/hero/HeroLogic.java | 47 +++++++++++++++++-- .../com/ljsd/jieling/util/CBean2Proto.java | 2 +- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java index 3c58ade8f..bfbfb9689 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java @@ -448,7 +448,7 @@ public class FriendLogic { User friendUser = UserManager.getUser(friendId); FriendManager friendManager1 = friendUser.getFriendManager(); Map haveRewardMap = friendUser.getFriendManager().getHaveRewardMap(); - if (haveRewardMap.get(uid) != 0) { + if (haveRewardMap.containsKey(uid) && haveRewardMap.get(uid) != 0) { MessageUtil.sendErrorResponse(iSession, 0, msgId, "已经赠送过"); return; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 444f3aa5e..0d83b694c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -4,9 +4,12 @@ import com.ljsd.GameApplication; import com.ljsd.jieling.chat.logic.ChatLogic; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.core.HandlerLogicThread; import com.ljsd.jieling.core.VipPrivilegeType; +import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.*; @@ -14,6 +17,8 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.CombatLogic; import com.ljsd.jieling.logic.item.ItemLogic; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; +import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.HeroInfoProto; @@ -914,7 +919,7 @@ public class HeroLogic { public Map calHeroNotBufferAttribute(User user, Hero hero,boolean isForce,int teamId){ Map heroAllAttribute = calHeroAllAttribute(hero,isForce); heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAllAttribute.get(GlobalsDef.HP_TYPE)); - Collection values = hero.getEquipByPositionMap().values(); + EquipManager equipManager = user.getEquipManager(); PokemonManager pokemonManager = user.getPokemonManager(); SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); @@ -938,16 +943,50 @@ public class HeroLogic { } //装备总战力评分 int equipForce=0; - for(String equipId:values){ + boolean needRemove = false; + Iterator> iterator = hero.getEquipByPositionMap().entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry next = iterator.next(); + String equipId = next.getValue(); Equip equip = equipManager.getEquipMap().get(equipId); + if(equip == null){ + needRemove = true; + continue; + } Map propertyValueByIdMap = equip.getPropertyValueByIdMap(); Map secondValueByIdMap = equip.getSecondValueByIdMap(); - // LOGGER.info("cal equip = {}",equip.getEquipId()); + // LOGGER.info("cal equip = {}",equip.getEquipId()); combinedAttribute(propertyValueByIdMap,heroAllAttribute); combinedAttribute(secondValueByIdMap,heroAllAttribute); SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equip.getEquipId()); equipForce+=sEquipConfig.getScore(); - // LOGGER.info("cal equip = {} end",equip.getEquipId()); + } + if(needRemove){ + AyyncWorker ayyncWorker = new AyyncWorker(user,true) { + @Override + public void work(User user) throws Exception { + Map heroMap = user.getHeroManager().getHeroMap(); + for(Hero heroTmp : heroMap.values()){ + Iterator> iterator = heroTmp.getEquipByPositionMap().entrySet().iterator(); + boolean isUpate = false; + while (iterator.hasNext()){ + Map.Entry next = iterator.next(); + String equipId = next.getValue(); + Equip equip = equipManager.getEquipMap().get(equipId); + if(equip == null){ + iterator.remove(); + isUpate = true; + } + } + if(isUpate){ + heroTmp.setEquipByPositionMap(heroTmp.getEquipByPositionMap()); + } + } + } + }; + ProtocolsManager instance = ProtocolsManager.getInstance(); + HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM]; + handlerThread.addAyyncWorker(ayyncWorker); } //天赋异妖加成 Map ringFireMap = pokemonManager.getRingFireMap(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 5309e3e0c..cc63139f5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -274,7 +274,7 @@ public class CBean2Proto { if (giveMap.size() != 0 && giveMap.containsKey(friendId)){ isGrive = giveMap.get(friendId); } - if (haveRewardMap.size() != 0 && giveMap.containsKey(friendId)){ + if (haveRewardMap.size() != 0 && giveMap.containsKey(friendId) && haveRewardMap.containsKey(friendId)){ haveReward = haveRewardMap.get(friendId) ==2?0:haveRewardMap.get(friendId); } } From 6f2955e08f02204253149f8f672c946b4d7618ba Mon Sep 17 00:00:00 2001 From: wangyuan Date: Fri, 23 Aug 2019 09:50:53 +0800 Subject: [PATCH 4/5] fix take --- .../main/java/com/ljsd/jieling/logic/friend/FriendLogic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java index bfbfb9689..2108c3157 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java @@ -509,7 +509,7 @@ public class FriendLogic { MessageUtil.sendErrorResponse(iSession, 0, msgId, "没有该好友"); return; } - if (haveRewardMap.get(friendId) !=1){ + if (haveRewardMap.containsKey(friendId) && haveRewardMap.get(friendId) !=1){ MessageUtil.sendErrorResponse(iSession, 0, msgId, "已领取赠礼"); return; } From 30afcf32b0413b885af051d70c79ebf3084e46eb Mon Sep 17 00:00:00 2001 From: wangyuan Date: Fri, 23 Aug 2019 09:56:17 +0800 Subject: [PATCH 5/5] friend --- .../main/java/com/ljsd/jieling/logic/friend/FriendLogic.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java index 2108c3157..e550b0631 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java @@ -467,7 +467,7 @@ public class FriendLogic { User friendUser = UserManager.getUser(friendUserId); FriendManager friendManager1 = friendUser.getFriendManager(); Map haveRewardMap = friendManager1.getHaveRewardMap(); - if (haveRewardMap.get(uid) != 0) { + if (haveRewardMap.containsKey(uid) && haveRewardMap.get(uid) != 0) { continue; } friendManager.updateGiveMap(friendUserId,1); @@ -520,7 +520,7 @@ public class FriendLogic { receieveFriends.add(friendId); }else{ for (Integer friend : friends) { - if (haveRewardMap.get(friend) != 1) { + if (haveRewardMap.containsKey(friend) && haveRewardMap.get(friend) != 1) { continue; } check = playerInfoManager.check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1);