游戏王发送奖励 处理奖励差异
This commit is contained in:
parent
7e8fef8450
commit
3afd652431
@ -90,22 +90,54 @@ public class RankingRewardGrantCmdExe {
|
||||
Integer currentRank = currentUser.getRank();
|
||||
|
||||
RankingRewardSnapshot.RankingUserSnapshot lastUser = lastUserMap.get(userId);
|
||||
|
||||
List<RankingRewardSnapshot.RewardItem> currentRewards = getRewardsForRank(currentRank, activityConfig);
|
||||
if (lastUser == null) {
|
||||
log.info("用户新获得排名,发放奖励, userId: {}, rank: {}", userId, currentRank);
|
||||
List<RankingRewardSnapshot.RewardItem> rewards = getRewardsForRank(currentRank, activityConfig);
|
||||
grantRewards(userId, rewards);
|
||||
|
||||
grantRewards(userId, currentRewards);
|
||||
} else if (!Objects.equals(lastUser.getRank(), currentRank)) {
|
||||
log.info("用户排名变化, userId: {}, 旧排名: {}, 新排名: {}",
|
||||
userId, lastUser.getRank(), currentRank);
|
||||
revokeRewards(userId, lastUser.getRewards());
|
||||
List<RankingRewardSnapshot.RewardItem> rewards = getRewardsForRank(currentRank, activityConfig);
|
||||
grantRewards(userId, rewards);
|
||||
processRewardDiff(userId, lastUser.getRewards(), currentRewards);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理奖励差异
|
||||
*/
|
||||
private void processRewardDiff(Long userId,
|
||||
List<RankingRewardSnapshot.RewardItem> oldRewards,
|
||||
List<RankingRewardSnapshot.RewardItem> newRewards) {
|
||||
|
||||
Set<String> oldRewardKeys = oldRewards.stream()
|
||||
.map(r -> r.getType() + ":" + r.getContent())
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Set<String> newRewardKeys = newRewards.stream()
|
||||
.map(r -> r.getType() + ":" + r.getContent())
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<RankingRewardSnapshot.RewardItem> toRevoke = oldRewards.stream()
|
||||
.filter(r -> !newRewardKeys.contains(r.getType() + ":" + r.getContent()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<RankingRewardSnapshot.RewardItem> toGrant = newRewards.stream()
|
||||
.filter(r -> !oldRewardKeys.contains(r.getType() + ":" + r.getContent()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtils.isNotEmpty(toGrant)) {
|
||||
grantRewards(userId, toGrant);
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(toRevoke)) {
|
||||
revokeRewards(userId, toRevoke);
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(toGrant) && CollectionUtils.isEmpty(toRevoke)) {
|
||||
log.info("奖励未发生变化, userId: {}", userId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发放奖励.
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user