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 21ff70b43..4c513db61 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 @@ -107,6 +107,7 @@ public interface ActivityType { 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;//灵兽礼包 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 25da612f0..989c005a0 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 @@ -98,7 +98,8 @@ public enum ActivityTypeEnum { NEW_RECHARGE_SUM_DAY_30(ActivityType.NEW_RECHARGE_SUM_DAY_30,NewRechargeSumDayActivity::new),//新积天豪礼 DAILY_PREFERENTIAL_GIFT(ActivityType.DAILY_PREFERENTIAL_GIFT,DailyPreferentialGiftActivity::new), SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::new),//招募秘宝 - NEW_PLAYER_SHOP(ActivityType.NEW_PLAYER_SHOP, NewPlayerShopActivity::new) + NEW_PLAYER_SHOP(ActivityType.NEW_PLAYER_SHOP, NewPlayerShopActivity::new), + NEW_DAILY_RECHARGE(ActivityType.NEW_DAILY_RECHARGE, RechargeRewardActivity::new) ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeRewardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeRewardActivity.java new file mode 100644 index 000000000..32b351d84 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeRewardActivity.java @@ -0,0 +1,85 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +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.*; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SActivityRewardConfig; +import config.SGlobalActivity; +import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +//充值奖励活动 +public class RechargeRewardActivity extends AbstractActivity { + + public RechargeRewardActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, RechargeRewardEvent.class); + } + + + @Override + public void onEvent(IEvent event) throws Exception{ + if (!(event instanceof RechargeRewardEvent)) + return; + User user = UserManager.getUser(((RechargeRewardEvent) event).getUid()); + if (null == user) { + return; + } + List rewardConfigList = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).stream().filter(n->n.getValues()[0][0]==((RechargeRewardEvent) event).getRechargeCount()).collect(Collectors.toList()); + if(rewardConfigList == null || rewardConfigList.size() == 0){ + return ; + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if( null == activityMission){ + return; + } + int rewrdId = rewardConfigList.get(0).getId(); + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + if(!activityProgressInfoMap.containsKey(rewrdId)){ + return; + } + if(activityProgressInfoMap.get(rewrdId).getState() == 0){ + activityProgressInfoMap.get(rewrdId).setProgrss(((RechargeRewardEvent) event).getRechargeCount()); + activityProgressInfoMap.get(rewrdId).setState(2); + } + //更新进度 + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + sendActivityProgress(sessionByUid, activityMission, null); + } + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + int missionProgress = activityProgressInfo.getProgrss(); + return missionProgress == values[0][0] && activityProgressInfo.getState() == 2; + } + @Override + public boolean checkActivityMissionFinishAndTake(int uid,int activityId,ActivityMission activityMission) { + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + if (activityProgressInfoMap.isEmpty()) { + return false; + } + for (Map.Entry item : activityProgressInfoMap.entrySet()) { + ActivityProgressInfo activityProgressInfo = item.getValue(); + int missionStatus = activityProgressInfo.getState(); + if (missionStatus == ActivityType.WILL_TAKE || missionStatus == 2) { + return false; + } + } + return true; + } +} 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 new file mode 100644 index 000000000..0dc5dd452 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RechargeRewardEvent.java @@ -0,0 +1,27 @@ +package com.ljsd.jieling.logic.activity.event; + +public class RechargeRewardEvent implements IEvent { + private int uid; + private int rechargeCount;//充值金额 + + public RechargeRewardEvent(int uid, int rechargeCount) { + this.uid = uid; + this.rechargeCount = rechargeCount; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } + + public int getRechargeCount() { + return rechargeCount; + } + + public void setRechargeCount(int rechargeCount) { + this.rechargeCount = rechargeCount; + } +} 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 c5c6c6cb7..97a07d681 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 @@ -187,6 +187,8 @@ public class BuyGoodsNewLogic { LOGGER.error("购买失败!bag是否为空:{}",bag == null); return resultRes; } + Poster.getPoster().dispatchEvent(new RechargeRewardEvent(user.getId(),(int)price)); + //成功购买 // if (goodsId == GlobalsDef.DAILY_GOODS_FAST_ID) { // //每日礼包一键购买之后,把所有单个的每日礼包的购买次数加一