房间流水和家族 CP ACTIVITY礼物百分比处理

This commit is contained in:
tianfeng 2026-01-08 17:01:19 +08:00
parent 258f6af4d2
commit 00a108f265

View File

@ -173,18 +173,10 @@ public class GiftCountStrategy implements GiftStrategy {
List<Long> activityDoubleGiftIds = activityConfigService.listProcessingGiftIds(ids);
boolean isDoubleLevelExpActivity = activityDoubleGiftIds.contains(runningWater.getGiftId());
//log.warn("幸运礼物id{}",isDoubleLevelExpActivity);
log.info("礼物统计{}", runningWater);
boolean isLuckyGift = isLuckyGift(giftValue);
BigDecimal actualAmount = BigDecimal.valueOf(
getActualAmount(isLuckyGift, giftValue.getActualAmount(),
luckyGiftRatio));
boolean isHighPriceGift = checkHighPriceGift(runningWater);
BigDecimal giftValueCount = BigDecimal.valueOf(getActualAmount(isLuckyGift,
giftValue.getGiftValue(), luckyGiftRatio));
BigDecimal giftValueCount = BigDecimal.valueOf(getActualAmount(giftValue, giftValue.getGiftValue()));
runningWater.getAcceptUsers().forEach(accept -> {
@ -204,7 +196,7 @@ public class GiftCountStrategy implements GiftStrategy {
// 家族
processFamily(runningWater, isLuckyGift, luckyGiftRatio);
processFamily(runningWater);
// Spins 送礼物任务
handleSpinsGiftTask(runningWater);
@ -384,14 +376,8 @@ public class GiftCountStrategy implements GiftStrategy {
return;
}
BigDecimal luckyGiftRatio = gameLuckyGiftCommon.getLuckyGiftShareRatio(roomProfile.getSysOrigin());
log.info("GiftCountStrategy.roomContribution---幸运礼物比例:{}", luckyGiftRatio);
log.info("礼物统计{}", runningWater);
BigDecimal actualAmount = BigDecimal.valueOf(
getActualAmount(isLuckyGift(runningWater.getGiftValue()),
runningWater.getGiftValue().getActualAmount(), luckyGiftRatio)
);
BigDecimal actualAmount = BigDecimal.valueOf(getActualAmount(runningWater.getGiftValue(), runningWater.getGiftValue().getActualAmount()));
roomContributionRankCountService.incr(roomProfile.getSysOrigin(),
roomProfile.getId(),
@ -409,35 +395,13 @@ public class GiftCountStrategy implements GiftStrategy {
BigDecimal luckyGiftTargetRatio = gameLuckyGiftCommon.getLuckyGiftTargetRatio(
runningWater.getSysOrigin());
log.info("礼物统计{}", runningWater);
BigDecimal actualTargetAmount = BigDecimal.valueOf(
getActualAmount(isLuckyGift(runningWater.getGiftValue()),
runningWater.getGiftValue().getActualAmount(), luckyGiftTargetRatio));
BigDecimal actualTargetAmount = BigDecimal.valueOf(getActualAmount(runningWater.getGiftValue(), runningWater.getGiftValue().getActualAmount()));
// 活动 2022.11.1 - 2036.11.30
roomContributionActivityCountService.incrQuantity(roomProfile.getId(), actualTargetAmount);
}
/**
* 累计金币活动 20230719-20230801.
*/
private void consumeActivity(GiftGiveRunningWater runningWater, boolean isLuckyGift,
BigDecimal luckyGiftRatio) {
int nowInt = ZonedDateTimeAsiaRiyadhUtils.nowDateToInt();
if (nowInt >= 20230719 && nowInt < 20230801) {
consumeActivityCountService.incrTarget(runningWater.getUserId(),
userRegionGateway.getRegionId(runningWater.getUserId()),
getActualAmount(isLuckyGift, runningWater.getGiftValue().getActualAmount(),
luckyGiftRatio));
}
}
/**
* 处理 房间pk礼物
*/
@ -458,10 +422,8 @@ public class GiftCountStrategy implements GiftStrategy {
return;
}
log.info("礼物统计{}", runningWater);
boolean isLuckyGift = isLuckyGift(runningWater.getGiftValue());
BigDecimal actualAmount = BigDecimal.valueOf(getActualAmount(isLuckyGift,
runningWater.getGiftValue().getActualAmount(), luckyGiftRatio));
BigDecimal actualAmount = BigDecimal.valueOf(getActualAmount(runningWater.getGiftValue(), runningWater.getGiftValue().getActualAmount()));
//保存房间与房间之间的PK
if (Objects.equals(roomPkCache.getPkType(), GamePkTypeEnum.ROOM_VS_ROOM.name())) {
@ -480,8 +442,7 @@ public class GiftCountStrategy implements GiftStrategy {
return;
}
Long giftValue = getActualAmount(isLuckyGift, runningWater.getGiftValue().getGiftValue(),
luckyGiftRatio);
Long giftValue = getActualAmount(runningWater.getGiftValue(), runningWater.getGiftValue().getGiftValue());
//保存用户对用户之间的Pk
for (GiftAcceptUser acceptUser : runningWater.getAcceptUsers()) {
@ -511,8 +472,7 @@ public class GiftCountStrategy implements GiftStrategy {
log.info("礼物统计{}", runningWater);
gameIndoorTeamPkCommon.calculatePoints(runningWater.getAcceptUsers(), roomId,
runningWater.getUserId(), BigDecimal.valueOf(
getActualAmount(isLuckyGift(runningWater.getGiftValue()),
runningWater.getGiftValue().getGiftValue(), luckyGiftRatio)));
getActualAmount(runningWater.getGiftValue(), runningWater.getGiftValue().getGiftValue())));
}
/**
@ -584,8 +544,7 @@ public class GiftCountStrategy implements GiftStrategy {
private void processUserFriendCard(GiftGiveRunningWater runningWater, boolean isLuckyGift,
BigDecimal luckyGiftRatio) {
Long giftValue = getActualAmount(isLuckyGift, runningWater.getGiftValue().getGiftValue(),
luckyGiftRatio);
Long giftValue = getActualAmount(runningWater.getGiftValue(), runningWater.getGiftValue().getGiftValue());
List<Long> acceptUserIds = runningWater.getAcceptUsers().stream()
.map(GiftAcceptUser::getAcceptUserId)
@ -618,15 +577,14 @@ public class GiftCountStrategy implements GiftStrategy {
}
private void processFamily(GiftGiveRunningWater runningWater, boolean isLuckyGift,
BigDecimal luckyGiftRatio) {
Long actualAmount = getActualAmount(isLuckyGift, runningWater.getGiftValue().getActualAmount(), luckyGiftRatio);
private void processFamily(GiftGiveRunningWater runningWater) {
Long actualAmount = getActualAmount(runningWater.getGiftValue(), runningWater.getGiftValue().getActualAmount());
familyCommon.addFamilyExpAndLevelUp(runningWater.getUserId(), runningWater.getSysOrigin(), actualAmount);
runningWater.getAcceptUsers().forEach(acceptUser -> {
Long exp = getActualAmount(isLuckyGift, acceptUser.getGiftValue(), luckyGiftRatio);
Long exp = getActualAmount(runningWater.getGiftValue(), runningWater.getGiftValue().getActualAmount());
familyCommon.addFamilyExpAndLevelUp(acceptUser.getAcceptUserId(), runningWater.getSysOrigin(), exp);
});
@ -667,17 +625,39 @@ public class GiftCountStrategy implements GiftStrategy {
return giftValue.getGiftType().contains(GiftTabEnum.LUCKY_GIFT.name());
}
/**
* 判断是否为活动礼物
*/
private boolean isActivityGift(GiftValue giftValue) {
return giftValue.getGiftType() != null &&
giftValue.getGiftType().contains(GiftTabEnum.ACTIVITY.name());
}
/**
* 判断是否为CP礼物
*/
private boolean isCpGift(GiftValue giftValue) {
return giftValue.getGiftType() != null &&
giftValue.getGiftType().contains(GiftTabEnum.CP.name());
}
/**
* 获得礼物额度.
*/
private Long getActualAmount(boolean checkLuckyGift, BigDecimal amount,
BigDecimal luckyGiftRatio) {
private Long getActualAmount(GiftValue giftValue, BigDecimal acceptAmount) {
log.warn("==-=-=-=--=是否是幸运礼物 {},{},{}", checkLuckyGift,amount,luckyGiftRatio);
if (checkLuckyGift) {
return amount.multiply(luckyGiftRatio).setScale(0, RoundingMode.DOWN).longValue();
if (isLuckyGift(giftValue)) {
BigDecimal ratio = gameLuckyGiftCommon.getLuckyGiftShareRatio(SysOriginPlatformEnum.LIKEI.name());
return acceptAmount.multiply(ratio).setScale(0, RoundingMode.DOWN).longValue();
}
return amount.longValue();
if (isActivityGift(giftValue) || isCpGift(giftValue)) {
BigDecimal ratio = new BigDecimal("0.7");
return acceptAmount.multiply(ratio).setScale(0, RoundingMode.DOWN).longValue();
}
return acceptAmount.longValue();
}
/**