From 6fda647587d04f93eabcf31a0c82116310f842c9 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 26 Sep 2020 17:59:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E7=89=B9=E6=9D=83=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/dao/PlayerManager.java | 7 ++++--- .../java/com/ljsd/jieling/logic/player/PlayerLogic.java | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) 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 96d4d15da..70bcc8601 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 @@ -407,9 +407,10 @@ public class PlayerManager extends MongoBase { * @param time 以s为单位 结束时间 */ public void addVipByTime(int privilageId,int time){ - VipInfo vipInfo = new VipInfo(); - vipInfo.setEffectTime(time); - this.vipInfo.put(privilageId,vipInfo); + VipInfo addInfo = new VipInfo(); + addInfo.setEffectTime(time); + vipInfo.put(privilageId,addInfo); + updateString("vipInfo", this.vipInfo); } public boolean containPrivilageId(int privilageId) { 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 5b32e4a90..b5469660f 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 @@ -306,7 +306,12 @@ public class PlayerLogic { sendVipDailyOrLevlUpReward(user, vipLevel,BIReason.VIP_DAY_REWARD); List privilegeList = new ArrayList<>(); Map vipInfo = playerInfoManager.getVipInfo(); + Set fixVipId = new HashSet<>(); for(Map.Entry vipInfoItem : vipInfo.entrySet()){ + //如果这个权限是活动 且永久了 那么需要修复 + if(vipInfoItem.getValue().getEffectTime()==0&&SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(vipInfoItem.getKey()).getPrivilegeType()==5){ + fixVipId.add(vipInfoItem.getKey()); + } if(vipInfoItem.getValue().getEffectTime()!=0 && vipInfoItem.getValue().getEffectTime()<=(TimeUtils.now()/1000)){ if(SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(vipInfoItem.getKey()).getPrivilegeType()==VipPrivilegeType.ADVENTURE_BASE_REWARD){ CombatLogic.getInstance().getNewAdventureReward(user,true,vipInfoItem.getValue().getEffectTime()); @@ -315,6 +320,9 @@ public class PlayerLogic { continue; } } + if(!fixVipId.isEmpty()){ + fixVipId.forEach(n->playerInfoManager.addVipByTime(n,(int)((TimeUtils.now()+TimeUtils.WEEK)/1000))); + } playerInfoManager.vipFlush(removePrivileges); //vip刷新后才能发给前端 if(fBuilder!=null){