超值基金活动修改,线上兼容2
parent
a29f8a08c2
commit
b94adebdc7
|
@ -17,14 +17,12 @@ import com.ljsd.jieling.util.ItemUtil;
|
|||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.SGlobalActivity;
|
||||
import config.SLuxuryFund;
|
||||
import config.SSurpriseBox;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
|
@ -38,6 +36,8 @@ public class SuperFundNewActivity extends AbstractActivity {
|
|||
Poster.getPoster().listenEvent(this, SuperBoxEvent.class);
|
||||
}
|
||||
|
||||
private static int finish = 2;
|
||||
|
||||
@Override
|
||||
public void initActivity(User user) throws Exception {
|
||||
ActivityMission mission = new ActivityMission();
|
||||
|
@ -63,8 +63,6 @@ public class SuperFundNewActivity extends AbstractActivity {
|
|||
User user = UserManager.getUser(event1.getUserId());
|
||||
// 活动数据处理
|
||||
updateValue(user,event1.getGiftId());
|
||||
// 状态礼包刷新
|
||||
updateState(user);
|
||||
// 零点刷新
|
||||
zeroRefresh(user,event1.getGiftId());
|
||||
// 状态推送
|
||||
|
@ -86,7 +84,7 @@ public class SuperFundNewActivity extends AbstractActivity {
|
|||
return;
|
||||
}
|
||||
long count = SLuxuryFund.typeMap.get(id).values().stream().count();
|
||||
long count1 = mission.getActivityMissionMap().values().stream().filter(v -> v.getState() == ActivityType.HAD_TAKED).count();
|
||||
long count1 = mission.getActivityMissionMap().values().stream().filter(v -> v.getState() == finish).count();
|
||||
if (count == count1){
|
||||
initActivity(user);
|
||||
}
|
||||
|
@ -104,7 +102,7 @@ public class SuperFundNewActivity extends AbstractActivity {
|
|||
}
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
// 礼包是否已购买
|
||||
if (mission == null || mission.getV() == 2){
|
||||
if (mission == null || mission.getV() == finish){
|
||||
return;
|
||||
}
|
||||
// 旧信息兼容
|
||||
|
@ -112,41 +110,55 @@ public class SuperFundNewActivity extends AbstractActivity {
|
|||
// 已购买基金
|
||||
if (bagInfo != null && bagInfo.isBought()){
|
||||
// 初始化基金
|
||||
mission.setV(2);
|
||||
mission.setV(finish);
|
||||
mission.setCreatTime(TimeUtils.now());
|
||||
}
|
||||
}
|
||||
|
||||
@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<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(progressInfoMap.size());
|
||||
// 策划表的配置
|
||||
Map<Integer, SLuxuryFund> fundMap = SLuxuryFund.typeMap.getOrDefault(id, new HashMap<>(0));
|
||||
for (Map.Entry<Integer, SLuxuryFund> entry : fundMap.entrySet()) {
|
||||
// 参数初始化
|
||||
int missionId = entry.getKey();
|
||||
int state = getState(activityMission,progressInfoMap.get(missionId),entry.getValue());
|
||||
// 封装proto并返回
|
||||
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
|
||||
.setMissionId(missionId)
|
||||
.setProgress(0)
|
||||
.setState(state)
|
||||
.build();
|
||||
missionInfos.add(build);
|
||||
}
|
||||
return missionInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改详细奖励状态
|
||||
* @param user
|
||||
* @throws ErrorCodeException
|
||||
* 获取状态
|
||||
* @param activityMission
|
||||
* @param progressInfo
|
||||
* @param fund
|
||||
* @return
|
||||
*/
|
||||
private void updateState(User user){
|
||||
// 活动信息
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if(mission == null){
|
||||
LOGGER.error("活动数据为空:{}",id);
|
||||
return;
|
||||
}
|
||||
if (mission.getV() != 2){
|
||||
LOGGER.error("活动礼包未购买,活动id:{}",id);
|
||||
return;
|
||||
}
|
||||
// 间隔天数,购买当天算第一天,所以需要+1
|
||||
int days = TimeUtils.differentDays(mission.getCreatTime(), TimeUtils.getTodayZero())+1;
|
||||
// 活动数据
|
||||
ArrayList<SLuxuryFund> funds = new ArrayList<>(SLuxuryFund.typeMap.getOrDefault(id,new HashMap<>()).values());
|
||||
Map<Integer, ActivityProgressInfo> infoMap = mission.getActivityMissionMap();
|
||||
for (SLuxuryFund fund : funds) {
|
||||
ActivityProgressInfo progressInfo = infoMap.get(fund.getId());
|
||||
// 已领取的不再处理
|
||||
if (progressInfo == null && days >= fund.getDay()){
|
||||
// 满足条件的新增
|
||||
ActivityProgressInfo info = new ActivityProgressInfo();
|
||||
mission.getActivityMissionMap().put(fund.getId(),info);
|
||||
}
|
||||
private int getState(ActivityMission activityMission, ActivityProgressInfo progressInfo, SLuxuryFund fund){
|
||||
int state;
|
||||
int days = TimeUtils.differentDays(activityMission.getCreatTime(), TimeUtils.getTodayZero())+1;
|
||||
if (activityMission.getV() != finish){
|
||||
state = 0;
|
||||
} else if (progressInfo != null && progressInfo.getState() == finish){
|
||||
state = 2;
|
||||
}else {
|
||||
state = days >= fund.getDay()?1:0;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -165,25 +177,17 @@ public class SuperFundNewActivity extends AbstractActivity {
|
|||
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"活动信息不存在:"+id);
|
||||
}
|
||||
Map<Integer, ActivityProgressInfo> infoMap = mission.getActivityMissionMap();
|
||||
if (infoMap == null || infoMap.isEmpty()){
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE,"暂无可领取奖励:"+id);
|
||||
}
|
||||
List<int[][]> rewards = new ArrayList<>();
|
||||
Map<Integer, SLuxuryFund> fundMap = SLuxuryFund.typeMap.get(id);
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> entry : infoMap.entrySet()) {
|
||||
Integer key = entry.getKey();
|
||||
ActivityProgressInfo progressInfo = entry.getValue();
|
||||
// 未领取的奖励全部领取
|
||||
if (progressInfo.getState() == ActivityType.WILL_TAKE){
|
||||
SLuxuryFund fund = fundMap.get(key);
|
||||
if (fund == null){
|
||||
LOGGER.error("超值基金,缺少奖励天数配置:活动id:{}, missionID:{}",id,key);
|
||||
continue;
|
||||
}
|
||||
rewards.add(fund.getReward());
|
||||
progressInfo.setState(2);
|
||||
for (SLuxuryFund fund : fundMap.values()) {
|
||||
ActivityProgressInfo progressInfo = infoMap.get(fund);
|
||||
int state = getState(mission, progressInfo, fund);
|
||||
if (state == 1){
|
||||
ActivityProgressInfo info = new ActivityProgressInfo();
|
||||
info.setState(finish);
|
||||
// 更新数据库
|
||||
mission.getActivityMissionMap().put(key,progressInfo);
|
||||
mission.getActivityMissionMap().put(fund.getId(),info);
|
||||
rewards.add(fund.getReward());
|
||||
}
|
||||
}
|
||||
// 已领取全部奖励
|
||||
|
|
Loading…
Reference in New Issue