Merge remote-tracking branch 'origin/bd_dev' into bd_dev
This commit is contained in:
commit
ca411f9770
|
@ -47,6 +47,7 @@ import javax.annotation.Resource;
|
|||
import java.math.BigDecimal;
|
||||
import java.net.InetAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
@ -259,6 +260,7 @@ public class JdPayServiceImpl implements IJdPayService {
|
|||
List<TOnlinePaymentSepAccD> sepAccDList = new ArrayList<>();
|
||||
if(ObjectUtil.isNotEmpty(jdPayBankProperties)){
|
||||
List<JdPaySeparateAccountConfig> separateAccounts = jdPayBankProperties.getSeparateAccounts();
|
||||
separateAccounts.sort(Comparator.comparing(JdPaySeparateAccountConfig::getProportion).reversed());
|
||||
if(ObjectUtil.isNotEmpty(separateAccounts)){
|
||||
BigDecimal tradeAmount = onlinePayment.getPayMoney();
|
||||
BigDecimal remaining = onlinePayment.getPayMoney();
|
||||
|
@ -267,23 +269,27 @@ public class JdPayServiceImpl implements IJdPayService {
|
|||
BigDecimal subTradeAmount;
|
||||
if(i == separateAccounts.size() - 1){
|
||||
subTradeAmount = remaining;
|
||||
log.info("分账 最后一个账户( 总 - 已分账 ) : {}, {}", subTradeAmount, remaining);
|
||||
}else{
|
||||
subTradeAmount = tradeAmount.subtract(tradeAmount.multiply(separateAccount.getProportion().setScale(2, BigDecimal.ROUND_DOWN)).setScale(2, BigDecimal.ROUND_DOWN));
|
||||
remaining = remaining.subtract(subTradeAmount).setScale(2, BigDecimal.ROUND_DOWN);
|
||||
log.info("分账 过程 : {}, {}, {}", subTradeAmount, remaining, separateAccount.getProportion().setScale(2, BigDecimal.ROUND_DOWN));
|
||||
}
|
||||
JdPayDivisionAccountTradeInfo divisionAccountTradeInfo = new JdPayDivisionAccountTradeInfo();
|
||||
divisionAccountTradeInfo.setMerchantNo(separateAccount.getAccount());
|
||||
divisionAccountTradeInfo.setOutTradeNo(onlinePayment.getBusinessCode() + "_" + (i + 1));
|
||||
divisionAccountTradeInfo.setTradeAmount(subTradeAmount.multiply(new BigDecimal(100)).intValue() + "");
|
||||
divisionAccountTradeInfoList.add(divisionAccountTradeInfo);
|
||||
sepAccDList.add(
|
||||
TOnlinePaymentSepAccD.builder()
|
||||
.account(separateAccount.getAccount())
|
||||
.proportion(separateAccount.getProportion())
|
||||
.tradeAmount(subTradeAmount)
|
||||
.outTradeNo(divisionAccountTradeInfo.getOutTradeNo())
|
||||
.build()
|
||||
);
|
||||
if(subTradeAmount.compareTo(BigDecimal.ZERO) > 0){
|
||||
divisionAccountTradeInfoList.add(divisionAccountTradeInfo);
|
||||
sepAccDList.add(
|
||||
TOnlinePaymentSepAccD.builder()
|
||||
.account(separateAccount.getAccount())
|
||||
.proportion(separateAccount.getProportion())
|
||||
.tradeAmount(subTradeAmount)
|
||||
.outTradeNo(divisionAccountTradeInfo.getOutTradeNo())
|
||||
.build()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue