diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ArenaRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ArenaRankActivity.java index 866be6a2d..cf85cf85c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ArenaRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ArenaRankActivity.java @@ -1,9 +1,24 @@ package com.ljsd.jieling.logic.activity; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.arena.ArenaLogic; +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.network.session.ISession; +import com.ljsd.jieling.thread.ThreadManager; +import config.SActivityRankingReward; +import config.SErrorCodeEerverConfig; +import org.springframework.data.redis.core.ZSetOperations; +import util.StringUtil; +import util.TimeUtils; + +import java.util.List; +import java.util.Set; /** * @author hj @@ -38,6 +53,39 @@ public class ArenaRankActivity extends AbstractActivity { @Override public void onActivityEnd() throws Exception { - LOGGER.info("竞技试炼 onActivityEnd...{}", id); + LOGGER.info("竞技试炼发奖励 onActivityEnd...{}", id); + ThreadManager.getScheduledExecutor().execute(this::sendReward); + } + + private void sendReward(){ + Thread.currentThread().setName("sendReward-Activity-"+id); + List sActivityRankingRewards = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id); + if (sActivityRankingRewards == null || sActivityRankingRewards.isEmpty()) { + LOGGER.info("竞技试炼未配置奖励 onActivityEnd...{}", id); + return; + } + int curSeason = ArenaLogic.getInstance().getCurSeason(); + Set> arenaRankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK, Integer.toString(curSeason), 0, -1); + int rank = 1; + int nowTime = (int) (TimeUtils.now() / 1000); + String title = SErrorCodeEerverConfig.getI18NMessage("arena_activity_mail_title"); + for (ZSetOperations.TypedTuple item : arenaRankInfo) { + String value = item.getValue(); + int uid = Integer.parseInt(value); + User user = UserManager.getUserNotCache(uid); + String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("arena_activity_mail_txt", new Object[]{rank}, new int[0], "#"); + int[][] rewardByRank = null; + for (SActivityRankingReward sActivityRankingReward : sActivityRankingRewards) { + if (sActivityRankingReward.getMinRank() >= rank && sActivityRankingReward.getMaxRank() <= rank) { + rewardByRank = sActivityRankingReward.getRankingReward(); + break; + } + } + if (rewardByRank == null) { + break; + } + MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardByRank), nowTime, Global.MAIL_EFFECTIVE_TIME); + rank++; + } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ThreeWorldActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ThreeWorldActivity.java index fa8adebd3..4e5c6c75e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ThreeWorldActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ThreeWorldActivity.java @@ -69,7 +69,7 @@ class ThreeWorldActivity extends AbstractActivity { @Override public void onActivityEnd() throws Exception { - super.onActivityEnd(); + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ThreeWorldRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ThreeWorldRankActivity.java index 321c05799..4a4dcc5ca 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ThreeWorldRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ThreeWorldRankActivity.java @@ -36,6 +36,5 @@ public class ThreeWorldRankActivity extends ExpectRankActivity { RedisUtil.getInstence().set(RedisKey.getKey(RedisKey.THREE_WORLD_END_REWARD,String.valueOf(id),false),String.valueOf(1),expireTime/1000);//已经结算的标识 RedisUtil.getInstence().zsetAddAall(RedisKey.getKey(RedisKey.EXPERT_RANK,String.valueOf(id),false), RedisUtil.getInstence().getAllZsetRange(RedisKey.getKey(RedisKey.MONSTER_ATTACK_RANK, "", false))); - super.onActivityEnd(); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index a967f37ea..002be0484 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -564,7 +564,7 @@ public class ItemUtil { putCountMap(itemId,(int) amount, itemObj.getSpecialMonsterMap()); break; default: - LOGGER.error("新增类型请通知后端"); + LOGGER.error("新增类型请通知后端 itemType={}", itemType); break; } }