心动值 幸运礼物和普通礼物分开处理

This commit is contained in:
tianfeng 2025-10-20 16:03:35 +08:00
parent c46e099f1c
commit d2f36fc53f

View File

@ -906,20 +906,29 @@ public class GiveGiftsListener implements MessageListener {
//接受用户id
Set<Long> acceptsUserIds = event.getAccepts().stream()
.map(GiveAwayGiftRoomAccepts::getAcceptUserId).collect(Collectors.toSet());
// 幸运礼物比例
BigDecimal luckyGiftRatio = gameLuckyGiftCommon.getLuckyGiftTargetRatio(event.getSysOrigin().name());
//总的心动值
BigDecimal amountTotal = event.countSingleGiftGolds().multiply(luckyGiftRatio);
//先获取房间redis值
List<LiveHeartbeatCache> liveHeartbeatCaches = liveHeartbeatCacheService.listLiveHeartbeat(
event.getRoomId());
//组装一下心动值数据 key 用户id
Map<Long, LiveHeartbeatCache> liveHeartbeatCacheMap = getLiveHeartbeatCacheMap(liveHeartbeatCaches);
Map<Long, LiveHeartbeatCache> cacheMap = acceptsUserIds.stream().map(userId -> {
LiveHeartbeatCache liveHeartbeatCache = new LiveHeartbeatCache();
// 礼物比例
BigDecimal giftRatio;
if (event.checkLuckyGift()) {
// 幸运礼物比例
giftRatio = gameLuckyGiftCommon.getLuckyGiftTargetRatio(event.getSysOrigin().name());
} else {
RegionConfig acceptRegion = getUserRegion(userId);
giftRatio = Objects.equals(event.getSendUserId(), userId) ?
getAssistGiftToOwnGoldRatio(acceptRegion.getId()) :
getAssistGiftToOtherGoldRatio(acceptRegion.getId());
}
//总的心动值
BigDecimal amountTotal = event.countSingleGiftGolds().multiply(giftRatio);
LiveHeartbeatCache liveHeartbeatCache = new LiveHeartbeatCache();
liveHeartbeatCache.setId(userId);
liveHeartbeatCache.setHeartbeatVal(getHeartbeatTotal(amountTotal,
Objects.nonNull(liveHeartbeatCacheMap.get(userId)) ? liveHeartbeatCacheMap.get(userId)