diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index b72ab6120..3eb18f623 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -126,7 +126,7 @@ public class GlobalDataManaager implements IManager { if( limitDay[0] == 2 ){ //此时是开服第几天 long day = TimeUtils.getGapDaysByTwoTime(GameApplication.serverConfig.getOpenTime(),TimeUtils.getTimeStamp2(TimeUtils.now()))+1; - if(day < limitDay[1]){ + if(day <= limitDay[1]){ closeList.add(id); continue; } @@ -155,10 +155,10 @@ public class GlobalDataManaager implements IManager { //开服几天后开启 if(getServerOpenTimeCompareSpecialTimeResult()){ int[]limitDay = sGlobalSystemConfig.getIfOpen(); - if(limitDay.length>0 && limitDay != null){ + if(limitDay.length > 0){ if( limitDay[0] == 2 ){ long day = TimeUtils.getGapDaysByTwoTime(GameApplication.serverConfig.getOpenTime(),TimeUtils.getTimeStamp2(TimeUtils.now()))+1; - if(day < limitDay[1]){ + if(day <= limitDay[1]){ continue; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index ed03887d7..a99af0aa2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -214,11 +214,13 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { User user = UserManager.getUser(session.getUid()); List itemArrs = new LinkedList<>(); getAllMissRewards(user, session, itemArrs); - if (itemArrs.size() == 0) + if (itemArrs.size() == 0) { return; + } SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - if (null == sGlobalActivity) + if (null == sGlobalActivity) { throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } String title = SErrorCodeEerverConfig.getI18NMessageNeedConvert("receive_activity_title", new Object[]{sGlobalActivity.getSesc()},new int[]{1},"#"); String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("receive_activity_txt", new Object[]{sGlobalActivity.getSesc()},new int[]{1},"#"); String mailReward = ItemUtil.getMailReward(itemArrs); @@ -308,8 +310,9 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { void onActivityEndSelfWithDealReward(User user) throws Exception { SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - if (sGlobalActivity.getIsMail() == 1) + if (sGlobalActivity.getIsMail() == 1) { onActivityEndDealReward(user); + } onActivityEndOnMySelf(user); } @@ -336,6 +339,15 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { } + /** + * 获取关闭的礼包 + * @param user + * @return + */ + public Set getCloseGoods(User user){ + return new HashSet<>(1); + } + /** * 活动结束邮件 有比较多的潜规则 单号1003747体现 */ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java index 6246ff0a2..5932097d4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java @@ -17,8 +17,10 @@ import config.SGlobalActivity; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; public class HeroStarActivity extends AbstractActivity { private int heroId; @@ -132,4 +134,26 @@ public class HeroStarActivity extends AbstractActivity { MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); return true; } + + @Override + public Set getCloseGoods(User user){ + HashSet set = new HashSet<>(); + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if (mission == null){ + return set; + } + // 活动奖励条件 + List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + for (SActivityRewardConfig rewardConfig : rewardConfigs) { + Map map = mission.getActivityMissionMap(); + ActivityProgressInfo progressInfo = map.get(rewardConfig.getId()); + // 页签不存在或者状态不为可领取状态 + if (progressInfo == null || progressInfo.getState() != 1){ + int goodsId = rewardConfig.getValues()[2][0]; + set.add(goodsId); + break; + } + } + return set; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/MistyTripActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/MistyTripActivity.java index 92f83e4b1..d00f7a1a1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/MistyTripActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/MistyTripActivity.java @@ -26,9 +26,7 @@ import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; import util.TimeUtils; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; public class MistyTripActivity extends AbstractActivity { @@ -115,5 +113,32 @@ public class MistyTripActivity extends AbstractActivity { return false; } + @Override + public Set getCloseGoods(User user){ + HashSet set = new HashSet<>(); + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if (mission == null){ + return set; + } + // 活动详细配置 + Map map = mission.getActivityMissionMap(); + List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + // 创角色第几天 + int days = TimeUtils.getSoFarWentDays(user.getPlayerInfoManager().getCreateTime(), TimeUtils.now())+1; + for (SActivityRewardConfig config : rewardConfigs) { + // 单个页签信息 + ActivityProgressInfo info = map.getOrDefault(config.getId(), null); + if (info == null){ + continue; + } + int[][] values = config.getValues(); + // 条件,天数和任务数量 + if (days < values[0][1] || info.getProgrss() < values[0][0]){ + set.add(values[1][0]); + } + } + return set; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java index 0c0edf409..dd5114447 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java @@ -58,6 +58,7 @@ class RechargeSumDayActivity extends AbstractActivity { /** * 根据配置解析数值进度完成度 */ + @Override boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); User user = UserManager.getUser(session.getUid()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java index 8d5d4b6d2..91b0d35af 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java @@ -265,4 +265,27 @@ public class SuperBoxActivity extends AbstractActivity { return result; } + @Override + public Set getCloseGoods(User user){ + HashSet set = new HashSet<>(); + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if (mission == null){ + return set; + } + // 活动页签 + Map map = mission.getActivityMissionMap(); + Map boxMap = SSurpriseBox.map.get(id); + // 活动奖励条件 + for (Map.Entry entry2 : map.entrySet()) { + if (entry2.getValue().getProgrss() != 1){ + SSurpriseBox box = boxMap.getOrDefault(entry2.getKey(), null); + if (box == null){ + continue; + } + set.add(box.getPackId()); + } + } + return set; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java index a8d5d9252..52101522c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java @@ -48,12 +48,6 @@ public class TreasureActivity extends AbstractActivity { if(user.getPlayerInfoManager().getHadBuyTreasure() == 1){ LOGGER.info("[青龙秘宝初始化] [重置秘宝解锁状态] [uid:{}]",user.getId()); user.getPlayerInfoManager().setHadBuyTreasure(0); - int id=0; - for(SRechargeCommodityNewConfig sRechargeCommodityConfig : SRechargeCommodityNewConfig.configMap.values()){ - if(sRechargeCommodityConfig.getType() == GiftGoodsType.SUN_LONG){ - id=sRechargeCommodityConfig.getId(); - } - } } SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index f85bcdcdd..9ba89369d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -11,17 +11,18 @@ import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.AbstractActivity; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.logic.activity.ActivityTypeEnum; import com.ljsd.jieling.logic.activity.event.*; -import com.ljsd.jieling.logic.dao.PlayerManager; -import com.ljsd.jieling.logic.dao.RechargeInfo; -import com.ljsd.jieling.logic.dao.UserManager; -import com.ljsd.jieling.logic.dao.VipInfo; +import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.expedition.ExpeditionLogic; import com.ljsd.jieling.logic.fight.CombatLogic; @@ -636,26 +637,73 @@ public class BuyGoodsNewLogic { public static Set getGoodsBagInfoFromDelive(int uid) throws Exception { User user = UserManager.getUser(uid); Set list = new HashSet<>(); + // 礼包是否打开 NewRechargeInfo rechargeInfo = user.getPlayerInfoManager().getNewRechargeInfo(); - for(AbstractWelfareBag bag : rechargeInfo.getPerpetualMap().values()){ + Map configMap = SRechargeCommodityNewConfig.configMap; + // 次数,推送,永久礼包一起处理 + ArrayList welfareBags = new ArrayList<>(rechargeInfo.getPerpetualMap().values()); + welfareBags.addAll(rechargeInfo.getTimeLimitMap().values()); + welfareBags.addAll(rechargeInfo.getReceiveMap().values()); + welfareBags.addAll(rechargeInfo.getPushMap().values()); + for (AbstractWelfareBag bag : welfareBags) { if(bag.isOpen()){ - list.add(bag.getModId()); + if (bag.getLimit() == 0 || bag.getLimit() > bag.getBuyTimes()){ + list.add(bag.getModId()); + } } } - for(AbstractWelfareBag bag : rechargeInfo.getTimeLimitMap().values()){ - if(bag.isOpen()){ - list.add(bag.getModId()); + + // 走表判断开启的礼包 + Map activityMap = SGlobalActivity.getsGlobalActivityMap(); + Map missionMap = user.getActivityManager().getActivityMissionMap(); + + for (Map.Entry entry : missionMap.entrySet()) { + int activityId = entry.getKey(); + ActivityMission mission = entry.getValue(); + // 遍历 + Iterator iterator = list.iterator(); + while (iterator.hasNext()){ + SRechargeCommodityNewConfig config = configMap.get(iterator.next()); + // 表控制不显示 + if (config.getIsShowInWeb() == 0){ + iterator.remove(); + continue; + } + // 未加入公会,不显示公会红包 + if (user.getPlayerInfoManager().getGuildId() == 0 && config.getType() == 10){ + iterator.remove(); + continue; + } + + for (String[] open : config.getCondition()) { + // 活动未开启的礼包 + if ("3".equals(open[0])){ + if (mission.getActivityState() != ActivityType.OPEN_STATE){ + if (open[1].equals(String.valueOf(activityId))){ + iterator.remove(); + break; + } + } + } + // 功能未开启的表 + if ("2".equals(open[0])){ + if (!GlobalDataManaager.getInstance().checkIsOpen(Integer.parseInt(open[1]))){ + iterator.remove(); + break; + } + } + } } - } - for(AbstractWelfareBag bag : rechargeInfo.getReceiveMap().values()){ - if(bag.isOpen()){ - list.add(bag.getModId()); + // 单独活动信息处理 + SGlobalActivity activity = activityMap.get(activityId); + if (activity == null){ + continue; } - } - for(AbstractWelfareBag bag : rechargeInfo.getPushMap().values()){ - if(bag.isOpen()){ - list.add(bag.getModId()); + AbstractActivity activityType = ActivityTypeEnum.getActicityType(activityId); + if (activityType == null || list.isEmpty()){ + continue; } + list.removeAll(activityType.getCloseGoods(user)); } return list; } @@ -750,7 +798,7 @@ public class BuyGoodsNewLogic { } } -private static int judgePushCondition(User user,SPackPushConfig con){ + private static int judgePushCondition(User user,SPackPushConfig con){ int[] scope = con.getScopeId(); if(scope[0] == 1){//主线关卡 int mainLevel = user.getMainLevelManager().getFightId(); diff --git a/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java b/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java index 866ed0ca1..cb611b054 100644 --- a/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java +++ b/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java @@ -59,7 +59,7 @@ public class SRechargeCommodityNewConfig implements BaseConfig { private String rechargeId9; private String rechargeId10; - + private int isShowInWeb; private int[] forbid; @@ -205,4 +205,7 @@ public class SRechargeCommodityNewConfig implements BaseConfig { this.condition = condition; } + public int getIsShowInWeb() { + return isShowInWeb; + } }