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){