diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java index 1dfd0a432..582d0a7f1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java @@ -12,8 +12,11 @@ import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; +import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.thread.ThreadManager; +import com.ljsd.jieling.util.AyncWorkerRunnable; +import com.ljsd.jieling.util.AyyncWorker; import com.ljsd.jieling.util.ItemUtil; import util.TimeUtils; import config.*; @@ -46,6 +49,7 @@ class ExpectRankActivity extends AbstractActivity { /** * 根据配置解析数值进度完成度 */ + @Override boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); User user = UserManager.getUser(session.getUid()); @@ -70,8 +74,9 @@ class ExpectRankActivity extends AbstractActivity { return; } List sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id); - if(null==sActivityRankingReward) + if(null==sActivityRankingReward) { return; + } int maxRank = 0; int maxRewardId = 0; Map rank2miss = new HashMap<>(); @@ -127,14 +132,20 @@ class ExpectRankActivity extends AbstractActivity { continue; } } - //checkAndUpdate value - SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId); - //sendmail - String title = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()},new int[]{1},"#"); - String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(),rank++},new int[]{1,0},"#"); - String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); - MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + final int ranking = rank; + // 分发道用户线程处理 + AyyncWorker ayyncWorker = new AyyncWorker(user, true, user1 -> { + //checkAndUpdate value + SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId); + //sendmail + String title = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()},new int[]{1},"#"); + String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(),ranking},new int[]{1,0},"#"); + String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); + MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + }); + ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); + rank++; }catch (Exception e) { LOGGER.error("id为{}的玩家,{}活动排行奖励没有发成功",uid,id); System.out.println(e);