diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoRechargeConverter.java b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoRechargeConverter.java index 855a050a7..fce397cc6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoRechargeConverter.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoRechargeConverter.java @@ -14,8 +14,9 @@ import org.springframework.data.convert.ReadingConverter; public class MongoRechargeConverter implements Converter { @Override public AbstractWelfareBag convert(BasicDBObject source) { + Object modId = source.getOrDefault("modId", 0); Gson gson = new Gson(); - SRechargeCommodityNewConfig config = STableManager.getConfig(SRechargeCommodityNewConfig.class).get(source.getInt("modId")); + SRechargeCommodityNewConfig config = STableManager.getConfig(SRechargeCommodityNewConfig.class).get((int)modId); Class target = AbstractWelfareBag.class; if (config != null){ if(config.getOtype() == RechargeType.timeLimit.getType()){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildChallengeLogic.java index 8b925d599..66ed142b5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildChallengeLogic.java @@ -100,8 +100,8 @@ public class GuildChallengeLogic { int isRefresh = 0 ; //先清除特权 - if(guildInfo.getCurrBossId()!=0&&guildInfo.getCurrBossId()!= guildMyInfo.getLastMonsterId()&& guildMyInfo.getLastMonsterId()!=0){ - if(!guildMyInfo.getRefreshedBoss().contains(guildMyInfo.getLastMonsterId())&&guildMyInfo.getGuildChallengeDamage()!=0){ + if(guildInfo.getCurrBossId()!=0 && guildMyInfo.getLastMonsterId()!=0 && guildInfo.getCurrBossId()!=guildMyInfo.getLastMonsterId()){ + if(!guildMyInfo.getRefreshedBoss().contains(guildMyInfo.getLastMonsterId()) && guildMyInfo.getGuildChallengeDamage()!=0){ refreshGuildChallengeStore(user, config.getPrivilege()); guildMyInfo.addRefreshedBoss(guildMyInfo.getLastMonsterId()); isRefresh = 1; @@ -137,7 +137,6 @@ public class GuildChallengeLogic { /** * 挑战、扫荡 - * @param session */ public void doGuildChallenge(ISession session,int bossId,int type,MessageTypeProto.MessageType messageType) throws Exception { int uid = session.getUid(); @@ -146,14 +145,11 @@ public class GuildChallengeLogic { if(guildId==0){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } - + // 挑战加锁 if(!lockMap.containsKey(guildId)){ lockMap.put(guildId,new Object()); } String error = ""; - /** - * 挑战加锁 - */ CommonProto.Drop.Builder drop = null; CommonProto.FightData fightData = null; int kill = 0; @@ -287,6 +283,10 @@ public class GuildChallengeLogic { if(!OnlineUserManager.sessionMap.containsKey(sendUid)){ continue; } + //如果击败的是最后一关 不需要刷新 + if(guildInfo.getBossHpRemain()==-1){ + continue; + } AyyncWorker worker = new AyyncWorker(UserManager.getUser(sendUid),false,(user1)->{ GuildMyInfo guildMyInfo = user1.getGuildMyInfo(); if(guildMyInfo.getGuildChallengeDamage()==0){ @@ -295,13 +295,10 @@ public class GuildChallengeLogic { if(guildMyInfo.getRefreshedBoss().contains(bossId)) { return; } - //如果击败的是最后一关 不需要刷新 - if(guildInfo.getBossHpRemain()!=-1){ - refreshGuildChallengeStore(user1, config.getPrivilege()); - guildMyInfo.addRefreshedBoss(bossId); - guildMyInfo.setLastMonsterId(bossId+1); - guildMyInfo.setGuildChallengeDamage(0); - } + refreshGuildChallengeStore(user1, config.getPrivilege()); + guildMyInfo.addRefreshedBoss(bossId); + guildMyInfo.setLastMonsterId(bossId+1); + guildMyInfo.setGuildChallengeDamage(0); }); ProtocolsManager.getInstance().updateAyncWorker(worker); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java index abfe4e4aa..900913d4f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java @@ -4,6 +4,8 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; import config.SRechargeCommodityNewConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import util.TimeUtils; import java.util.Map; @@ -15,27 +17,26 @@ import java.util.Map; */ public abstract class AbstractRechargeHandler implements RechargeHandler { + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRechargeHandler.class); + @Override public boolean refreshStatus(User user, int rechargeId){ //判断刷新时间 - long now = TimeUtils.now(); AbstractWelfareBag bag = getBag(user, rechargeId); if (bag == null){ + LOGGER.error("查询礼包id为空,错误数据,删除礼包:{}",rechargeId); + user.getPlayerInfoManager().getNewRechargeInfo().removeBag(rechargeId); return false; } + long now = TimeUtils.now(); if(bag.getRefreshTime() != 0 && bag.getRefreshTime() < now){ bag.refresh(); - return true; } - return false; + return true; } /** * 月礼包 特殊处理,需要每日都刷新 - * @param result - * @param user - * @param rechargeId - * @return */ public boolean refreshTime8(boolean result, User user, int rechargeId){ AbstractWelfareBag bag = getBag(user, rechargeId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/GmSingleHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/GmSingleHandler.java index a4f7a3575..d3b30027c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/GmSingleHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/GmSingleHandler.java @@ -20,8 +20,9 @@ public class GmSingleHandler extends AbstractRechargeHandler { @Override public boolean refreshStatus(User user, int rechargeId){ boolean result = false; - AbstractWelfareBag bag = getRechargeMap(user).get(rechargeId); + AbstractWelfareBag bag = getBag(user, rechargeId); if (bag == null){ + user.getPlayerInfoManager().getNewRechargeInfo().removeGmSingle(rechargeId); return false; } GiftMission mission = GmSingleActivityLogic.getInstance().findGiftMission(rechargeId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PerpetualHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PerpetualHandler.java index a8e95b70a..5fc7ed0ca 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PerpetualHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PerpetualHandler.java @@ -18,6 +18,9 @@ public class PerpetualHandler extends AbstractRechargeHandler{ @Override public boolean refreshStatus(User user, int rechargeId){ boolean result = super.refreshStatus(user, rechargeId); + if (!result){ + return false; + } AbstractWelfareBag bag = getBag(user, rechargeId); // 礼包开启 if(bag.isOpen()){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PushHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PushHandler.java index 887e26110..4041406a8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PushHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/PushHandler.java @@ -4,8 +4,6 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PushWelfareBag; import config.SRechargeCommodityNewConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import util.TimeUtils; import java.util.Map; @@ -17,26 +15,25 @@ import java.util.Map; */ public class PushHandler extends AbstractRechargeHandler { - private static final Logger LOGGER = LoggerFactory.getLogger(PushHandler.class); - @Override public boolean refreshStatus(User user, int rechargeId){ boolean result = super.refreshStatus(user, rechargeId); + if (!result){ + return false; + } + long now = TimeUtils.now(); AbstractWelfareBag bag = getBag(user, rechargeId); if(bag.isOpen()){ - long now = TimeUtils.now(); // 结束时间到 if(bag.getEndTime() != 0 && now > bag.getEndTime()){ bag.setOpen(false); bag.addBuyTimes(1); - result = true; } // 月礼包 特殊处理,需要每日都刷新 result = refreshTime8(result, user, rechargeId); } else { user.getPlayerInfoManager().getNewRechargeInfo().removePush(bag.getModId()); - result = true; } return result; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/ReceiveHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/ReceiveHandler.java index 1e4bc03bf..d00443a30 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/ReceiveHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/ReceiveHandler.java @@ -19,15 +19,17 @@ public class ReceiveHandler extends AbstractRechargeHandler { @Override public boolean refreshStatus(User user, int rechargeId){ boolean result = super.refreshStatus(user, rechargeId); - AbstractWelfareBag bag = getBag(user, rechargeId); + if (!result){ + return false; + } long now = TimeUtils.now(); + AbstractWelfareBag bag = getBag(user, rechargeId); // 礼包开启 if(bag.isOpen()){ // 结束时间到 if(bag.getEndTime() != 0 && now > bag.getEndTime()){ bag.setOpen(false); bag.resetBuyTimes(); - result = true; } // 月礼包 特殊处理,需要每日都刷新 result = refreshTime8(result, user, rechargeId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/TimeLimitHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/TimeLimitHandler.java index 7f48dc71a..f2ce44512 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/TimeLimitHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/TimeLimitHandler.java @@ -23,15 +23,17 @@ public class TimeLimitHandler extends AbstractRechargeHandler{ @Override public boolean refreshStatus(User user, int rechargeId){ boolean result = super.refreshStatus(user, rechargeId); - //判断刷新时间 + if (!result){ + return false; + } long now = TimeUtils.now(); AbstractWelfareBag bag = getBag(user, rechargeId); + //判断刷新时间 if(bag.isOpen()){ // 结束时间到 if(bag.getEndTime() != 0 && now > bag.getEndTime()){ bag.setOpen(false); bag.resetBuyTimes(); - result = true; } // 月礼包 特殊处理,需要每日都刷新 return refreshTime8(result, user, rechargeId); @@ -45,7 +47,6 @@ public class TimeLimitHandler extends AbstractRechargeHandler{ bag.setStartTime(time[0]); bag.setEndTime(time[1]); bag.setOpen(true); - result = true; } } return result;