From b94adebdc7c0899af5a335bc3e9dffe43d75d92c Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 24 Jan 2022 18:03:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E5=80=BC=E5=9F=BA=E9=87=91=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E4=BF=AE=E6=94=B9,=E7=BA=BF=E4=B8=8A=E5=85=BC?= =?UTF-8?q?=E5=AE=B92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/SuperFundNewActivity.java | 108 +++++++++--------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java index 003c8766e..5815006da 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperFundNewActivity.java @@ -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 getAllMissInfo(User user,ActivityMission activityMission, Set filter) { + if (activityMission == null){ + return new ArrayList<>(); + } + // 库里存储的活动档位信息 + Map progressInfoMap = activityMission.getActivityMissionMap(); + // 返回对象 + List missionInfos = new ArrayList<>(progressInfoMap.size()); + // 策划表的配置 + Map fundMap = SLuxuryFund.typeMap.getOrDefault(id, new HashMap<>(0)); + for (Map.Entry 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 funds = new ArrayList<>(SLuxuryFund.typeMap.getOrDefault(id,new HashMap<>()).values()); - Map 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 infoMap = mission.getActivityMissionMap(); - if (infoMap == null || infoMap.isEmpty()){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE,"暂无可领取奖励:"+id); - } List rewards = new ArrayList<>(); Map fundMap = SLuxuryFund.typeMap.get(id); - for (Map.Entry 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()); } } // 已领取全部奖励