|
|
@@ -55,8 +55,8 @@ public class PayServiceImpl implements PayService {
|
|
|
}
|
|
|
|
|
|
//根据费用类型
|
|
|
- if(routeScaleDtos == null){
|
|
|
- routeScaleDtos = getTypeRouteChannel(organId, orderNo, amount);
|
|
|
+ if (routeScaleDtos == null) {
|
|
|
+ routeScaleDtos = getTypeRouteChannel(organId, orderNo, amount, balanceAmount);
|
|
|
}
|
|
|
|
|
|
//根据金额获取分润
|
|
|
@@ -313,9 +313,20 @@ public class PayServiceImpl implements PayService {
|
|
|
if (routeScaleDto.getPayType().equals(PaymentChannelEnum.YQPAY)) {
|
|
|
routingAmount = yqAmount;
|
|
|
}
|
|
|
- BigDecimal routingFee = routingAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal routeBalanceAmount = balanceAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal routingMoney = amount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+ BigDecimal routingFee = null;
|
|
|
+ BigDecimal routeBalanceAmount = null;
|
|
|
+ BigDecimal routingMoney = null;
|
|
|
+
|
|
|
+ if (routeScaleDto.getFeeType() == null) {
|
|
|
+ routingFee = routingAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ routeBalanceAmount = balanceAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ routingMoney = amount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ } else {
|
|
|
+ routingFee = routeScaleDto.getAmount();
|
|
|
+ routeBalanceAmount = routeScaleDto.getBalance();
|
|
|
+ routingMoney = routeScaleDto.getAmount();
|
|
|
+ }
|
|
|
if (i == routeScaleDtos.size()) {
|
|
|
routingFee = routingAmount.subtract(hasRouteAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
routeBalanceAmount = balanceAmount.subtract(hasRouteBalanceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
@@ -378,7 +389,7 @@ public class PayServiceImpl implements PayService {
|
|
|
* @param amount
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<RouteScaleDto> getTypeRouteChannel(Integer organId, String orderNo, BigDecimal amount) {
|
|
|
+ private List<RouteScaleDto> getTypeRouteChannel(Integer organId, String orderNo, BigDecimal amount, BigDecimal balanceAmount) {
|
|
|
SysPaymentConfig paymentConfig = sysPaymentConfigService.findPaymentConfigByOrganId(organId);
|
|
|
if (paymentConfig == null || StringUtils.isBlank(paymentConfig.getTypeRouteScale())) {
|
|
|
return null;
|
|
|
@@ -389,8 +400,8 @@ public class PayServiceImpl implements PayService {
|
|
|
List<Integer> organIds = routeScaleDtos.stream().map(RouteScaleDto::getOrganId).collect(Collectors.toList());
|
|
|
List<SysPaymentConfig> paymentConfigByOrganIds = sysPaymentConfigService.findPaymentConfigByOrganIds(organIds);
|
|
|
|
|
|
- BigDecimal sellActualAmount = sellOrderService.getSellActualAmount(orderNo);
|
|
|
- if (sellActualAmount == null) {
|
|
|
+ Map<String, BigDecimal> sellAmount = sellOrderService.getSellAmount(orderNo);
|
|
|
+ if (sellAmount == null) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
@@ -400,9 +411,11 @@ public class PayServiceImpl implements PayService {
|
|
|
RouteScaleDto routeScaleDto = iterator.next();
|
|
|
routeScaleDto.setPayType(paymentConfig.getPayType());
|
|
|
if (routeScaleDto.getFeeType().equals(FeeTypeEnum.SELL)) {
|
|
|
- routeScaleDto.setAmount(sellActualAmount);
|
|
|
+ routeScaleDto.setAmount(sellAmount.get("actualAmount"));
|
|
|
+ routeScaleDto.setBalance(sellAmount.get("balance"));
|
|
|
} else {
|
|
|
- routeScaleDto.setAmount(amount.subtract(sellActualAmount));
|
|
|
+ routeScaleDto.setAmount(amount.subtract(sellAmount.get("actualAmount")));
|
|
|
+ routeScaleDto.setBalance(balanceAmount.subtract(sellAmount.get("balance")));
|
|
|
}
|
|
|
|
|
|
if (routeScaleDto.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
|