|  | @@ -840,13 +840,12 @@ DISCOUNT("畅学卡")
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // 判断满减
 | 
	
		
			
				|  |  |          if (couponInfo.getUseLimit() != null && amount.compareTo(BigDecimal
 | 
	
		
			
				|  |  | -                .valueOf(couponInfo.getUseLimit()).setScale(2, BigDecimal.ROUND_HALF_UP)) < 0
 | 
	
		
			
				|  |  | -                && !couponAmountMap.isEmpty()) {
 | 
	
		
			
				|  |  | +                .valueOf(couponInfo.getUseLimit()).setScale(2, BigDecimal.ROUND_HALF_UP)) < 0) {
 | 
	
		
			
				|  |  |              throw new BizException("优惠券不可用");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 总金额扣除优惠金额
 | 
	
		
			
				|  |  | -        amount = amount.subtract(BigDecimal.valueOf(couponInfo.getDiscountPrice()));
 | 
	
		
			
				|  |  | +        BigDecimal actual = amount.subtract(BigDecimal.valueOf(couponInfo.getDiscountPrice()));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 根据商品金额比例分摊优惠金额
 | 
	
		
			
				|  |  |          // 剩余金额
 | 
	
	
		
			
				|  | @@ -857,7 +856,7 @@ DISCOUNT("畅学卡")
 | 
	
		
			
				|  |  |              BigDecimal actualPrice = entry.getValue();
 | 
	
		
			
				|  |  |              BigDecimal couponAmount;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (amount.compareTo(BigDecimal.ZERO) >0) {
 | 
	
		
			
				|  |  | +            if (actual.compareTo(BigDecimal.ZERO) >0) {
 | 
	
		
			
				|  |  |                  couponAmount = BigDecimal.valueOf(couponInfo.getDiscountPrice())
 | 
	
		
			
				|  |  |                          .multiply(userOrderDetail.getActualPrice()).divide(amount, 2, RoundingMode.HALF_DOWN);
 | 
	
		
			
				|  |  |              } else {
 | 
	
	
		
			
				|  | @@ -870,7 +869,7 @@ DISCOUNT("畅学卡")
 | 
	
		
			
				|  |  |                      couponAmount,userOrderDetail.getDiscountJson()));
 | 
	
		
			
				|  |  |              userOrderDetail.setActualPrice(actualPrice.subtract(couponAmount));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (remainAmount.compareTo(BigDecimal.ZERO) > 0&& amount.compareTo(BigDecimal.ZERO) >0) {
 | 
	
		
			
				|  |  | +        if (remainAmount.compareTo(BigDecimal.ZERO) > 0 && actual.compareTo(BigDecimal.ZERO) >0) {
 | 
	
		
			
				|  |  |              UserOrderDetail userOrderDetail = goodsInfos.get(couponAmountMap.keySet().stream().findFirst().get()).getUserOrderDetail();
 | 
	
		
			
				|  |  |              userOrderDetail.setActualPrice(userOrderDetail.getActualPrice().subtract(remainAmount));
 | 
	
		
			
				|  |  |  
 |