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