游戏王活动 新增自定义发送活动奖励
This commit is contained in:
parent
67a9010adf
commit
3d43eb2ba3
@ -217,12 +217,15 @@ public class WeeklyRewardsSentManager {
|
|||||||
cycleType,
|
cycleType,
|
||||||
lastWeekDate,
|
lastWeekDate,
|
||||||
null,
|
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);
|
log.info("上周{}活动奖励发放完成, 活动ID: {}", activityConfigDTO.getRemark(), activityId);
|
||||||
|
|
||||||
@ -235,8 +238,8 @@ public class WeeklyRewardsSentManager {
|
|||||||
* 发放活动奖励
|
* 发放活动奖励
|
||||||
*/
|
*/
|
||||||
private void sendRankingActivityRewards(SysOriginPlatformEnum sysOriginPlatformEnum, Long activityId,
|
private void sendRankingActivityRewards(SysOriginPlatformEnum sysOriginPlatformEnum, Long activityId,
|
||||||
List<RankingActivityRecord> topUsers,
|
List<RankingActivityRecord> topUsers,
|
||||||
List<ActivityConfigRewardsDTO> rewardsDTOList) {
|
List<ActivityConfigRewardsDTO> rewardsDTOList) {
|
||||||
if (CollectionUtils.isEmpty(topUsers) || CollectionUtils.isEmpty(rewardsDTOList)) {
|
if (CollectionUtils.isEmpty(topUsers) || CollectionUtils.isEmpty(rewardsDTOList)) {
|
||||||
log.warn("活动奖励为空, 跳过奖励发放");
|
log.warn("活动奖励为空, 跳过奖励发放");
|
||||||
return;
|
return;
|
||||||
@ -249,7 +252,7 @@ public class WeeklyRewardsSentManager {
|
|||||||
// 判断金额是否达到100K,如果没有则跳过不发奖励
|
// 判断金额是否达到100K,如果没有则跳过不发奖励
|
||||||
if (user.getQuantity() == null || user.getQuantity() < 100000) {
|
if (user.getQuantity() == null || user.getQuantity() < 100000) {
|
||||||
log.warn("活动奖励 - 排名: {}, 用户ID: {}, 金额: {} 未达到100K要求,跳过发奖励",
|
log.warn("活动奖励 - 排名: {}, 用户ID: {}, 金额: {} 未达到100K要求,跳过发奖励",
|
||||||
i + 1, user.getUserId(), user.getQuantity());
|
i + 1, user.getUserId(), user.getQuantity());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,13 +262,83 @@ public class WeeklyRewardsSentManager {
|
|||||||
sendRewardToUser(sysOriginPlatformEnum, activityId, user.getUserId(), reward.getResourceGroupId(), SendPropsOrigin.RANKING_ACTIVITY);
|
sendRewardToUser(sysOriginPlatformEnum, activityId, user.getUserId(), reward.getResourceGroupId(), SendPropsOrigin.RANKING_ACTIVITY);
|
||||||
|
|
||||||
log.info("活动奖励发放成功 - 排名: {}, 用户ID: {}, 奖励组ID: {}",
|
log.info("活动奖励发放成功 - 排名: {}, 用户ID: {}, 奖励组ID: {}",
|
||||||
i + 1, user.getUserId(), reward.getResourceGroupId());
|
i + 1, user.getUserId(), reward.getResourceGroupId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("活动奖励发放失败 - 排名: {}, 错误信息: {}", i + 1, e.getMessage(), e);
|
log.error("活动奖励发放失败 - 排名: {}, 错误信息: {}", i + 1, e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义发放活动奖励
|
||||||
|
*/
|
||||||
|
private void sendCustomRankingActivityRewards(SysOriginPlatformEnum sysOriginPlatformEnum, Long activityId,
|
||||||
|
List<RankingActivityRecord> topUsers,
|
||||||
|
List<ActivityConfigRewardsDTO> 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 "未知";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取活动配置信息
|
* 获取活动配置信息
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user