推客直接收益,调整顺序

This commit is contained in:
2025-02-28 10:12:19 +08:00
parent 34924ad351
commit 553ef3a2cd
13 changed files with 94 additions and 43 deletions

View File

@ -19,6 +19,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
@Component
@ -80,32 +81,40 @@ public class BrokerBiz {
brokerRecord.setBrokerRate(broker.getBrokerRate());
BigDecimal brokerRate = brokerRecord.getBrokerRate();
BigDecimal brokerPrice = order.getPayPrice().multiply(brokerRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN);
brokerRecord.setDirectPrice(order.getPayPrice());
brokerRecord.setBrokerPrice(brokerPrice);
reason += "金额:" + order.getPayPrice() + "元,提成比例:" + brokerRate + ",提成金额:" + brokerPrice + "";
reason += "金额:" + order.getPayPrice() + "元,提成比例:" + brokerRate + "%,提成金额:" + brokerPrice + "";
brokerRecord.setReason(reason);
brokerRecordList.add(brokerRecord);
} else {
BigDecimal totalRate = brokerInfoList.stream().map(BrokerRespVO::getBrokerRate).reduce(BigDecimal.ZERO, BigDecimal::add);
BrokerRespVO broker = brokerInfoList.get(0);
BigDecimal firstRate = broker.getBrokerRate();
BigDecimal brokerPrice = order.getPayPrice().multiply(firstRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN);
BigDecimal realRate = broker.getBrokerRate();
BigDecimal brokerPrice = order.getPayPrice().multiply(realRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN);
AtomicBoolean isFirst = new AtomicBoolean(true);
// todo 需要计算实际提成比例
BigDecimal firstRate = BigDecimal.valueOf(50);
BigDecimal secondRate = BigDecimal.valueOf(100).subtract(firstRate).divide(BigDecimal.valueOf(brokerInfoList.size() - 1), 2, RoundingMode.HALF_DOWN);
brokerInfoList.forEach(item -> {
String reason = "多人提成:支付金额:" + order.getPayPrice() + "元,可提成比例:" + firstRate + ",可提成金额:" + brokerPrice + "";
String reason = "多人提成:支付金额:" + order.getPayPrice() + "元,可提成比例:" + realRate + "%,可提成金额:" + brokerPrice + "";
BrokerRecord brokerRecord = new BrokerRecord();
brokerRecord.setBrokerId(item.getId());
brokerRecord.setOrderId(orderId);
if (item.getBrokerRate() == null) {
reason += "提成比例为空!";
brokerRecord.setBrokerRate(BigDecimal.ZERO);
BigDecimal interBrokerRate;
if (isFirst.get()) {
interBrokerRate = firstRate;
brokerRecord.setDirectPrice(order.getPayPrice());
} else {
interBrokerRate = secondRate;
brokerRecord.setDirectPrice(BigDecimal.ZERO);
}
brokerRecord.setOrderPrice(order.getPayPrice());
BigDecimal interBrokerRate = item.getBrokerRate().divide(totalRate, 2, RoundingMode.HALF_DOWN);
brokerRecord.setBrokerRate(interBrokerRate);
BigDecimal interBrokerPrice = order.getPayPrice().multiply(interBrokerRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN);
brokerRecord.setBrokerPrice(interBrokerPrice);
reason += "提成比例:" + item.getBrokerRate() + ",实际提成比例:" + interBrokerRate + ",提成金额:" + interBrokerPrice + "";
reason += "二次提成比例:" + interBrokerRate + "%,提成金额:" + interBrokerPrice + "";
brokerRecord.setReason(reason);
brokerRecordList.add(brokerRecord);
isFirst.set(false);
});
}
revokeOrder(orderId);