diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index 4c172feba..b9fdb74cc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -97,75 +97,90 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { * 重写此类 记得重写onActivityEndOnMySelf 否者活动结束走默认配置表发邮件奖 */ @Override - public boolean takeReward(ISession session, int missid) throws Exception { + public boolean takeReward(ISession session, int missionId) throws Exception { + + User user = UserManager.getUser(session.getUid()); + //check cfg + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); + return false; + } + //check state + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); + return false; + } + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); + return false; + } + //take rewards check + if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { + return false; + } + //up miss + int[][] reward = sActivityRewardConfig.getReward(); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); + checkAndSetProgress(activityMission, activityProgressInfo, sActivityRewardConfig, missionId); + //send + sendActivityProgress(session, activityMission, Collections.singleton(missionId)); + KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + return true; + } + + void takeAllReward(ISession session) throws Exception { User user = UserManager.getUser(session.getUid()); List misssIds = new LinkedList<>(); - if (missid == -1) { - List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); - if (null == cfgs) { - return false; - } - for (SActivityRewardConfig sActivityRewardConfig : cfgs) { - misssIds.add(sActivityRewardConfig.getId()); - } - } else { - misssIds.add(missid); + List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + if (null == cfgs) { + return; + } + for (SActivityRewardConfig sActivityRewardConfig : cfgs) { + misssIds.add(sActivityRewardConfig.getId()); } - List itemArrs = new LinkedList<>(); for (Integer missionId : misssIds) { //check cfg SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); - return false; + continue; } //check state ActivityManager activityManager = user.getActivityManager(); ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { - if (missid != -1) - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); - return false; + continue; } ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); - return false; + continue; } //take rewards check if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { - return false; + continue; } //up miss int[][] reward = sActivityRewardConfig.getReward(); - if (missid == -1) { - itemArrs.add(reward); - continue; - } - CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); - checkAndSetProgress(activityMission, activityProgressInfo, sActivityRewardConfig, missionId); - //send - sendActivityProgress(session, activityMission, Collections.singleton(missionId)); - KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); - PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); - MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); - return true; + itemArrs.add(reward); } SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); if (null == sGlobalActivity) - return false; + return; String title = SErrorCodeEerverConfig.getI18NMessage("receive_activity_title", new Object[]{sGlobalActivity.getSesc()}); String content = SErrorCodeEerverConfig.getI18NMessage("receive_activity_txt", new Object[]{sGlobalActivity.getSesc()}); - String mailReward = ItemUtil.getMailReward(itemArrs); int nowTime = (int) (TimeUtils.now() / 1000); MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); - return true; } void checkAndSetProgress(ActivityMission activityMission, ActivityProgressInfo activityProgressInfo, SActivityRewardConfig sActivityRewardConfig, int missionId) { @@ -218,14 +233,6 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { @Override public void onActivityEndOnMySelf(User user) throws Exception { -// List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); -// if (null == cfgs) { -// return; -// } -// for (SActivityRewardConfig sActivityRewardConfig : cfgs) { -// ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); -// takeReward(sessionByUid, sActivityRewardConfig.getId()); -// } } /** @@ -234,7 +241,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { @Override public void onActivityEndDealReward(User user) throws Exception { ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - takeReward(sessionByUid, -1); + takeAllReward(sessionByUid); } public List getAllMissInfo(ActivityMission activityMission) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java index 5104949d8..0487b6f4c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java @@ -2,7 +2,6 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SActivityRewardConfig; import com.ljsd.jieling.logic.OnlineUserManager; -import com.ljsd.jieling.logic.dao.ActivityManager; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; import com.ljsd.jieling.logic.dao.root.User; @@ -21,7 +20,7 @@ class DailyRechargeActivity extends AbstractActivity { public void onResume(User user) throws Exception { //每日充值 补发前日未领取的奖 ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - takeReward(sessionByUid, -1); + takeAllReward(sessionByUid); super.onResume(user); }