【恢复100档首充奖励】2

back_recharge
duhui 2022-05-16 17:54:52 +08:00
parent 726c98f3ab
commit 928c266645
1 changed files with 113 additions and 35 deletions

View File

@ -1,14 +1,22 @@
package com.ljsd.jieling.logic.activity; package com.ljsd.jieling.logic.activity;
import com.ljsd.GameApplication; import com.ljsd.GameApplication;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo; import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig; import config.SActivityRewardConfig;
import config.SLuxuryFund;
import rpc.protocols.CommonProto; import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils; import util.TimeUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,45 +31,115 @@ class RechargeTotalActivity extends AbstractActivity {
} }
@Override @Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { public void initActivity(User user) throws Exception {
int[][] values = sActivityRewardConfig.getValues(); ActivityMission mission = new ActivityMission();
int missionProgress = activityProgressInfo.getProgrss(); // 初始化阶段奖励
long now = TimeUtils.now(); ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
user.getActivityManager().getActivityMissionMap().put(id, mission);
LOGGER.info("累计充值初始化..."+id);
}
/**
*
* @param session
* @param missionId
* @return
* @throws Exception
*/
@Override
public boolean takeReward(ISession session, int missionId) throws Exception {
User user = UserManager.getUser(session.getUid()); User user = UserManager.getUser(session.getUid());
NewRechargeInfo rechargeInfo = user.getPlayerInfoManager().getNewRechargeInfo(); // activity check
int days = TimeUtils.differentDaysByHour(rechargeInfo.getFirstTime(), now,0) + 1; ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
if (missionProgress <= 0 || days < values[0][1]) { if (mission == null){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"活动信息不存在:"+id);
}
// 获取活动标签信息
SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
ActivityProgressInfo info = mission.getActivityMissionMap().get(missionId);
// 条件判断
int state = getState(user, config, info);
if (state != 2){
return false; return false;
} }
// 改库
info = new ActivityProgressInfo();
checkAndSetProgress(mission,info,missionId);
// reward
CommonProto.Drop.Builder drop = ItemUtil.drop(user, config.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
// 打点上报
reportTakeActivityReward(user,config.getReward(),missionId);
return true; return true;
} }
// @Override /**
// public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user, ActivityMission activityMission, Set<Integer> filter) { *
// Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap(); * 0
// List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(activityProgressInfoMap.size()); * 1
// long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime()); * 2
// for (Map.Entry<Integer, ActivityProgressInfo> missionProgress : activityProgressInfoMap.entrySet()) { * @param user
// if (filter != null && !filter.contains(missionProgress.getKey())) { * @param config
// continue; * @param info
// } * @return
// Integer missionId = missionProgress.getKey(); */
// SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); int getState(User user, SActivityRewardConfig config, ActivityProgressInfo info){
// if (sActivityRewardConfig == null) { // 表里为空
// continue; if (config == null){
// } return 0;
// if(id == ActivityType.RechargeTotal){ }
// // 2021-12-22 09:00:00 之后开的服首充不显示累充满100元任务 // 数据库已保存且状态为已领取
// if (openTime > 1640134800000L) { if (info != null && info.getState() == 1){
// int value = sActivityRewardConfig.getValues()[0][0]; return 1;
// if (value == 100) { }
// continue; long now = TimeUtils.now();
// } NewRechargeInfo rechargeInfo = user.getPlayerInfoManager().getNewRechargeInfo();
// } int days = TimeUtils.differentDaysByHour(rechargeInfo.getFirstTime(), now,0) + 1;
// } // 判断金额和天数
// ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); if (rechargeInfo.getRr() >= config.getValues()[0][0] && days >= config.getValues()[0][1]){
// missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); return 2;
// } }
// return missionInfos; return 0;
// } }
@Override
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user, ActivityMission activityMission, Set<Integer> filter) {
if (activityMission == null){
return new ArrayList<>();
}
// 库里存储的
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityMissionMap();
// 表里的
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(rewardConfigs.size());
int progress = (int) (user.getPlayerInfoManager().getNewRechargeInfo().getRr() * 1000);
for (SActivityRewardConfig config : rewardConfigs) {
ActivityProgressInfo info = progressInfoMap.get(config.getId());
int state = getState(user, config, info);
state = state == 1?1:0;
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
.setMissionId(config.getId())
.setProgress(progress)
.setState(state)
.build();
missionInfos.add(build);
}
return missionInfos;
}
@Override
public void update(User user, int count) {
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if(null == activityMission){
return;
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
} }