From 26fed766850b12c84f583804f05daf41674aedfe Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 20 Feb 2023 14:40:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E6=9C=8D=E5=86=B2=E6=A6=9C=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OpenServerCompeteRankActivity.java | 58 +++++++++++-------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OpenServerCompeteRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OpenServerCompeteRankActivity.java index 064582bd1..d7c64ade9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OpenServerCompeteRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OpenServerCompeteRankActivity.java @@ -9,7 +9,9 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; +import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.thread.ThreadManager; +import com.ljsd.jieling.util.AyyncWorker; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.ToolsUtil; import config.*; @@ -165,32 +167,38 @@ public class OpenServerCompeteRankActivity extends AbstractActivity { LOGGER.error("开服冲榜id为{}的玩家,{}活动,{}排行奖励发送失败,原因玩家不存在", uid, id, rankType); continue; } - ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); - if (mission == null){ - LOGGER.error("开服冲榜id为{}的玩家,{}活动,{}排行奖励发送失败,原因活动不存在", uid, id, rankType); - continue; - } - ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(rankType); - if (progressInfo != null && progressInfo.getState() == 2){ - LOGGER.error("开服冲榜id为{}的玩家,{}活动,{}排行奖励发送失败,奖励已发送,{}-{}", uid, id, rankType, progressInfo.getProgrss(),progressInfo.getState()); - continue; - } - //sendmail - String title = getMailTitle(rankType); - String content = getMailContent(rankType, score.longValue(), rank); - int[][] reward = getMailReward(rankType, rank); - if (reward == null){ - LOGGER.error("冲榜发奖,玩家排名不发奖励,uid:{},rankid:{}, score:{}",user.getId(),rank,score.longValue()); - continue; - } - String mailReward = ItemUtil.getMailReward(reward); - MailLogic.getInstance().sendMail(uid, title, content, mailReward, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); - //update activity - ActivityProgressInfo info = new ActivityProgressInfo(); - info.setState(2); - info.setProgrss(TimeUtils.nowInt()); - mission.getActivityMissionMap().put(rankType, info); LOGGER.info("冲榜发奖中:{}-{}-{}",id,rankType,uid); + + final int rankId = rank; + long value = score.longValue(); + AyyncWorker ayyncWorker = new AyyncWorker(user, true, user1 -> { + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if (mission == null){ + LOGGER.error("开服冲榜id为{}的玩家,{}活动,{}排行奖励发送失败,原因活动不存在", uid, id, rankType); + return; + } + ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(rankType); + if (progressInfo != null && progressInfo.getState() == 2){ + LOGGER.error("开服冲榜id为{}的玩家,{}活动,{}排行奖励发送失败,奖励已发送,{}-{}", uid, id, rankType, progressInfo.getProgrss(),progressInfo.getState()); + return; + } + //sendmail + String title = getMailTitle(rankType); + String content = getMailContent(rankType, value, rankId); + int[][] reward = getMailReward(rankType, rankId); + if (reward == null){ + LOGGER.error("冲榜发奖,玩家排名不发奖励,uid:{},rankid:{}, score:{}",user.getId(),rankId, value); + return; + } + String mailReward = ItemUtil.getMailReward(reward); + MailLogic.getInstance().sendMail(uid, title, content, mailReward, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + //update activity + ActivityProgressInfo info = new ActivityProgressInfo(); + info.setState(2); + info.setProgrss(TimeUtils.nowInt()); + mission.getActivityMissionMap().put(rankType, info); + }); + ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); rank++; } catch (Exception e) { LOGGER.error("冲榜id为{}的玩家,{}活动,{}排行奖励发送失败e={}", uid, id, rankType, e);