diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java index e451c4acc..500523450 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java @@ -1,15 +1,49 @@ package com.ljsd.jieling.logic.activity; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; import config.SActivityRewardConfig; import util.TimeUtils; +import java.util.*; + class OnlineRewardActivity extends AbstractActivity { public OnlineRewardActivity(int id) { super(id); } + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + if(missionId!=-1){ + return super.takeReward(session, missionId); + } + User user = UserManager.getUser(session.getUid()); + List reward = new ArrayList<>(); + getAllMissRewards(user,session,reward); + Map itemMap = new HashMap<>(); + reward.forEach(n-> Arrays.stream(n).forEach(m->itemMap.put(m[0],itemMap.getOrDefault(m[0],0)+m[1]))); + + int[][] rewardArray = ItemUtil.mapToArray(itemMap); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardArray, BIReason.TAKE_ACTIVITY_REWARD); + + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + + reportTakeActivityReward(user,rewardArray,missionId); + + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + + return true; + + } + + @Override boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { @@ -20,7 +54,7 @@ class OnlineRewardActivity extends AbstractActivity { long loginTime = session.getUserLoginTime(); int limitTime = values[0][0]; long remainTime = now - loginTime - limitTime * TimeUtils.ONE_MINUTE + missionProgress * TimeUtils.ONE_SECOND; - if (now - loginTime - limitTime * TimeUtils.ONE_MINUTE + missionProgress * TimeUtils.ONE_SECOND < 0) { + if (remainTime < 0) { LOGGER.error("the uid={} remain time is={}ms,the require time is={}ms", session.getUid(), remainTime, limitTime * TimeUtils.ONE_MINUTE); return false; }