diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java index 70d6531..faead4c 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java @@ -38,6 +38,19 @@ public enum RewardTypeEnum { MATCHMAKER_JOIN_RECOMMEND_BY_ONLINE(114, "红娘入驻推荐红娘奖励"), + /** + * 红娘入驻推荐奖励 + */ + MATCHMAKER_JOIN_RECOMMEND_EQUAL_LEVEL(121, "红娘入驻推荐奖励--平级推荐"), + + MATCHMAKER_JOIN_RECOMMEND_DOWN_LEVEL(122,"红娘入驻推荐奖励--向下推荐奖励差"), + + MATCHMAKER_JOIN_RECOMMEND_DOWN_MAX(123,"红娘入驻向下推荐最大奖励"), + + MATCHMAKER_JOIN_RECOMMEND_UP_LEVEL(124,"红娘入驻推荐奖励--向上推荐奖励差"), + + MATCHMAKER_JOIN_RECOMMEND_UP_MIN(125,"红娘入驻向上推荐最小奖励"), + // 2** 服务费 PLATFORM_SERVICE_FEE(201, "平台服务费"), diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java index 65be180..fccda3a 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java @@ -45,6 +45,10 @@ public class RewardConfig extends Entity { } } + public static BigDecimal calculatePct(BigDecimal amount, BigDecimal pct) { + return amount.multiply(pct).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); + } + public BigDecimal calculatePrice(BigDecimal price) { if (RewardAmountUnitEnum.NUM.equals(rewardAmountUnit)) { return new BigDecimal(value); diff --git a/dating-agency-mall-sdk/pom.xml b/dating-agency-mall-sdk/pom.xml index 33d1e41..8018ebd 100644 --- a/dating-agency-mall-sdk/pom.xml +++ b/dating-agency-mall-sdk/pom.xml @@ -31,5 +31,10 @@ dating-agency-mall-constant 0.0.1-SNAPSHOT + + com.qniao + dating-agency-uec-constant + 0.0.1-SNAPSHOT + \ No newline at end of file diff --git a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java index a103e78..5c477a4 100644 --- a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java +++ b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java @@ -1,6 +1,7 @@ package com.qniao.dam.application.request; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.dau.domian.aggregate.matchmaker.constant.MatchmakerLevelEnum; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,4 +15,6 @@ public class UserAcquireMatchmakerJoinRecommendRewardDto { private Long storeOrgId; private Long operationCenterOrgId; private ProductSubCategoryEnum type; + private MatchmakerLevelEnum initiatorLevel; + private MatchmakerLevelEnum receiveLevel; } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java index 1c4909e..ea87560 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java @@ -1,6 +1,7 @@ package com.qniao.dam.api.command.reward.user.request; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.dau.domian.aggregate.matchmaker.constant.MatchmakerLevelEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -24,4 +25,10 @@ public class UserAcquireMatchmakerJoinRecommendRewardDto { @ApiModelProperty("红娘类型") private ProductSubCategoryEnum type; + @ApiModelProperty("发起红娘级别") + private MatchmakerLevelEnum initiatorLevel; + + @ApiModelProperty("入驻红娘级别") + private MatchmakerLevelEnum receiveLevel; + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java index 03da5c0..df80afe 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java @@ -9,6 +9,7 @@ import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardAssociateOrderRecord; import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord; import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; @@ -65,90 +66,91 @@ public class RewardApplicationService { public void acquireMatchmakerJoinRecommendReward(UserAcquireMatchmakerJoinRecommendRewardDto dto) { //红娘加盟订单 Order associateOrder = orderQueryService.queryBySubCategory(dto.getReceiveUserId(), dto.getType()); - BigDecimal rewardAmount = associateOrder.getSettlementAmount(); - //推荐的红娘 - if (Objects.nonNull(dto.getInitiatorUserId())) { - synchronized (dto.getInitiatorUserId().toString().intern()) { - //区分红娘类型 - RewardTypeEnum rewardType = RewardConfig.getRecommendRewardType(dto.getType()); - RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(rewardType); - if (Objects.nonNull(recommendRewardConfig)) { - //收益信息 - RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId()); - if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.initUser(dto.getInitiatorUserId()); - } - //营收额 - BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); - rewardAmount = rewardAmount.subtract(revenue); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, - revenue, revenue, associateOrder.getOriginalAmount()); - revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); - RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); - revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); - revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); - - //钱包信息 - WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL); - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); - walletAccount.setRecordList(Collections.singletonList(record)); - acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); - } - } - } - //门店提成 - if (Objects.nonNull(dto.getStoreOrgId())) { - synchronized (dto.getStoreOrgId().toString().intern()) { - RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE); - if (Objects.nonNull(recommendRewardConfig)) { - //收益信息 - RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); - //营收额 - BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, - revenue, revenue, associateOrder.getOriginalAmount()); - revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); - RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); - revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); - revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); - - //钱包信息 - WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION); - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); - walletAccount.setRecordList(Collections.singletonList(record)); - acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); - } - } - } - //运营中心提成 - if (Objects.nonNull(dto.getOperationCenterOrgId())) { - synchronized (dto.getOperationCenterOrgId().toString().intern()) { - RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER); - if (Objects.nonNull(recommendRewardConfig)) { - //收益信息 - RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getOperationCenterOrgId()); - //营收额 - BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, - revenue, revenue, associateOrder.getOriginalAmount()); - revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); - RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); - revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); - revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); + if (Objects.nonNull(associateOrder)) { + BigDecimal rewardAmount = associateOrder.getSettlementAmount(); + //推荐的红娘 + if (Objects.nonNull(dto.getInitiatorUserId())) { + synchronized (dto.getInitiatorUserId().toString().intern()) { + //奖励百分比 + BigDecimal recommendRewardPct = rewardConfigQueryService.queryRecommendRewardPct(dto.getInitiatorLevel(), dto.getReceiveLevel()); + if (recommendRewardPct.compareTo(BigDecimal.ZERO) > 0) { + //收益信息 + RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId()); + if (Objects.isNull(revenueReward)) { + revenueReward = RevenueReward.initUser(dto.getInitiatorUserId()); + } + //营收额 + BigDecimal revenue = RewardConfig.calculatePct(rewardAmount, recommendRewardPct); + rewardAmount = rewardAmount.subtract(revenue); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, + revenue, revenue, associateOrder.getOriginalAmount()); + revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); + RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); + revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); + revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); - //钱包信息 - WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION); - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); - walletAccount.setRecordList(Collections.singletonList(record)); - acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); + //钱包信息 + WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); + walletAccount.setRecordList(Collections.singletonList(record)); + acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); + } } } +// //门店提成 +// if (Objects.nonNull(dto.getStoreOrgId())) { +// synchronized (dto.getStoreOrgId().toString().intern()) { +// RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE); +// if (Objects.nonNull(recommendRewardConfig)) { +// //收益信息 +// RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); +// //营收额 +// BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); +// RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, +// revenue, revenue, associateOrder.getOriginalAmount()); +// revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); +// RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); +// revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); +// revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); +// +// //钱包信息 +// WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION); +// walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); +// walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); +// WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); +// walletAccount.setRecordList(Collections.singletonList(record)); +// acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); +// } +// } +// } +// //运营中心提成 +// if (Objects.nonNull(dto.getOperationCenterOrgId())) { +// synchronized (dto.getOperationCenterOrgId().toString().intern()) { +// RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER); +// if (Objects.nonNull(recommendRewardConfig)) { +// //收益信息 +// RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getOperationCenterOrgId()); +// //营收额 +// BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); +// RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, +// revenue, revenue, associateOrder.getOriginalAmount()); +// revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); +// RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); +// revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); +// revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); +// +// //钱包信息 +// WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION); +// walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); +// walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); +// WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); +// walletAccount.setRecordList(Collections.singletonList(record)); +// acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); +// } +// } +// } } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java index c9569ce..cd18875 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java @@ -4,9 +4,12 @@ import com.qniao.dam.api.query.rewardconfig.user.request.UserGetRewardConfigDeta import com.qniao.dam.api.query.rewardconfig.user.response.RewardConfigVo; import com.qniao.dam.api.query.rewardconfig.user.response.UserGetRewardConfigDetailVo; import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; +import com.qniao.dau.domian.aggregate.matchmaker.constant.MatchmakerLevelEnum; +import java.math.BigDecimal; import java.util.List; public interface RewardConfigQueryService { @@ -21,4 +24,7 @@ public interface RewardConfigQueryService { RewardConfig queryPublishMarriageBountyReward(Matchmaker matchmaker); RewardConfig queryMatchMarriageBountyReward(Matchmaker matchmaker); + + + BigDecimal queryRecommendRewardPct(MatchmakerLevelEnum initiatorLevel, MatchmakerLevelEnum receiveLevel); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java index 710e18d..f26ae78 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java @@ -12,10 +12,12 @@ import com.qniao.dam.infrastructure.persistent.dao.view.RewardConfigViewDao; import com.qniao.dam.query.matchmaker.MatchmakerQueryService; import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; +import com.qniao.dau.domian.aggregate.matchmaker.constant.MatchmakerLevelEnum; import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -101,4 +103,42 @@ public class RewardConfigQueryServiceImpl implements RewardConfigQueryService { } return null; } + + @Override + public BigDecimal queryRecommendRewardPct(MatchmakerLevelEnum initiatorLevel, + MatchmakerLevelEnum receiveLevel) { + BigDecimal pct = BigDecimal.ZERO; + if (Objects.nonNull(initiatorLevel) && Objects.nonNull(receiveLevel)) { + int diffValue = initiatorLevel.getLevel() - receiveLevel.getValue(); + RewardConfig equalLevelConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_EQUAL_LEVEL); + if (Objects.nonNull(equalLevelConfig)) { + //平级推荐 + if (diffValue == 0) { + pct = new BigDecimal(equalLevelConfig.getValue()); + } + //向下推荐 + if (diffValue > 0) { + RewardConfig downLevelConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_DOWN_LEVEL); + RewardConfig downMaxConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_DOWN_MAX); + if (Objects.nonNull(downLevelConfig) && Objects.nonNull(downMaxConfig)) { + pct = new BigDecimal(equalLevelConfig.getValue()).add(new BigDecimal(downLevelConfig.getValue())); + BigDecimal downMaxPct = new BigDecimal(downLevelConfig.getValue()); + pct = pct.compareTo(downMaxPct) < 0 ? pct : downMaxPct; + } + } + //向上推荐 + if (diffValue < 0) { + RewardConfig upLevelConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_UP_LEVEL); + RewardConfig upMinConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_UP_MIN); + if (Objects.nonNull(upLevelConfig) && Objects.nonNull(upMinConfig)) { + pct = new BigDecimal(equalLevelConfig.getValue()).add(new BigDecimal(upLevelConfig.getValue())); + BigDecimal upMinPct = new BigDecimal(upMinConfig.getValue()); + pct = pct.compareTo(upMinPct) > 0 ? pct : upMinPct; + } + } + } + } + return pct; + } + }