连续充值

back_recharge
zhangshanxue 2019-08-06 17:31:59 +08:00
parent 797a484250
commit d5352f79a7
6 changed files with 71 additions and 46 deletions

View File

@ -2,53 +2,62 @@ package com.ljsd.jieling.config;
import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.Table; import com.ljsd.jieling.logic.Table;
import com.ljsd.jieling.logic.activity.ActivityType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Table(name ="ActivityRewardConfig") @Table(name = "ActivityRewardConfig")
public class SActivityRewardConfig implements BaseConfig { 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<Integer, SActivityRewardConfig> sActivityRewardConfigMap; private static Map<Integer, SActivityRewardConfig> sActivityRewardConfigMap;
private static Map<Integer, List<SActivityRewardConfig>> sActivityRewardConfigListMap; private static Map<Integer, List<SActivityRewardConfig>> sActivityRewardConfigListMap;
private static Map<Integer, Integer> rechargeDaySum = new HashMap<>();//连续充值天数
@Override @Override
public void init() throws Exception { public void init() throws Exception {
Map<Integer, SActivityRewardConfig> config = STableManager.getConfig(SActivityRewardConfig.class); Map<Integer, SActivityRewardConfig> config = STableManager.getConfig(SActivityRewardConfig.class);
Map<Integer, List<SActivityRewardConfig>> sActivityRewardConfigListMapTmp = new HashMap<>(); Map<Integer, List<SActivityRewardConfig>> sActivityRewardConfigListMapTmp = new HashMap<>();
for(SActivityRewardConfig sActivityRewardConfig : config.values()){ for (SActivityRewardConfig sActivityRewardConfig : config.values()) {
int activityId = sActivityRewardConfig.getActivityId(); int activityId = sActivityRewardConfig.getActivityId();
if(!sActivityRewardConfigListMapTmp.containsKey(activityId)){ if (!sActivityRewardConfigListMapTmp.containsKey(activityId)) {
sActivityRewardConfigListMapTmp.put(activityId,new ArrayList<>()); sActivityRewardConfigListMapTmp.put(activityId, new ArrayList<>());
} }
sActivityRewardConfigListMapTmp.get(activityId).add(sActivityRewardConfig); sActivityRewardConfigListMapTmp.get(activityId).add(sActivityRewardConfig);
} }
sActivityRewardConfigMap = config; sActivityRewardConfigMap = config;
sActivityRewardConfigListMap = sActivityRewardConfigListMapTmp; sActivityRewardConfigListMap = sActivityRewardConfigListMapTmp;
}
sActivityRewardConfigListMap.get(ActivityType.RECHARGE_SUM_DAY).forEach(sActivityRewardConfig ->
rechargeDaySum.put(sActivityRewardConfig.getValues()[0][1], sActivityRewardConfig.getId()));
}
public static SActivityRewardConfig getsActivityRewardConfigByMissionId(int missionId) { public static SActivityRewardConfig getsActivityRewardConfigByMissionId(int missionId) {
return sActivityRewardConfigMap.get(missionId); return sActivityRewardConfigMap.get(missionId);
} }
public static List<SActivityRewardConfig> getsActivityRewardConfigByActivityId(int activityId) { public static List<SActivityRewardConfig> getsActivityRewardConfigByActivityId(int activityId) {
return sActivityRewardConfigListMap.get(activityId); return sActivityRewardConfigListMap.get(activityId);
} }
public static Map<Integer, Integer> getRechargeDaySum() {
return rechargeDaySum;
}
public int getId() { public int getId() {
return id; return id;
} }

View File

@ -100,8 +100,6 @@ public class SGameSetting implements BaseConfig {
private Map<Integer,int[]> itemRecoveryMap; private Map<Integer,int[]> itemRecoveryMap;
private int showRank;
private static SGameSetting gameSetting; private static SGameSetting gameSetting;

View File

@ -41,17 +41,17 @@ public class ActivityLogic {
public void flushEveryDay(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception { 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().setSign(user.getPlayerInfoManager().getSign() + 1);
user.getPlayerInfoManager().setSignTotay(0); user.getPlayerInfoManager().setSignTotay(0);
} }
//更新每日充值 //更新每日充值
ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_RECHARGE); ActivityLogic.getInstance().resumeActivity(user, ActivityType.DAILY_RECHARGE);
//更新首日充值 //更新首日充值
user.getPlayerInfoManager().getRechargeInfo().setDailyFirst(0); 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); updateActivityMissionProgress(user, ActivityType.SevenLogin, 1);
upFivePlayerActivity(user, ActivityType.SevenLogin, fBuilder); upFivePlayerActivity(user, ActivityType.SevenLogin, fBuilder);
} }
@ -78,9 +78,11 @@ public class ActivityLogic {
if (now < startTime) { if (now < startTime) {
continue; continue;
} }
if (endTime != 0 && now > endTime && openActivityIds.contains(sGlobalActivity.getId())) { if (endTime != 0 && now > endTime) {
openActivityIds.remove(sGlobalActivity.getId()); if (openActivityIds.contains(sGlobalActivity.getId())) {
ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd(); openActivityIds.remove(sGlobalActivity.getId());
ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd();
}
continue; continue;
} }
openActivityIds.add(sGlobalActivity.getId()); openActivityIds.add(sGlobalActivity.getId());
@ -294,10 +296,10 @@ public class ActivityLogic {
} }
public void upFivePlayerActivity(User user,int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder){ public void upFivePlayerActivity(User user, int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) {
if(fBuilder == null){ if (fBuilder == null) {
return; return;
} }
ActivityManager activityManager = user.getActivityManager(); ActivityManager activityManager = user.getActivityManager();
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap(); Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
for (Map.Entry<Integer, ActivityMission> item : activityMissionMap.entrySet()) { for (Map.Entry<Integer, ActivityMission> item : activityMissionMap.entrySet()) {

View File

@ -9,10 +9,8 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import java.util.Comparator;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.TreeSet;
class RechargeSumDayActivity extends AbstractActivity { class RechargeSumDayActivity extends AbstractActivity {
@ -23,12 +21,26 @@ class RechargeSumDayActivity extends AbstractActivity {
@Override @Override
public void onResume(User user) throws Exception { public void onResume(User user) throws Exception {
ActivityManager activityManager = user.getActivityManager(); 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 @Override
void updateProgress(ActivityMission activityMission, int count) { 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 @Override
@ -42,24 +54,11 @@ class RechargeSumDayActivity extends AbstractActivity {
boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues(); int[][] values = sActivityRewardConfig.getValues();
User user = UserManager.getUser(session.getUid()); 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]) { if (value < values[0][1]) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality"); MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality");
return false; return false;
} }
TreeMap<Integer, SActivityRewardConfig> sortMap = new TreeMap<>();
SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).forEach(sActivityRewardConfig1 ->
sortMap.put(sActivityRewardConfig1.getId(), sActivityRewardConfig1)
);
Map.Entry<Integer, SActivityRewardConfig> 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; return true;
} }

View File

@ -11,6 +11,7 @@ import com.ljsd.jieling.db.mongo.MongoKey;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.util.MathUtils; import com.ljsd.jieling.util.MathUtils;
import org.springframework.data.annotation.Transient;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@ -77,6 +78,9 @@ public class PlayerManager extends MongoBase {
private int signTotay;//今天是否签到 private int signTotay;//今天是否签到
@Transient
private int rechargedaily;
public PlayerManager(){ public PlayerManager(){
this.setRootCollection(User._COLLECTION_NAME); this.setRootCollection(User._COLLECTION_NAME);
} }
@ -427,4 +431,16 @@ public class PlayerManager extends MongoBase {
public int getSignTotay() { public int getSignTotay() {
return signTotay; return signTotay;
} }
public int getRechargedaily() {
return rechargedaily;
}
public void setRechargedaily(int rechargedaily) {
this.rechargedaily = rechargedaily;
}
public void addRechargedaily(int rechargedaily) {
this.rechargedaily += rechargedaily;
}
} }

View File

@ -172,12 +172,13 @@ public class BuyGoodsLogic {
if(sRechargeCommodityConfig.getAccumulativeRecharge() == 1){ if(sRechargeCommodityConfig.getAccumulativeRecharge() == 1){
int saveAmt = rechargeInfo.getSaveAmt(); int saveAmt = rechargeInfo.getSaveAmt();
rechargeInfo.setSaveAmt(price+saveAmt); rechargeInfo.setSaveAmt(price+saveAmt);
user.getPlayerInfoManager().addRechargedaily(price);
//TODO 用事件分发 //TODO 用事件分发
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt()); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt());
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_NUM,rechargeInfo.getSaveAmt()); 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); buyGoodsTimes.put(goodsId,buyCount);