From 3d43eb2ba3a54a64d0ad72d4ffb20be060d51225 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Mon, 22 Dec 2025 06:16:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E7=8E=8B=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E8=87=AA=E5=AE=9A=E4=B9=89=E5=8F=91?= =?UTF-8?q?=E9=80=81=E6=B4=BB=E5=8A=A8=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../award/WeeklyRewardsSentManager.java | 87 +++++++++++++++++-- 1 file changed, 80 insertions(+), 7 deletions(-) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/activity/award/WeeklyRewardsSentManager.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/activity/award/WeeklyRewardsSentManager.java index a484d986..3a950850 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/activity/award/WeeklyRewardsSentManager.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/activity/award/WeeklyRewardsSentManager.java @@ -217,12 +217,15 @@ public class WeeklyRewardsSentManager { cycleType, lastWeekDate, null, - 3 + isKingGames(activityConfigDTO) ? 10 : 3 ); // 发放活动奖励 - sendRankingActivityRewards(SysOriginPlatformEnum.LIKEI, activityId, records, kingRewardList); - + if (isKingGames(activityConfigDTO)) { + sendCustomRankingActivityRewards(SysOriginPlatformEnum.LIKEI, activityId, records, kingRewardList); + } else { + sendRankingActivityRewards(SysOriginPlatformEnum.LIKEI, activityId, records, kingRewardList); + } log.info("上周{}活动奖励发放完成, 活动ID: {}", activityConfigDTO.getRemark(), activityId); @@ -235,8 +238,8 @@ public class WeeklyRewardsSentManager { * 发放活动奖励 */ private void sendRankingActivityRewards(SysOriginPlatformEnum sysOriginPlatformEnum, Long activityId, - List topUsers, - List rewardsDTOList) { + List topUsers, + List rewardsDTOList) { if (CollectionUtils.isEmpty(topUsers) || CollectionUtils.isEmpty(rewardsDTOList)) { log.warn("活动奖励为空, 跳过奖励发放"); return; @@ -249,7 +252,7 @@ public class WeeklyRewardsSentManager { // 判断金额是否达到100K,如果没有则跳过不发奖励 if (user.getQuantity() == null || user.getQuantity() < 100000) { log.warn("活动奖励 - 排名: {}, 用户ID: {}, 金额: {} 未达到100K要求,跳过发奖励", - i + 1, user.getUserId(), user.getQuantity()); + i + 1, user.getUserId(), user.getQuantity()); continue; } @@ -259,13 +262,83 @@ public class WeeklyRewardsSentManager { sendRewardToUser(sysOriginPlatformEnum, activityId, user.getUserId(), reward.getResourceGroupId(), SendPropsOrigin.RANKING_ACTIVITY); log.info("活动奖励发放成功 - 排名: {}, 用户ID: {}, 奖励组ID: {}", - i + 1, user.getUserId(), reward.getResourceGroupId()); + i + 1, user.getUserId(), reward.getResourceGroupId()); } catch (Exception e) { log.error("活动奖励发放失败 - 排名: {}, 错误信息: {}", i + 1, e.getMessage(), e); } } } + /** + * 自定义发放活动奖励 + */ + private void sendCustomRankingActivityRewards(SysOriginPlatformEnum sysOriginPlatformEnum, Long activityId, + List topUsers, + List rewardsDTOList) { + if (CollectionUtils.isEmpty(topUsers) || CollectionUtils.isEmpty(rewardsDTOList)) { + log.warn("活动奖励为空, 跳过奖励发放"); + return; + } + + // 定义排名区间:第1名、2-4名、5-7名、8-10名 + int[][] rankingRanges = { + {0, 1}, // 第1名 (索引0) + {1, 4}, // 2-4名 (索引1-3) + {4, 7}, // 5-7名 (索引4-6) + {7, 10} // 8-10名 (索引7-9) + }; + + for (int rewardIndex = 0; rewardIndex < Math.min(rewardsDTOList.size(), rankingRanges.length); rewardIndex++) { + ActivityConfigRewardsDTO reward = rewardsDTOList.get(rewardIndex); + int[] range = rankingRanges[rewardIndex]; + int startIndex = range[0]; + int endIndex = Math.min(range[1], topUsers.size()); + + for (int userIndex = startIndex; userIndex < endIndex; userIndex++) { + try { + RankingActivityRecord user = topUsers.get(userIndex); + + // 判断金额是否达到100K,如果没有则跳过不发奖励 + if (user.getQuantity() == null || user.getQuantity() < 100000) { + log.warn("活动奖励 - 排名: {}, 用户ID: {}, 金额: {} 未达到100K要求,跳过发奖励", + userIndex + 1, user.getUserId(), user.getQuantity()); + continue; + } + if (user.getUserId().equals(1997061185894658049L)) { + continue; + } + + // 发送奖励 + sendRewardToUser(sysOriginPlatformEnum, activityId, user.getUserId(), + reward.getResourceGroupId(), SendPropsOrigin.RANKING_ACTIVITY); + + log.info("活动奖励发放成功 - 排名: {}, 用户ID: {}, 奖励组ID: {}, 奖励档位: {}", + userIndex + 1, user.getUserId(), reward.getResourceGroupId(), getRankingRangeDesc(rewardIndex)); + } catch (Exception e) { + log.error("活动奖励发放失败 - 排名: {}, 用户ID: {}, 错误信息: {}", + userIndex + 1, topUsers.get(userIndex).getUserId(), e.getMessage(), e); + } + } + } + } + + private static boolean isKingGames(ActivityConfigDTO activityConfigDTO) { + return RankingActivityType.KING_GAMES.getCode().equals(Integer.parseInt(activityConfigDTO.getActivityType())); + } + + /** + * 获取排名区间描述 + */ + private String getRankingRangeDesc(int rewardIndex) { + switch (rewardIndex) { + case 0: return "第1名"; + case 1: return "第2-4名"; + case 2: return "第5-7名"; + case 3: return "第8-10名"; + default: return "未知"; + } + } + /** * 获取活动配置信息 */