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 1e8e5ceaa..7824643d6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -514,7 +514,7 @@ public class GlobalDataManaager implements IManager { BuyGoodsNewLogic.refreshWelfareState(user); user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0); // 惊喜礼盒,超值基金,零点逻辑(可以同用一个状态) - Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.fund_zero_init)); + Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.zero_init)); // 心愿格子信息刷新 HeroLogic.getInstance().resetWishDrawCardInfoMap(user); //玉虚论道每日刷新 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index 78641be6c..5707f8477 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -105,8 +105,6 @@ public interface ActivityType { int CONTINUOUS_GIFT_NEW = 87;//新连续礼包 int ARENA_RANK_EXPERIMENT = 88;//竞技试炼 int DAILY_PREFERENTIAL_GIFT = 89;//每日特惠礼包开启的活动 - int NEW_RECHARGE_SUM_DAY_6 = 90;//新积天豪礼6元充值活动 - int NEW_RECHARGE_SUM_DAY_30 = 92;//新积天豪礼30元充值活动 int NEW_DAILY_RECHARGE = 93;//新每日充值 int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽宝阁活动 int SPECIAL_MONSTER_GIFT_ACTIVITY = 101;//灵兽礼包 @@ -147,4 +145,8 @@ public interface ActivityType { int RECHARGE_FIRST = 108;//直充首冲活动 int FREE_RECHARGE = 109;//免费充值,仙充 int OPEN_SERVER_COMPETE_RANK = 110;//开服冲榜活动 + + int NEW_RECHARGE_SUM_DAY_6 = 90;//超值返利6 + int NEW_RECHARGE_SUM_DAY_12 = 111;//超值返利12 + int NEW_RECHARGE_SUM_DAY_30 = 92;//超值返利30 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index f48c0f80e..025e9655a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -96,8 +96,11 @@ public enum ActivityTypeEnum { TRANSFORMATION_DRAW_CARD(ActivityType.TRANSFORMATION_DRAW_CARD,DefaultEmptyActivity::new),//方寸寻宝 CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::new),//新连续礼包 ARENA_RANK_EXPERIMENT(ActivityType.ARENA_RANK_EXPERIMENT,ArenaRankActivity::new),//竞技试炼 - NEW_RECHARGE_SUM_DAY_6(ActivityType.NEW_RECHARGE_SUM_DAY_6,NewRechargeSumDayActivity::new),//新积天豪礼 - NEW_RECHARGE_SUM_DAY_30(ActivityType.NEW_RECHARGE_SUM_DAY_30,NewRechargeSumDayActivity::new),//新积天豪礼 + + NEW_RECHARGE_SUM_DAY_6(ActivityType.NEW_RECHARGE_SUM_DAY_6,NewRechargeSumDayActivity::new),//超值返利6 + NEW_RECHARGE_SUM_DAY_12(ActivityType.NEW_RECHARGE_SUM_DAY_12,NewRechargeSumDayActivity::new),//超值返利12 + NEW_RECHARGE_SUM_DAY_30(ActivityType.NEW_RECHARGE_SUM_DAY_30,NewRechargeSumDayActivity::new),//超值返利30 + DAILY_PREFERENTIAL_GIFT(ActivityType.DAILY_PREFERENTIAL_GIFT,DailyPreferentialGiftActivity::new), //每日特惠中60元七天特惠活动 SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::new),//招募秘宝 NEW_PLAYER_SHOP(ActivityType.NEW_PLAYER_SHOP, NewPlayerShopActivity::new), diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GiveEndlessDrawActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GiveEndlessDrawActivity.java index ecdff1c5e..e6dc685cd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GiveEndlessDrawActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GiveEndlessDrawActivity.java @@ -147,7 +147,7 @@ public class GiveEndlessDrawActivity extends AbstractActivity { ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId); int state = getState(user, rewardConfig, progressInfo); if (state != 1){ - throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"领取条件不满足,活动id ==> 挡位id:"+id+"==>"+missionId); + throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"领取失败,activityId->missionId->state, "+id+"->"+missionId+"->"+state); } // reward CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewRechargeSumDayActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewRechargeSumDayActivity.java index 498afdd7f..30c1342c4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewRechargeSumDayActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewRechargeSumDayActivity.java @@ -1,77 +1,137 @@ package com.ljsd.jieling.logic.activity; -import com.ljsd.jieling.jbean.ActivityManager; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; -import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.event.IEvent; import com.ljsd.jieling.logic.activity.event.Poster; -import com.ljsd.jieling.logic.activity.event.RechargeRewardEvent; +import com.ljsd.jieling.logic.activity.event.SuperBoxEvent; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.network.session.ISession; import config.SActivityRewardConfig; +import rpc.protocols.CommonProto; -import java.util.HashSet; -import java.util.Map; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; import java.util.Set; +import java.util.stream.Collectors; +/** + * 超值返利 + */ class NewRechargeSumDayActivity extends AbstractActivity { public NewRechargeSumDayActivity(int id) { super(id); - Poster.getPoster().listenEvent(this, RechargeRewardEvent.class); + Poster.getPoster().listenEvent(this, SuperBoxEvent.class); + } + + @Override + public void initActivity(User user) throws Exception { + ActivityMission mission = new ActivityMission(); + // 初始化阶段奖励 + ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>()); + user.getActivityManager().getActivityMissionMap().put(id, mission); + LOGGER.info("超值返利初始化..."+id); } @Override public void onEvent(IEvent event) throws Exception { - super.onEvent(event); - if (!(event instanceof RechargeRewardEvent)) { + if (!(event instanceof SuperBoxEvent)) { return; } - RechargeRewardEvent rechargeRewardEvent = (RechargeRewardEvent) event; - int rechargeCount=rechargeRewardEvent.getRechargeCount(); - User user = UserManager.getUser(rechargeRewardEvent.getUid()); - ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); - for (Map.Entry item : activityMission.getActivityMissionMap().entrySet()) { - ActivityProgressInfo activityProgressInfo = item.getValue(); - int missionId=item.getKey(); - SActivityRewardConfig missionConfig=SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); - if (missionConfig.getSort()-1==activityMission.getV()&&activityProgressInfo.getState()==ActivityType.WILL_TAKE){ - int dayRechargeCount= activityProgressInfo.getProgrss()+rechargeCount; - activityProgressInfo.setProgrss(dayRechargeCount); - } - activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo); - + SuperBoxEvent superBox = (SuperBoxEvent) event; + User user = UserManager.getUser(superBox.getUserId()); + int goodId = superBox.getGiftId(); + // 不同状态礼包信息 + if (goodId == SuperBoxEvent.zero_init){ + zeroUpdate(user); + }else { + goodUpdate(user, goodId); + } + // 状态推送 + sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null); + } + + /** + * 跨天更新数据 + * @param user + */ + private void zeroUpdate(User user){ + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + mission.setV(0); + } + + /** + * 购买礼包更新数据 + * @param user + * @param goodId + */ + private void goodUpdate(User user, int goodId){ + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + // 表示已购买今天的礼包 + if (mission.getV() == 1){ + return; + } + List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + // 奖励按天数排序 + List list = rewardConfigs.stream().sorted(Comparator.comparing(SActivityRewardConfig::getSort)).collect(Collectors.toList()); + for (SActivityRewardConfig config : list) { + // null礼包表示没有买的礼包 + ActivityProgressInfo info = mission.getActivityMissionMap().get(config.getId()); + if (info == null){ + // 礼包id能对上,赋值入库 + if (goodId == config.getValues()[0][0]){ + info = new ActivityProgressInfo(); + info.setState(2); + mission.getActivityMissionMap().put(config.getId(),info); + // 更新已购买标记 + mission.setV(1); + } + break; + } } - //更新进度 - ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - sendActivityProgress(sessionByUid, activityMission, null); } @Override - public void onResume(User user)throws Exception { - ActivityManager activityManager = user.getActivityManager(); - ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); - int buyNum=0; - for (Map.Entry progressInfoEntry : activityMission.getActivityMissionMap().entrySet()) { - SActivityRewardConfig rewardConfig= SActivityRewardConfig.getsActivityRewardConfigByMissionId(progressInfoEntry.getKey()); - if (progressInfoEntry.getValue().getProgrss()>=rewardConfig.getValues()[0][0]||progressInfoEntry.getValue().getState()==ActivityType.HAD_TAKED){ - buyNum++; - }else{ - progressInfoEntry.getValue().setProgrss(0); - } + public List getAllMissInfo(User user, ActivityMission activityMission, Set filter) { + if (activityMission == null){ + return new ArrayList<>(); } - if (buyNum > activityMission.getV()) { - activityMission.setV(activityMission.getV() + 1); + // 策划表的配置 + List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + // 返回对象 + List missionInfos = new ArrayList<>(rewardConfigs.size()); + // 做标记用 + ArrayList mark = new ArrayList<>(); + for (SActivityRewardConfig config : rewardConfigs) { + // 参数初始化 + int missionId = config.getId(); + ActivityProgressInfo info = activityMission.getActivityMissionMap().get(missionId); + int state = getState(info, activityMission.getV(), mark); + // 封装proto并返回 + CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder() + .setMissionId(missionId) + .setProgress(0) + .setState(state) + .build(); + missionInfos.add(build); } - if (activityMission.getV() >= SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).size()) { - //补发未领取的奖励 - ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - takeAllReward(sessionByUid); - ActivityLogic.getInstance().initMissionInfo(activityMission,id); - } - ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - sendActivityProgress(sessionByUid, activityMission, null); + return missionInfos; } + + private int getState(ActivityProgressInfo info, int status, ArrayList mark){ + if (info != null && info.getState() == 2){ + return 2; + } + if (status == 1){ + return 0; + } + if (mark.size() == 0){ + mark.add(1); + return 1; + } + return 0; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java index b340f5ff8..6550db404 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java @@ -75,7 +75,7 @@ public class SuperFundNewActivity extends AbstractActivity { * @throws Exception */ private void zeroRefresh(User user, int typeId) throws Exception { - if (typeId != SuperBoxEvent.fund_zero_init){ + if (typeId != SuperBoxEvent.zero_init){ return; } ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RechargeRewardEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RechargeRewardEvent.java index 0dc5dd452..f98d8b429 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RechargeRewardEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RechargeRewardEvent.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.logic.activity.event; +@Deprecated public class RechargeRewardEvent implements IEvent { private int uid; private int rechargeCount;//充值金额 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SuperBoxEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SuperBoxEvent.java index 53f02d54f..30c9078d9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SuperBoxEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SuperBoxEvent.java @@ -13,19 +13,15 @@ public class SuperBoxEvent implements IEvent { */ public static int default_id = -1; /** - * 超值基金, 零点刷新初始化 + * 零点刷新初始化 */ - public static int fund_zero_init = -2; - /** - * 超值基金, 老玩家兼容 - */ - public static int fund_old_user = -3; + public static int zero_init = -2; private int userId; /** * 礼包id */ - private int giftId = default_id; + private int giftId; /** * 数量 */ 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 405225f78..8606bf06a 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 @@ -240,8 +240,6 @@ public class BuyGoodsNewLogic { Poster.getPoster().dispatchEvent(new AutoRechargeBackEvent(user.getId(),goodsId,orderId)); } - Poster.getPoster().dispatchEvent(new RechargeRewardEvent(user.getId(),(int)price)); - int[] forbid = config.getForbid(); if(forbid!=null&&forbid.length>0){ //每日礼包一键购买之后,把所有单个的每日礼包的购买次数加一 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 2c25153d1..c249de52e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -1505,12 +1505,9 @@ public class ItemUtil { switch (sItem.getItemType()){ case GlobalItemType.RMB_CARD: case GlobalItemType.DAY_RMB_CARD: - info.addRmb(num); - break; case GlobalItemType.XIAN_RECHARGE_CARD: case GlobalItemType.DAY_XIAN_RECHARGE_CARD: info.addRmb(num); - Poster.getPoster().dispatchEvent(new RechargeRewardEvent(user.getId(),num)); break; default: result = false;