diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 9c356f436..5096718ff 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -458,8 +458,8 @@ public class ActivityLogic implements IEventHandler{ long latelyEndTime = latelyStartTime + (endTime - startTime); ActivityMission mission = activityMissionMap.get(activityId); - // 活动存在,当前时间大于最近的结束时间,表示当期活动结束 - if (mission != null && now > latelyEndTime){ + // 活动存在,(当前时间大于最近的结束时间 或 活动创建时间大于最近得开启时间),表示当期活动结束 + if (mission != null && (now > latelyEndTime || mission.getCreatTime() < latelyStartTime)){ goRewardActivity(user,activityId,builder, isRemove); continue; } 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 4470acd51..9d2d02fc7 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 @@ -206,9 +206,6 @@ public class SuperFundNewActivity extends AbstractActivity { /** * 获取礼包信息 - * @param user - * @return - * @throws Exception */ private ReceiveWelfareBag getBagInfo(User user){ SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WeekCardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WeekCardActivity.java index b5bfbba1f..c3d844fa8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WeekCardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WeekCardActivity.java @@ -11,6 +11,8 @@ import com.ljsd.jieling.logic.activity.event.SuperBoxEvent; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag; +import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PerpetualWelfareBag; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.ToolsUtil; import config.*; @@ -38,6 +40,8 @@ public class WeekCardActivity extends AbstractActivity { ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>()); user.getActivityManager().getActivityMissionMap().put(id, mission); + // 刷新礼包信息 + refreshGood(user); // 初始化礼包信息 user.getPlayerInfoManager().setWeekCard(new HashMap<>()); LOGGER.info("月卡初始化...uid={} activityId={}",user.getId(), id); @@ -67,6 +71,30 @@ public class WeekCardActivity extends AbstractActivity { } } + /** + * 刷新礼包信息 + */ + private void refreshGood(User user){ + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id); + if (activity == null){ + return; + } + int[] canBuyRechargeId = activity.getCanBuyRechargeId(); + if (canBuyRechargeId == null || canBuyRechargeId.length <= 0){ + return; + } + Map receiveMap = user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap(); + for (int goodId : canBuyRechargeId) { + AbstractWelfareBag bag = receiveMap.get(goodId); + if (bag == null){ + LOGGER.error("礼包刷新结束,礼包不存在,活动id:{},礼包id:{}",id, canBuyRechargeId[0]); + continue; + } + PerpetualWelfareBag welfareBag = (PerpetualWelfareBag) bag; + welfareBag.refresh(); + } + } + /** * 封装周卡信息 */ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index 342756ec2..3f2bc959a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -269,7 +269,6 @@ public class UserMissionManager extends MongoBase { } if(!achievementMissionTypMap.getDoingMissionIds().isEmpty() ){ - List sAchievementConfigs = SAchievementConfig.sTaskConfigByTypeMap.get(missionType.getMissionTypeValue()); if(sAchievementConfigs!=null&& !sAchievementConfigs.isEmpty()){ CumulationData.Result result= achievementMap.updateData(missionType, parm); @@ -314,7 +313,7 @@ public class UserMissionManager extends MongoBase { } // 公用任务类型,累计次数形式 CumulationData.Result result = cumulationData.updateData(missionType, parm); - if(result!=null){ + if(result != null){ updateString("cumulationData",cumulationData); // vip任务 vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLogic.java index 4e8c92132..589342ef5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLogic.java @@ -103,13 +103,13 @@ public class MissionLogic { return task; } - public int[] resetJadeDynastyTaskInfo(User user, int type, int activityId, Map> missionTypeEnumListMap){ + public void resetJadeDynastyTaskInfo(User user, int type, int activityId, Map> missionTypeEnumListMap){ UserMissionManager missionManager = user.getUserMissionManager(); JadeDynastyMissionType jadeDynastyMissionType = missionManager.getJadeDynastyMissionType(); //周刷新检测 if (type == 2) { if (jadeDynastyMissionType.getWeekRefresh() != 0 && TimeUtils.now() infos = misionTypeListMap.getOrDefault(GameMisionType.COWFLYSKYMISSION, new ArrayList<>()); + cowFlySkyMissionType.initRefreshCumulationData(user,infos,cumulationData,activityCowId); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/JadeDynastyRefreshEventProcess.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/JadeDynastyRefreshEventProcess.java index 50bb11ae8..7a66188c5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/JadeDynastyRefreshEventProcess.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/JadeDynastyRefreshEventProcess.java @@ -1,6 +1,5 @@ package com.ljsd.jieling.logic.mission.event; -import com.ljsd.jieling.logic.dao.UserMissionManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameMisionType; @@ -13,7 +12,6 @@ import java.util.Map; public class JadeDynastyRefreshEventProcess implements BaseGameEventProcessor { @Override public void onGameEvent(User user, Map> misionTypeListMap, GameEvent event, Object... parm) throws Exception { - UserMissionManager missionManager = user.getUserMissionManager(); //当前轮次破阵诛仙的活动ID int jadeAid = (int) parm[0]; MissionLogic.getInstance().resetJadeDynastyTaskInfo(user,1, jadeAid, misionTypeListMap); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MistyTripRefreshEventProcess.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MistyTripRefreshEventProcess.java index 47b947567..894998659 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MistyTripRefreshEventProcess.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MistyTripRefreshEventProcess.java @@ -20,7 +20,7 @@ public class MistyTripRefreshEventProcess implements BaseGameEventProcessor { UserMissionManager missionManager = user.getUserMissionManager(); MistyTripMissionType mistyTripMissionType = missionManager.getMistyTripMissionType(); //任务开始 - if(mistyTripMissionType.getDoingMissionIds().size() != 0 || mistyTripMissionType.getFinishMissionIds().size() != 0){ + if(!mistyTripMissionType.getDoingMissionIds().isEmpty() || !mistyTripMissionType.getFinishMissionIds().isEmpty()){ return; } Set journeyWithWind = STableManager.getConfig(SJourneyWithWind.class).keySet(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/CowFlySkyMissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/CowFlySkyMissionType.java index 101fa4d3e..53d71633b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/CowFlySkyMissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/CowFlySkyMissionType.java @@ -51,15 +51,9 @@ public class CowFlySkyMissionType extends AbstractMissionType { } } - @Override - public void calCumulationDataResult(User user, CumulationData.Result result, List missionStateChangeInfos, CumulationData cumulationData) throws Exception { - // 进行中得任务 + public void missionRefresh(User user, List flyList, List missionStateChangeInfos, CumulationData cumulationData){ Set doingMissionIds = getDoingMissionIds(); - Map flyMap = SArroGantFly.getTaskTypeMap().get(result.subType.getMissionTypeValue()); - if (flyMap == null || flyMap.isEmpty()){ - return; - } - for (SArroGantFly fly : flyMap.values()) { + for (SArroGantFly fly : flyList) { // 任务子id int id = fly.getId(); // 不在执行中 @@ -84,7 +78,23 @@ public class CowFlySkyMissionType extends AbstractMissionType { // 任务列表更新 doingMissionIds.remove(id); getFinishMissionIds().add(id); - } } + + @Override + public void calCumulationDataResult(User user, CumulationData.Result result, List missionStateChangeInfos, CumulationData cumulationData) throws Exception { + Map flyMap = SArroGantFly.getTaskTypeMap().get(result.subType.getMissionTypeValue()); + if (flyMap == null || flyMap.isEmpty()){ + return; + } + missionRefresh(user, new ArrayList<>(flyMap.values()), missionStateChangeInfos, cumulationData); + } + + public void initRefreshCumulationData(User user, List missionStateChangeInfos, CumulationData cumulationData, int activityId){ + Map flyMap = SArroGantFly.getActivityMap().get(activityId); + if (flyMap == null || flyMap.isEmpty()){ + return; + } + missionRefresh(user, new ArrayList<>(flyMap.values()), missionStateChangeInfos, cumulationData); + } }