diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRewardConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRewardConfig.java index f6d1e3ad0..ed03bf2c4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRewardConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRewardConfig.java @@ -2,53 +2,62 @@ package com.ljsd.jieling.config; import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.Table; +import com.ljsd.jieling.logic.activity.ActivityType; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -@Table(name ="ActivityRewardConfig") +@Table(name = "ActivityRewardConfig") public class SActivityRewardConfig implements BaseConfig { - private int id; + private int id; - private int activityId; + private int activityId; - private int[][] values; + private int[][] values; - private int[][] reward; + private int[][] reward; - private static Map sActivityRewardConfigMap; + private static Map sActivityRewardConfigMap; - private static Map> sActivityRewardConfigListMap; + private static Map> sActivityRewardConfigListMap; - - @Override + private static Map rechargeDaySum = new HashMap<>();//连续充值天数 + + @Override public void init() throws Exception { Map config = STableManager.getConfig(SActivityRewardConfig.class); Map> sActivityRewardConfigListMapTmp = new HashMap<>(); - for(SActivityRewardConfig sActivityRewardConfig : config.values()){ + for (SActivityRewardConfig sActivityRewardConfig : config.values()) { int activityId = sActivityRewardConfig.getActivityId(); - if(!sActivityRewardConfigListMapTmp.containsKey(activityId)){ - sActivityRewardConfigListMapTmp.put(activityId,new ArrayList<>()); + if (!sActivityRewardConfigListMapTmp.containsKey(activityId)) { + sActivityRewardConfigListMapTmp.put(activityId, new ArrayList<>()); } sActivityRewardConfigListMapTmp.get(activityId).add(sActivityRewardConfig); } sActivityRewardConfigMap = config; sActivityRewardConfigListMap = sActivityRewardConfigListMapTmp; - } + sActivityRewardConfigListMap.get(ActivityType.RECHARGE_SUM_DAY).forEach(sActivityRewardConfig -> + rechargeDaySum.put(sActivityRewardConfig.getValues()[0][1], sActivityRewardConfig.getId())); + + } public static SActivityRewardConfig getsActivityRewardConfigByMissionId(int missionId) { return sActivityRewardConfigMap.get(missionId); } - public static List getsActivityRewardConfigByActivityId(int activityId) { + public static List getsActivityRewardConfigByActivityId(int activityId) { return sActivityRewardConfigListMap.get(activityId); } + public static Map getRechargeDaySum() { + return rechargeDaySum; + } + public int getId() { return id; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java index 449b3ca4c..67817e90b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java @@ -100,8 +100,6 @@ public class SGameSetting implements BaseConfig { private Map itemRecoveryMap; - private int showRank; - private static SGameSetting gameSetting; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index f6565eac5..c1348b198 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -41,17 +41,17 @@ public class ActivityLogic { public void flushEveryDay(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception { //跟新签到天数 - if (user.getPlayerInfoManager().getSignTotay() == 1){ + if (user.getPlayerInfoManager().getSignTotay() == 1) { user.getPlayerInfoManager().setSign(user.getPlayerInfoManager().getSign() + 1); user.getPlayerInfoManager().setSignTotay(0); } //更新每日充值 - ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_RECHARGE); + ActivityLogic.getInstance().resumeActivity(user, ActivityType.DAILY_RECHARGE); //更新首日充值 user.getPlayerInfoManager().getRechargeInfo().setDailyFirst(0); //更新累计充值天数 - ActivityLogic.getInstance().resumeActivity(user,ActivityType.RECHARGE_SUM_DAY); - + ActivityLogic.getInstance().resumeActivity(user, ActivityType.RECHARGE_SUM_DAY); + user.getPlayerInfoManager().setRechargedaily(0); updateActivityMissionProgress(user, ActivityType.SevenLogin, 1); upFivePlayerActivity(user, ActivityType.SevenLogin, fBuilder); } @@ -78,9 +78,11 @@ public class ActivityLogic { if (now < startTime) { continue; } - if (endTime != 0 && now > endTime && openActivityIds.contains(sGlobalActivity.getId())) { - openActivityIds.remove(sGlobalActivity.getId()); - ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd(); + if (endTime != 0 && now > endTime) { + if (openActivityIds.contains(sGlobalActivity.getId())) { + openActivityIds.remove(sGlobalActivity.getId()); + ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd(); + } continue; } openActivityIds.add(sGlobalActivity.getId()); @@ -294,10 +296,10 @@ public class ActivityLogic { } - public void upFivePlayerActivity(User user,int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder){ - if(fBuilder == null){ - return; - } + public void upFivePlayerActivity(User user, int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) { + if (fBuilder == null) { + return; + } ActivityManager activityManager = user.getActivityManager(); Map activityMissionMap = activityManager.getActivityMissionMap(); for (Map.Entry item : activityMissionMap.entrySet()) { 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 28ddcbdf3..026c96287 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 @@ -9,10 +9,8 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.MessageUtil; -import java.util.Comparator; import java.util.Map; import java.util.TreeMap; -import java.util.TreeSet; class RechargeSumDayActivity extends AbstractActivity { @@ -23,12 +21,26 @@ class RechargeSumDayActivity extends AbstractActivity { @Override public void onResume(User user) throws Exception { ActivityManager activityManager = user.getActivityManager(); - activityManager.getActivityMissionMap().get(id).setValue(0); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + activityMission.setValue(0); + int missionId = SActivityRewardConfig.getRechargeDaySum().get(activityMission.getValue() + 1); + if (user.getPlayerInfoManager().getRechargedaily() > SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId).getValues()[0][0]) { + activityMission.setValue(activityMission.getValue() + 1); + } } @Override void updateProgress(ActivityMission activityMission, int count) { - activityMission.setValue(activityMission.getValue() + count); + + int missionId = SActivityRewardConfig.getRechargeDaySum().get(activityMission.getValue() + 1); + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getProgrss() == 1) { + return; + } + if (count > activityProgressInfo.getProgrss()) { + activityProgressInfo.setProgrss(1); + } + } @Override @@ -42,24 +54,11 @@ class RechargeSumDayActivity extends AbstractActivity { boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); User user = UserManager.getUser(session.getUid()); - int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue(); + int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue()+1; if (value < values[0][1]) { MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality"); return false; } - - TreeMap sortMap = new TreeMap<>(); - SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).forEach(sActivityRewardConfig1 -> - sortMap.put(sActivityRewardConfig1.getId(), sActivityRewardConfig1) - ); - - Map.Entry entry = sortMap.lowerEntry(sActivityRewardConfig.getId()); - if (null != entry) { - ActivityProgressInfo progressInfo = user.getActivityManager().getActivityMissionMap().get(id).getActivityProgressInfoMap().get(entry.getKey()); - if (progressInfo != null && activityProgressInfo.getState() != ActivityType.HAD_TAKED) { - return false; - } - } return true; } 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 c491a377c..0c7afbe80 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 @@ -11,6 +11,7 @@ import com.ljsd.jieling.db.mongo.MongoKey; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.util.MathUtils; +import org.springframework.data.annotation.Transient; import java.util.HashMap; import java.util.HashSet; @@ -77,6 +78,9 @@ public class PlayerManager extends MongoBase { private int signTotay;//今天是否签到 + @Transient + private int rechargedaily; + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); } @@ -427,4 +431,16 @@ public class PlayerManager extends MongoBase { public int getSignTotay() { return signTotay; } + + public int getRechargedaily() { + return rechargedaily; + } + + public void setRechargedaily(int rechargedaily) { + this.rechargedaily = rechargedaily; + } + + public void addRechargedaily(int rechargedaily) { + this.rechargedaily += rechargedaily; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index 8946cc08f..026681773 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -172,12 +172,13 @@ public class BuyGoodsLogic { if(sRechargeCommodityConfig.getAccumulativeRecharge() == 1){ int saveAmt = rechargeInfo.getSaveAmt(); rechargeInfo.setSaveAmt(price+saveAmt); + user.getPlayerInfoManager().addRechargedaily(price); //TODO 用事件分发 ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt()); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_NUM,rechargeInfo.getSaveAmt()); - ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY,price); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY, user.getPlayerInfoManager().getRechargedaily()); } buyGoodsTimes.put(goodsId,buyCount);