游戏王发送奖励 处理奖励差异
This commit is contained in:
parent
7e8fef8450
commit
3afd652431
@ -90,22 +90,54 @@ public class RankingRewardGrantCmdExe {
|
|||||||
Integer currentRank = currentUser.getRank();
|
Integer currentRank = currentUser.getRank();
|
||||||
|
|
||||||
RankingRewardSnapshot.RankingUserSnapshot lastUser = lastUserMap.get(userId);
|
RankingRewardSnapshot.RankingUserSnapshot lastUser = lastUserMap.get(userId);
|
||||||
|
List<RankingRewardSnapshot.RewardItem> currentRewards = getRewardsForRank(currentRank, activityConfig);
|
||||||
if (lastUser == null) {
|
if (lastUser == null) {
|
||||||
log.info("用户新获得排名,发放奖励, userId: {}, rank: {}", userId, currentRank);
|
log.info("用户新获得排名,发放奖励, userId: {}, rank: {}", userId, currentRank);
|
||||||
List<RankingRewardSnapshot.RewardItem> rewards = getRewardsForRank(currentRank, activityConfig);
|
grantRewards(userId, currentRewards);
|
||||||
grantRewards(userId, rewards);
|
|
||||||
|
|
||||||
} else if (!Objects.equals(lastUser.getRank(), currentRank)) {
|
} else if (!Objects.equals(lastUser.getRank(), currentRank)) {
|
||||||
log.info("用户排名变化, userId: {}, 旧排名: {}, 新排名: {}",
|
log.info("用户排名变化, userId: {}, 旧排名: {}, 新排名: {}",
|
||||||
userId, lastUser.getRank(), currentRank);
|
userId, lastUser.getRank(), currentRank);
|
||||||
revokeRewards(userId, lastUser.getRewards());
|
processRewardDiff(userId, lastUser.getRewards(), currentRewards);
|
||||||
List<RankingRewardSnapshot.RewardItem> rewards = getRewardsForRank(currentRank, activityConfig);
|
|
||||||
grantRewards(userId, rewards);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理奖励差异
|
||||||
|
*/
|
||||||
|
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