From 92ccef4f64cc7f3c23451b0657c192af612c19f5 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 31 Dec 2019 16:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=B9=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/map/MapLogic.java | 7 +-- .../jieling/logic/activity/ActivityLogic.java | 3 +- .../ljsd/jieling/logic/arena/ArenaLogic.java | 3 +- .../ljsd/jieling/logic/dao/PlayerManager.java | 32 ------------- .../jieling/logic/friend/FriendLogic.java | 9 ++-- .../ljsd/jieling/logic/hero/HeroLogic.java | 3 +- .../jieling/logic/player/PlayerLogic.java | 45 +++++++++++++++++++ .../ljsd/jieling/logic/store/StoreLogic.java | 7 +-- 8 files changed, 64 insertions(+), 45 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 7ffb3f24c..4853bf645 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -30,6 +30,7 @@ import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.hero.HeroAttributeEnum; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; @@ -2150,7 +2151,7 @@ public class MapLogic { // .setRank(rank++) // .setTotalForce(userTmp.getPlayerInfoManager().getMaxForce()) // .setHeadFrame(playerInfoManager.getHeadFrame())); -// } +//// } // Collections.sort(mainLevelRankInfoList, new Comparator() { // @Override // public int compare(CommonProto.MainLevelRankInfo.Builder o1, CommonProto.MainLevelRankInfo.Builder o2) { @@ -2164,7 +2165,7 @@ public class MapLogic { // return o1.getRank()-o2.getRank(); // } // }); -// rank =1; +//// rank =1; // int myRank =-1; // int uid = session.getUid(); // for(CommonProto.MainLevelRankInfo.Builder builder1 : mainLevelRankInfoList){ @@ -2689,7 +2690,7 @@ public class MapLogic { } // TODO 检测重置次数 PlayerManager playerInfoManager = user.getPlayerInfoManager(); - if( !playerInfoManager.check(VipPrivilegeType.TOWER_RESRT_NUM, 1)){ + if( !PlayerLogic.getInstance().check(user,VipPrivilegeType.TOWER_RESRT_NUM, 1)){ throw new ErrorCodeException(ErrorCode.newDefineCode("无重置次数")); } playerInfoManager.updateVipPrivilage(VipPrivilegeType.TOWER_RESRT_NUM,1); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 557aa63b0..ec2b850fd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -15,6 +15,7 @@ import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.store.StoreLogic; @@ -633,7 +634,7 @@ public class ActivityLogic implements IEventHandler{ boolean allowedFree = false; if (randCount == 1) { - allowedFree = user.getPlayerInfoManager().check(VipPrivilegeType.FREE_SECRET_RANDOM, 1); + allowedFree = PlayerLogic.getInstance().check(user,VipPrivilegeType.FREE_SECRET_RANDOM, 1); } if (!allowedFree) { int[][] mainCost = sDifferDemonsBoxSetting.getMainCost(); 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 7fe10470e..ec89c7819 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 @@ -27,6 +27,7 @@ import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.ArenaInfoProto; @@ -325,7 +326,7 @@ public class ArenaLogic { } SArenaSetting sArenaSetting = SArenaSetting.getSArenaSetting(); int battleFree = sArenaSetting.getBattleFree(); - if(!user.getPlayerInfoManager().check(battleFree,1)){ + if(!PlayerLogic.getInstance().check(user,battleFree,1)){ //校验消耗 boolean enough = ItemUtil.itemCost(user, new int[][]{sArenaSetting.getCost()}, BIReason.ARENA_CHALLENGE_CONSUME,enemyInfo.getEnemyId()); if(!enough){ 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 6fab5a6fa..398e487cc 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 @@ -259,38 +259,6 @@ public class PlayerManager extends MongoBase { updateString("vipInfo", vipInfo); } - public boolean check(int privilageId,int updateNum){ - if(privilageId == 0){ - return true; - } - - if(!vipInfo.containsKey(privilageId)){ - return false; - } - VipInfo info = vipInfo.get(privilageId); - if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ - return false; - } - - SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilageId); - Map> conditionMap = SPrivilegeTypeConfig.conditionMap.get(sPrivilegeTypeConfig.getUnlockType()); - int maxCount = 0; - if(sPrivilegeTypeConfig.getUnlockType()!=GlobalsDef.RECHARGE_UNLOCK_PRIVILEGE){ - TreeMap condition = (TreeMap)conditionMap.get(privilageId); - maxCount = condition.floorEntry(level).getValue(); - } - if(maxCount==-1){ - return true; - } - if((info.getCount()+updateNum>maxCount)|| (info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime())){ - return false; - } - updateVipPrivilage(privilageId, updateNum); - return true; - - - } - public boolean checkFunctionIsAllowed(int privilageId){ if(privilageId == VipPrivilegeType.UNLOCK_TRIAL_BOMB_REWARD){ return rechargeInfo.checkOneGoodsIsOverTimeByPrivilege(privilageId); 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 f3373e320..1ed19183f 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 @@ -16,6 +16,7 @@ import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -529,7 +530,7 @@ public class FriendLogic { throw new ErrorCodeException(ErrorCode.FRIENDS_SEMD_YET); } friendManager.updateGiveMap(friendId,1); - boolean check = friendUser.getPlayerInfoManager().check(STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1); + boolean check = PlayerLogic.getInstance().check(user,STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1); if(check){ friendManager1.updateHaveRewardMap(uid,1); sendFriendStatedication(uid,friendId,2); @@ -547,7 +548,7 @@ public class FriendLogic { continue; } friendManager.updateGiveMap(friendUserId,1); - boolean check = friendUser.getPlayerInfoManager().check(STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1); + boolean check = PlayerLogic.getInstance().check(user,STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1); if(check){ friendManager1.updateHaveRewardMap(uid,1); sendFriendStatedication(uid,friendUserId,2); @@ -573,7 +574,7 @@ public class FriendLogic { List friends = friendManager.getFriends(); Map haveRewardMap = friendManager.getHaveRewardMap(); PlayerManager playerInfoManager = user.getPlayerInfoManager(); - boolean check = playerInfoManager.check(STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1); + boolean check = PlayerLogic.getInstance().check(user,STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1); Set receieveFriends = new HashSet<>(); if(!check){ throw new ErrorCodeException(ErrorCode.FRIENDS_GET_MAX); @@ -605,7 +606,7 @@ public class FriendLogic { continue; } if(i++>0){ - check = playerInfoManager.check(STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1); + check = PlayerLogic.getInstance().check(user,STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1); if(!check){ break; } 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 d69d5a026..d307e42a3 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 @@ -21,6 +21,7 @@ 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.MissionLoigc; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -233,7 +234,7 @@ public class HeroLogic{ break; } if(privilege!=0){ - allowFree = user.getPlayerInfoManager().check(privilege, 1); + allowFree = PlayerLogic.getInstance().check(user,privilege, 1); } } 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 1f140386e..9777feb18 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 @@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.player; import com.ljsd.GameApplication; import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig; +import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.dataReport.reportBeans_37.ChatContentType; import com.ljsd.jieling.dataReport.reportBeans_37.Repot37EventUtil; @@ -712,4 +713,48 @@ public class PlayerLogic { user.getPlayerInfoManager().setRideLevel(rideLevel+1); MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } + public boolean check(User user,int privilageId,int updateNum){ + Map vipInfo = user.getPlayerInfoManager().getVipInfo(); + if(privilageId == 0){ + return true; + } + + if(!vipInfo.containsKey(privilageId)){ + return false; + } + VipInfo info = vipInfo.get(privilageId); + if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ + return false; + } + + SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilageId); + Map> conditionMap = SPrivilegeTypeConfig.conditionMap.get(sPrivilegeTypeConfig.getUnlockType()); + int maxCount = 0; + int cond = 0; + switch (sPrivilegeTypeConfig.getUnlockType()){ + case GlobalsDef.LEVEL_UNLOCK_PRIVILEGE: + cond = user.getPlayerInfoManager().getLevel(); + break; + case GlobalsDef.MAIN_LEVEL_UNLOCK_PRIVILEGE: + cond = SMainLevelConfig.config.get(user.getMainLevelManager().getFightId()).getVirtureId(); + break; + case GlobalsDef.VIP_UNLOCK_PRIVILEGE: + cond = user.getPlayerInfoManager().getVipLevel(); + break; + } + if(sPrivilegeTypeConfig.getUnlockType()!=GlobalsDef.RECHARGE_UNLOCK_PRIVILEGE){ + TreeMap condition = (TreeMap)conditionMap.get(privilageId); + maxCount = condition.floorEntry(cond).getValue(); + } + if(maxCount==-1){ + return true; + } + if((info.getCount()+updateNum>maxCount)|| (info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime())){ + return false; + } + user.getPlayerInfoManager().updateVipPrivilage(privilageId, updateNum); + return true; + + + } } 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 43378a0a4..61f0e2344 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 @@ -17,6 +17,7 @@ import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -468,9 +469,9 @@ public class StoreLogic { if(relatedtoVIP == 1){ if(limit == 6){ int goodsNum = sStoreConfig.getGoods()[0][1]*itemNum; - check = playerInfoManager.check(limit, goodsNum); + check = PlayerLogic.getInstance().check(user,limit, goodsNum); }else{ - check = playerInfoManager.check(limit, itemNum); + check = PlayerLogic.getInstance().check(user,limit, itemNum); } }else{ check = limit > buyTimes; @@ -549,7 +550,7 @@ public class StoreLogic { int refreshPrivilege = sStoreTypeConfig.getRefreshPrivilege(); int refreshNum = playerInfoManager.getVipPrivilageValue(refreshPrivilege); int[][] cost = getCost(refreshNum, 1,sStoreTypeConfig.getRefreshItem(),1,0,0); - if(!playerInfoManager.check(refreshPrivilege,1)){ + if(!PlayerLogic.getInstance().check(user,refreshPrivilege,1)){ throw new ErrorCodeException(ErrorCode.newDefineCode("over limmit")); } boolean result = ItemUtil.itemCost(user, cost, BIReason.STORE_HAND_REFRESH,storeId);