赠送他人返回金币-改成判断接收者

This commit is contained in:
tianfeng 2026-06-04 20:28:45 +08:00
parent 69729a5201
commit 898bc5aed4

View File

@ -69,6 +69,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Timestamp;
import java.util.*;
import java.util.HashSet;
import java.util.stream.Collectors;
import kotlin.Pair;
@ -493,6 +494,11 @@ public class GiveGiftsListener implements MessageListener {
Map<Long, TeamMember> teamMemberMap = teamMemberService.mapByMemberIds(anchorUserIds);
Set<Long> acceptUserIds = event.getAccepts().stream()
.map(GiveAwayGiftRoomAccepts::getAcceptUserId)
.collect(Collectors.toSet());
Set<Long> teamMemberIds = new HashSet<>(teamMemberService.listMemberIds(acceptUserIds));
return event.getAccepts().stream().map(accept -> {
// 接受人区域与金币比例
@ -545,8 +551,8 @@ public class GiveGiftsListener implements MessageListener {
acceptAmount = giftValue.getGiftValue().multiply(acceptAssistRatio).setScale(0, RoundingMode.DOWN);
} else {
// 普通礼物
acceptAssistRatio = calculateAcceptAssistRatio(event, acceptRegion);
BigDecimal effectiveSendRatio = calculateEffectiveSendRatio(event, sendRegion, sendAssistRatio, acceptRegion, accept);
acceptAssistRatio = calculateAcceptAssistRatio(teamMemberIds, accept.getAcceptUserId(), acceptRegion);
BigDecimal effectiveSendRatio = calculateEffectiveSendRatio(event, sendRegion, sendAssistRatio, acceptRegion, accept, teamMemberIds);
acceptAmount = enumConfigCacheService.giftGoldRatioFormula(effectiveSendRatio, giftValue.getGiftValue());
targetAmount = giftValue.getGiftValue()
@ -580,8 +586,8 @@ public class GiveGiftsListener implements MessageListener {
/**
* 计算接收方助力比例.
*/
private BigDecimal calculateAcceptAssistRatio(GiveAwayGiftBatchEvent event, RegionConfig acceptRegion) {
if (userRegionGateway.isOrdinaryUser(event.getSendUserId())) {
private BigDecimal calculateAcceptAssistRatio(Set<Long> teamMemberIds, Long acceptUserId, RegionConfig acceptRegion) {
if (!teamMemberIds.contains(acceptUserId)) {
return getAssistGiftToOtherGoldRatioNormal(acceptRegion.getId());
}
return getAssistGiftToOtherGoldRatio(acceptRegion.getId());
@ -592,7 +598,7 @@ public class GiveGiftsListener implements MessageListener {
*/
private BigDecimal calculateEffectiveSendRatio(GiveAwayGiftBatchEvent event, RegionConfig sendRegion,
BigDecimal sendAssistRatio, RegionConfig acceptRegion,
GiveAwayGiftRoomAccepts accept) {
GiveAwayGiftRoomAccepts accept, Set<Long> teamMemberIds) {
// 送给自己
if (Objects.equals(event.getSendUserId(), accept.getAcceptUserId())) {
if (userRegionGateway.isOrdinaryUser(event.getSendUserId())) {
@ -601,7 +607,7 @@ public class GiveGiftsListener implements MessageListener {
return sendAssistRatio;
}
// 送给别人
return calculateAcceptAssistRatio(event, acceptRegion);
return calculateAcceptAssistRatio(teamMemberIds, accept.getAcceptUserId(), acceptRegion);
}
/**