From 5d0c9224b8deb586e4678d8097efc044cf75cf2b Mon Sep 17 00:00:00 2001 From: wangyuan Date: Fri, 24 May 2019 13:39:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=82=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/globals/GlobalPrivilegeType.java | 4 ++ .../jieling/handler/GetAllMailHandler.java | 3 ++ .../jieling/handler/GetPlayerInfoHandler.java | 17 ++++++-- .../ljsd/jieling/logic/arena/ArenaLogic.java | 3 ++ .../ljsd/jieling/logic/dao/AdventureBoss.java | 1 + .../ljsd/jieling/logic/dao/PlayerManager.java | 10 +++++ .../ljsd/jieling/logic/fight/CombatLogic.java | 41 ++++++++++++++----- .../jieling/logic/item/WorkShopLogic.java | 9 +++- 8 files changed, 72 insertions(+), 16 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalPrivilegeType.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalPrivilegeType.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalPrivilegeType.java new file mode 100644 index 000000000..58af29963 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalPrivilegeType.java @@ -0,0 +1,4 @@ +package com.ljsd.jieling.globals; + +public class GlobalPrivilegeType { +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllMailHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllMailHandler.java index 9a8ad6045..b9c9277fb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllMailHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllMailHandler.java @@ -32,6 +32,9 @@ public class GetAllMailHandler extends BaseHandler { LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={}", userId, token,msgId,msgIndex); List allUserMail = MailLogic.getInstance().getAllUserMail(userId); + if(allUserMail.size()>10){ + allUserMail = allUserMail.subList(0, 10); + } PlayerInfoProto.GetAllMailInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetAllMailInfoResponse.newBuilder() .addAllMialList(allUserMail) .build(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 537e01708..388f112a9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -4,6 +4,7 @@ import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.arena.ArenaLogic; +import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.StoreLogic; @@ -47,8 +48,9 @@ public class GetPlayerInfoHandler extends BaseHandler{ userId, token,msgId,msgIndex,getPlayerInfoRequest.getNum(),getPlayerInfoRequest.getStr()); User user = UserManager.getUser(userId); + PlayerManager playerInfoManager = user.getPlayerInfoManager(); // 需要隔天刷新的字段统一在这里处理 - if (TimeUtils.isOverTime(5, user.getPlayerInfoManager().getLoginTime())) { + if (TimeUtils.isOverTime(5,playerInfoManager.getLoginTime())) { MapLogic.getInstance().resetDayInfo(user); //活动刷新 ActivityLogic.getInstance().flushEveryDay(user); @@ -58,20 +60,29 @@ public class GetPlayerInfoHandler extends BaseHandler{ ArenaLogic.getInstance().flushFreeUseTimes(user); } - user.getPlayerInfoManager().setLoginTime(TimeUtils.now()); - Map guidePoints = user.getPlayerInfoManager().getGuidePoints(); + playerInfoManager.setLoginTime(TimeUtils.now()); + Map guidePoints = playerInfoManager.getGuidePoints(); + Map vipInfo = playerInfoManager.getVipInfo(); List list = new ArrayList<>(); + List privilegeList = new ArrayList<>(); for(Map.Entry guideItem : guidePoints.entrySet()){ list.add(CommonProto.NewPlayerGuidePoint.newBuilder() .setType(guideItem.getKey()) . setId(guideItem.getValue()) .build()); } + for(Map.Entry vipInfoItem : vipInfo.entrySet()){ + privilegeList.add(CommonProto.Privilege.newBuilder() + .setId(vipInfoItem.getKey()) + . setUseeTimes(vipInfoItem.getValue()) + .build()); + } CommonProto.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager(), user.getPlayerInfoManager().getMapId(), user.getMapManager().getCurMapId(),user.getMapManager()); PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() .setPlayer(player) .addAllNewPlayerGuidePoint(list) + .addAllPrivilege(privilegeList) .build(); try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java index 411852cac..a7d1c6ecf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java @@ -2,8 +2,10 @@ package com.ljsd.jieling.logic.arena; +import com.ljsd.common.mogodb.LjsdMongoTemplate; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.globals.Global; @@ -567,6 +569,7 @@ public class ArenaLogic { break; } MailLogic.getInstance().sendMail(Integer.parseInt(user.getId()),title,content,rewardByRank,nowTime, Global.MAIL_EFFECTIVE_TIME); + MongoUtil.getInstence().lastUpdate(); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureBoss.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureBoss.java index b2ea4284d..487d1f327 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureBoss.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureBoss.java @@ -25,6 +25,7 @@ public class AdventureBoss { this.remainHps = remainHp; this.bossGroupId = bossGroupId; this.arenaLevel = arenaLevel; + this.arenaId = arenaId; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 5326cdf3e..919fb4b58 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -47,6 +47,8 @@ public class PlayerManager extends MongoBase { private Map guidePoints = new HashMap<>(); + private Map vipInfo = new HashMap<>(); + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); } @@ -202,4 +204,12 @@ public class PlayerManager extends MongoBase { updateString("loginTime", loginTime); this.loginTime = loginTime; } + + public Map getVipInfo() { + return vipInfo; + } + + public void updateVipInfo(int vipLevel){ + + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 6874f5042..82db0d3dc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -148,6 +148,7 @@ public class CombatLogic { boolean need = false; if(StringUtil.isEmpty(adventureStateInfo.getBossId())){ if(now-adventureStateInfo.getStartTime()>nextFlushTime){ + remainTime=0; needRandom = true; } }else{ @@ -162,6 +163,7 @@ public class CombatLogic { int bossGroupId = randomInvasionBoss(uid, adventureStateInfo.getPosition()); if(bossGroupId>0){ nextFlushTime+=remainTime; + remainTime =sAdventureConfig.getInvasionBossHolding(); need=true; } } @@ -209,6 +211,11 @@ public class CombatLogic { } }else{ if(remainTime>0){ + AdventureBoss adventureBoss = RedisUtil.getInstence().getMapEntry(RedisKey.ADVENTRUEN_BOSS_INFO, "", adventureStateInfo.getBossId(), AdventureBoss.class); + if(adventureBoss == null){ + needRandom = true; + remainTime=0; + } need= true; } if(remainTime+nextFlushTime<0){ @@ -336,7 +343,6 @@ public class CombatLogic { private Map getAdventureReward(User user, int position) throws Exception { AdventureManager adventureManager = user.getAdventureManager(); - CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder(); Map adventureStateInfoMap = adventureManager.getAdventureStateInfoMap(); int now = (int)(System.currentTimeMillis()/1000); SGameSetting gameSetting = SGameSetting.getGameSetting(); @@ -384,7 +390,6 @@ public class CombatLogic { private Map getAdventureFastReward(User user,int timeDuration) throws Exception { AdventureManager adventureManager = user.getAdventureManager(); Map adventureStateInfoMap = adventureManager.getAdventureStateInfoMap(); - int now = (int)(System.currentTimeMillis()/1000); SGameSetting gameSetting = SGameSetting.getGameSetting(); int adventureRefresh = gameSetting.getAdventureRefresh(); int times = timeDuration / adventureRefresh; @@ -428,6 +433,7 @@ public class CombatLogic { FightInfoProto.AdventureBossInfoResponse.Builder builder = FightInfoProto.AdventureBossInfoResponse.newBuilder(); Map myHurtInfo = RedisUtil.getInstence().getMapValues(RedisKey.ADVENTRUEN_BOSS_OWN, Integer.toString(uid), String.class, Integer.class); int now = (int)(TimeUtils.now()/1000); + int count = 0; if(myHurtInfo!=null&&!myHurtInfo.isEmpty()){ List kes = new ArrayList<>(myHurtInfo.keySet()); List adventureBosseInfo = RedisUtil.getInstence().getMapEntrys(RedisKey.ADVENTRUEN_BOSS_INFO, "", kes, AdventureBoss.class); @@ -436,6 +442,9 @@ public class CombatLogic { if(adventureBoss == null){ continue; } + if(count>10){ + break; + } String bossId = adventureBoss.getBossId(); int arenaId = adventureBoss.getArenaId(); int findTime = adventureBoss.getFindTime(); @@ -447,6 +456,7 @@ public class CombatLogic { removeAdventureBosseInfo.add(bossId); continue; } + count++; User findUsser = UserManager.getUser(findUserId); builder.addAdventureBossInfo(CommonProto.AdventureBossInfo.newBuilder() .setArenaId(adventureBoss.getArenaId()) @@ -457,6 +467,7 @@ public class CombatLogic { .setMyHurt(myHurtInfo.get(bossId)) .setRemainTime(remainTime) .setTotalHp(adventureBoss.getTotalHp()) + .setArenaLevel(adventureBoss.getArenaLevel()) .setBossRemainlHp(adventureBoss.getRemainHp()) .build()); myHurtInfo.remove(bossId); @@ -507,8 +518,7 @@ public class CombatLogic { } AdventureBoss adventureBoss = new AdventureBoss(bossId,bossGroupID,arenaID,levle,uid,now,totalHp,hps); RedisUtil.getInstence().putMapEntry(RedisKey.ADVENTRUEN_BOSS_INFO,"",bossId,adventureBoss); - RedisUtil.getInstence().putMapEntry(RedisKey.ADVENTRUEN_BOSS_OWN,"",bossId,0); - broadAdventureBoss(adventureBoss,user.getPlayerInfoManager().getNickName()); + RedisUtil.getInstence().putMapEntry(RedisKey.ADVENTRUEN_BOSS_OWN,Integer.toString(uid),bossId,0); } adventureStateInfo.setBossId(bossId); adventureStateInfo.setBossGroupId(bossGroupID); @@ -543,6 +553,8 @@ public class CombatLogic { MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ADVENTURE_BOSS_SHARE_RESPONSE_VALUE,"data wrong"); return; } + User user = UserManager.getUser(session.getUid()); + broadAdventureBoss(adventureBoss,user.getPlayerInfoManager().getNickName()); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_BOSS_SHARE_RESPONSE_VALUE,null,true); } @@ -557,10 +569,10 @@ public class CombatLogic { MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ADVENTURE_BOSS_CHALLENGE_RESPONSE_VALUE,""); return; } - if(dayChallengeTimes + fightTimes > adventureInvasionBossTimes){ + /* if(dayChallengeTimes + fightTimes > adventureInvasionBossTimes){ MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ADVENTURE_BOSS_CHALLENGE_RESPONSE_VALUE,"over fight"); return; - } + }*/ AdventureBoss adventureBoss = RedisUtil.getInstence().getMapEntry(RedisKey.ADVENTRUEN_BOSS_INFO, "", bossId, AdventureBoss.class); if(adventureBoss == null){ MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ADVENTURE_BOSS_CHALLENGE_RESPONSE_VALUE,"boss had killed"); @@ -596,6 +608,7 @@ public class CombatLogic { fightResult = checkResult[0]; //发送击杀boss奖励和发现者奖励 if(fightResult == 1){ + i = i+1; sendRewardOfBossKilled(adventureBoss.getFindUserId(),uid,bossGroupId,adventureBoss.getArenaId(),adventureBoss.getArenaLevel()); RedisUtil.getInstence().removeMapEntrys(RedisKey.ADVENTRUEN_BOSS_INFO,"",bossId); break; @@ -605,7 +618,7 @@ public class CombatLogic { RedisUtil.getInstence().putMapEntry(RedisKey.ADVENTRUEN_BOSS_INFO,"",Integer.toString(uid),adventureBoss); RedisUtil.getInstence().incrementZsetScore(RedisKey.ADVENTRUEN_BOSS_RANK,"",Integer.toString(uid),totalHurt); FightInfoProto.AdventurenBossChallengeResponse build = builder.setHurtNums(totalHurt) - .setFightResult(totalHurt) + .setFightResult(fightResult) .setConsumeFightTimes(i) .build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_BOSS_CHALLENGE_RESPONSE_VALUE,build,true); @@ -661,6 +674,12 @@ public class CombatLogic { if (page == 0) { page = 1; } + int myuid = session.getUid(); + /* Map adventureStateInfoMap = UserManager.getUser(myuid).getAdventureManager().getAdventureStateInfoMap(); + for(AdventureStateInfo adventureStateInfo : adventureStateInfoMap.values()){ + randomInvasionBoss(myuid, adventureStateInfo.getPosition()); + }*/ + int start = (page - 1) * 20, end = page * 20 - 1; List adventureRankItemInfos = new ArrayList<>(20); Set> adventureBossRankInfo= RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ADVENTRUEN_BOSS_RANK,"", start, end); @@ -671,15 +690,15 @@ public class CombatLogic { User user = UserManager.getUser(uid); adventureRankItemInfos.add(CBean2Proto.getAdventureRankItemInfo(uid,user,score,++start)); } - int uid = session.getUid(); - int score = RedisUtil.getInstence().getZSetScore(RedisKey.ADVENTRUEN_BOSS_RANK,"", Integer.toString(uid)).intValue(); + + int score = RedisUtil.getInstence().getZSetScore(RedisKey.ADVENTRUEN_BOSS_RANK,"", Integer.toString(myuid)).intValue(); int myRank =-1; if(score == -1){ score = 0; }else{ - myRank= RedisUtil.getInstence().getZSetreverseRank(RedisKey.ADVENTRUEN_BOSS_RANK,"",Integer.toString(uid)).intValue(); + myRank= RedisUtil.getInstence().getZSetreverseRank(RedisKey.ADVENTRUEN_BOSS_RANK,"",Integer.toString(myuid)).intValue(); } - User user = UserManager.getUser(uid); + User user = UserManager.getUser(myuid); CommonProto.AdventureRankItemInfo myinfo = CBean2Proto.getAdventureRankItemInfo(session.getUid(), user, score, myRank); FightInfoProto.AdventurnRankResponse build = FightInfoProto.AdventurnRankResponse.newBuilder().addAllAdventureRankItemInfo(adventureRankItemInfos).setMyInfo(myinfo).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_BOSS_RANK_RESPONSE_VALUE,build,true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java index 62379cabe..c4617101b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java @@ -162,6 +162,11 @@ public class WorkShopLogic { //装备打造 if(type == GlobalsDef.WORK_CREATE_TYPE){ SWorkShopEquipmentConfig sWorkShopEquipmentConfig = SWorkShopEquipmentConfig.getsWorkShopEquipmentConfigMap().get(functionId); + if(sWorkShopEquipmentConfig == null){ + MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ACTIVITE_WORKSHOP_RESPONSE_VALUE,"参数有误"); + LOGGER.info("the function id ={} is null",functionId); + return; + } if(!checkForActiveUseBlue(user,sWorkShopEquipmentConfig.getOpenRules())){ MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ACTIVITE_WORKSHOP_RESPONSE_VALUE,"参数有误"); return; @@ -325,11 +330,11 @@ public class WorkShopLogic { return; } SWorkShopRebuildConfig sWorkShopRebuildConfig = SWorkShopRebuildConfig.getsWorkShopRebuildConfigByQulity(sEquipConfig.getQuality()); - int addExp = sWorkShopRebuildConfig.getExp(); - user.getWorkShopController().addWorkShopExp(addExp); Equip clone = (Equip)equip.clone(); clone.rebuildEquip(user.getWorkShopController().getWorkShopLevel()); equipManager.setUnDetermined(clone); + int addExp = sWorkShopRebuildConfig.getExp(); + user.getWorkShopController().addWorkShopExp(addExp); PlayerInfoProto.WorkShopRebuildRespoonse build = PlayerInfoProto.WorkShopRebuildRespoonse.newBuilder().setEquip(CBean2Proto.getEquipProto(clone)).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.WORKSHOP_REBUILD_RESPONSE_VALUE,build,true); }