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