From 8462e03b43458400d88f1ff0cd57355bbcac24fd Mon Sep 17 00:00:00 2001 From: wangyuan Date: Mon, 11 Nov 2019 10:48:33 +0800 Subject: [PATCH] sore flush --- .../ljsd/jieling/handler/map/MapManager.java | 6 ++++ .../jieling/logic/GlobalDataManaager.java | 9 ++--- .../activity/RemoveEventHeroHandler.java | 34 +++++++++++++++++++ .../logic/activity/event/RemoveHeroEvent.java | 19 +++++++++++ .../ljsd/jieling/logic/dao/HeroManager.java | 5 ++- .../ljsd/jieling/logic/hero/HeroLogic.java | 10 +----- .../ljsd/jieling/logic/item/ItemLogic.java | 2 +- .../ljsd/jieling/logic/store/StoreLogic.java | 10 +++++- .../network/server/ProtocolsManager.java | 1 + 9 files changed, 78 insertions(+), 18 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RemoveEventHeroHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RemoveHeroEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index a38ea4445..aa1574495 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -724,6 +724,12 @@ public class MapManager extends MongoBase { endlessMapInfo.setCurMapId(mapId); updateString("endlessMapInfo.curMapId",mapId); } + + public void updateEndlessHero(Map endlessHeroInfo){ + endlessMapInfo.setEndlessHeroInfo(endlessHeroInfo); + updateString("endlessMapInfo.endlessHeroInfo",endlessHeroInfo); + } + public void addEndlessSign(int mapId,int cellId,String info){ if(endlessMapInfo.getMapSign()==null){ endlessMapInfo.setMapSign(new HashMap<>()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 81f86d0a7..bd4904159 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -10,6 +10,7 @@ import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.FightMainEventHandler; +import com.ljsd.jieling.logic.activity.RemoveEventHeroHandler; import com.ljsd.jieling.logic.activity.UserLevelEventHandler; import com.ljsd.jieling.logic.arena.ArenaLogic; import com.ljsd.jieling.logic.blood.BloodLogic; @@ -241,6 +242,7 @@ public class GlobalDataManaager { new RPCServerTask(configurableApplicationContext).start(); new RPCGmServerTask(configurableApplicationContext).start(); new UserLevelEventHandler(); + new RemoveEventHeroHandler(); new FightMainEventHandler(); } catch (Exception e) { LOGGER.error("e",e); @@ -305,12 +307,7 @@ public class GlobalDataManaager { FriendLogic.getInstance().refreshState(session); PlayerLogic.getInstance().sendTimingMail(user); -// int sendDays = user.getPlayerInfoManager().getSendDays(); -// int differentDays = TimeUtils.differentDaysByHour( user.getPlayerInfoManager().getLoginTime(),System.currentTimeMillis(), 5); -// int days = sendDays + differentDays; -// PlayerLogic.getInstance().sendTestWelfareMail(user,sendDays+1,sendDays+differentDays); -// user.getPlayerInfoManager().setSendDays(days); -// MapLogic.getInstance().towerAutoReset(session,fBuilder); + if(fBuilder!=null){ fBuilder.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(user.getPlayerInfoManager().getSign()+1).setState(user.getPlayerInfoManager().getSignTotay()).build()); user.getPlayerInfoManager().setLoginTime(TimeUtils.now()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RemoveEventHeroHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RemoveEventHeroHandler.java new file mode 100644 index 000000000..28bd524de --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RemoveEventHeroHandler.java @@ -0,0 +1,34 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.RemoveHeroEvent; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; + +import java.util.Map; + +public class RemoveEventHeroHandler implements IEventHandler{ + + public RemoveEventHeroHandler() { + Poster.getPoster().listenEvent(this, RemoveHeroEvent.class); + } + @Override + public void onEvent(IEvent event) throws Exception { + if(event instanceof RemoveHeroEvent){ + RemoveHeroEvent removeHeroEvent = (RemoveHeroEvent)event; + int uid = removeHeroEvent.getUid(); + String heroId = removeHeroEvent.getHeroId(); + User userInMem = UserManager.getUserInMem(uid); + if(userInMem == null){ + return; + } + Map endlessHeroInfo = userInMem.getMapManager().getEndlessMapInfo().getEndlessHeroInfo(); + if(endlessHeroInfo!=null && endlessHeroInfo.containsKey(heroId)){ + endlessHeroInfo.remove(heroId); + userInMem.getMapManager().updateEndlessHero(endlessHeroInfo); + } + } + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RemoveHeroEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RemoveHeroEvent.java new file mode 100644 index 000000000..c3ebd8fa3 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RemoveHeroEvent.java @@ -0,0 +1,19 @@ +package com.ljsd.jieling.logic.activity.event; + +public class RemoveHeroEvent implements IEvent { + private int uid; + private String heroId; + + public RemoveHeroEvent(int uid, String heroId) { + this.uid = uid; + this.heroId = heroId; + } + + public int getUid() { + return uid; + } + + public String getHeroId() { + return heroId; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index 9aadf029b..8dddf5543 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.db.mongo.MongoKey; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.RemoveHeroEvent; import com.ljsd.jieling.logic.dao.root.User; import java.util.HashMap; @@ -50,10 +52,11 @@ public class HeroManager extends MongoBase { return heroMap.get(heroId); } - public void removeHero(String heroId) { + public void removeHero(int uid,String heroId) { if (heroMap.containsKey(heroId)){ removeString(getMongoKey()+".heroMap." + heroId); heroMap.remove(heroId); + Poster.getPoster().dispatchEvent(new RemoveHeroEvent(uid,heroId)); } } 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 41637a25a..4ec4acf83 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 @@ -705,14 +705,6 @@ public class HeroLogic { } - - public void recyleHeroBySystem(User user,Set removeHeroIds) throws Exception { - HeroManager heroManager = user.getHeroManager(); - for(String useHeroId : removeHeroIds){ - heroManager.removeHero(useHeroId); - } - } - //初始属性*(1+化境增长)*等级系数 + 初始属性*突破系数 private Map calHeroAllAttribute(Hero hero,boolean isForce){ Map result = new HashMap<>(); @@ -2071,7 +2063,7 @@ public class HeroLogic { throw new ErrorCodeException(ErrorCode.HERO_ITEM_NOT); } - heroManager.removeHero(heroId); + heroManager.removeHero(uid,heroId); int[][] returnMaterials = sHeroReturn.getReturnMaterials(); CommonProto.Drop.Builder drop = ItemUtil.drop(user, returnMaterials, BIReason.HERO_BACK_REWARD); SHeroLevlConfig sHeroLevlConfig = SHeroLevlConfig.getsHeroLevlConfigMap().get(hero.getLevel()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index 285421a07..73e893e53 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -303,7 +303,7 @@ public class ItemLogic { Map baseRandomMap = new HashMap<>(); for (String heroId : heroIdsList) { Hero hero = heroManager.getHeroMap().get(heroId); - heroManager.removeHero(heroId); + heroManager.removeHero(uid,heroId); int[][] sumConsume = SHeroLevlConfig.getsHeroLevlConfigMap().get(hero.getLevel()).getSumConsume(); ItemUtil.combineReward(sumConsume,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap); int breakId = hero.getBreakId(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index 51534b151..ecd6ba0dc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -115,7 +115,6 @@ public class StoreLogic { User user = UserManager.getUser(session.getUid()); if(user.getStoreManager().getStoreInfoMap().containsKey(sStoreTypeConfig.getId())){ updateUsersStoreAyync(UserManager.getUser(session.getUid()),user1 -> { - getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); StoreInfo storeInfo = user.getStoreManager().getStoreInfoMap().get(sStoreTypeConfig.getId()); Map storeItem = getStoreItem(sStoreTypeConfig.getId(), sStoreTypeConfig, user); @@ -200,6 +199,13 @@ public class StoreLogic { removeStoreIds.add(storeInfo.getId()); } } + boolean overTime = TimeUtils.isOverTime((int)(nowTime/1000), storeInfo.getLastRefreshTime()); + if (overTime){ + Map storeItem = getStoreItem(sStoreTypeConfig.getId(), sStoreTypeConfig, user); + storeInfo.setLastRefreshTime(nowTime); + storeInfo.setItemNumMap(storeItem); + sendStoreUpdateIndication(user.getId(),storeInfo); + } } for(Integer removeStoreId : removeStoreIds){ storeManager.removeStoreInfo(removeStoreId); @@ -209,6 +215,8 @@ public class StoreLogic { initOneStore(user,openId); } } + + } public static void sendStoreUpdateIndication(int uid,StoreInfo storeInfo){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java index 11826382e..9da13e065 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java @@ -413,6 +413,7 @@ public class ProtocolsManager implements ProtocolsAbstract { //更新在线时长 ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.OnlineReward,(int)(onlineTime/TimeUtils.ONE_SECOND)); MongoUtil.getInstence().lastUpdate(); + session.setFiveReady(0); } backUpMsgToRedis(session); // 下线处理的逻辑需要添加在这里