|  | @@ -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) {
 |