diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java index 04e932b24..a2392d61d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java @@ -12,6 +12,7 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; import config.SGlobalActivity; import config.SSurpriseBox; +import manager.STableManager; import util.TimeUtils; import java.util.*; @@ -48,16 +49,6 @@ public class SuperBoxActivity extends AbstractActivity { List list = boxMap.values().stream().mapToInt(SSurpriseBox::getId).boxed().collect(Collectors.toList()); // 初始化阶段奖励 ActivityLogic.getInstance().initOtherMission(mission, list); - - // 第一位的礼包初始化参数 - for (Map.Entry entry : mission.getActivityMissionMap().entrySet()) { - SSurpriseBox box = boxMap.get(entry.getKey()); - if (box != null && box.getLimitPackFId() == 0){ - entry.getValue().setProgrss(1); - break; - } - } - user.getActivityManager().getActivityMissionMap().put(id, mission); // 修改状态 updateState(user); @@ -99,15 +90,10 @@ public class SuperBoxActivity extends AbstractActivity { // 当前礼包状态处理 ActivityProgressInfo current = missionMap.get(box.getId()); if (current != null){ - current.setState(8); + current.setState(ActivityType.HAD_TAKED); + current.setProgrss(8); missionMap.put(box.getId(),current); } - // 下位礼包数据处理 - ActivityProgressInfo next = missionMap.get(box.getLimitPackBId()); - if (next != null){ - next.setProgrss(1); - missionMap.put(box.getId(),next); - } break; } } @@ -137,9 +123,9 @@ public class SuperBoxActivity extends AbstractActivity { for (Map.Entry entry : missionMap.entrySet()) { int k = entry.getKey(); ActivityProgressInfo v = entry.getValue(); - int state = v.getState(); + int progrss = v.getProgrss(); // 是否已购买 - if (state == 8){ + if (progrss == 8){ // 已购买 continue; } @@ -150,28 +136,28 @@ public class SuperBoxActivity extends AbstractActivity { // 已解锁, 可买天数 if (days >= box.getBuyDay()){ // 可买, 是否购买前置礼包 - if (v.getProgrss() == 1){ + if (checkBuyAgo(user,box.getId())){ // 已购买前置. 是否需要特权, 是否激活特权 - state = checkRule(user,box.getRule())?1:4; + progrss = checkRule(user,box.getRule())?1:4; }else { // 未购买前置 - state = 3; + progrss = 3; } }else { // 不可买 - state = 2; + progrss = 2; } }else { // 未解锁, 是否可见 if (days >= box.getVisibleDay()){ // 可见, 是否可预览 - state = days >= box.getViewDay()?6:7; + progrss = days >= box.getViewDay()?6:7; }else { // 不可见 - state = 5; + progrss = 5; } } - v.setState(state); + v.setProgrss(progrss); } // 客户端推送 @@ -179,6 +165,29 @@ public class SuperBoxActivity extends AbstractActivity { sendActivityProgress(session, mission, null); } + /** + * 验证前置礼包购买状态 + * @param user + * @param boxId + * @return + */ + private boolean checkBuyAgo(User user, int boxId){ + boolean result = true; + // 获取消息 + Map missionMap = user.getActivityManager().getActivityMissionMap().get(id).getActivityMissionMap(); + SSurpriseBox box = STableManager.getConfig(SSurpriseBox.class).get(boxId); + // 非空 + if (!missionMap.isEmpty() && box != null){ + // 前置礼包状态验证 + ActivityProgressInfo info = missionMap.get(box.getLimitPackFId()); + // info为null代表没有前置条件, state==2代表已买过 + if (info != null && info.getState() == ActivityType.WILL_TAKE){ + result = false; + } + } + return result; + } + /** * 检测特殊权限 * 0走默认 true