Jelajahi Sumber

fix 余额支付

zoujiajian 2 tahun lalu
induk
melakukan
0c6603d858

+ 25 - 18
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -2090,6 +2090,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		//针对设备 满减活动优惠 不支持使用优惠券等优惠
 		if (isAcReduce != null && isAcReduce && orderDon.getGoodsId() == 15) {
 			epOrderDonActivityReduce(orderDon);
+			//存在余额
+			deductBalancePayOrderMoney(orderDon, balance, user);
 			return;
 		}
 		//存在优惠券
@@ -2172,24 +2174,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		}
 
 		//存在余额
-		if (balance != null && balance.compareTo(BigDecimal.ZERO) > 0) {
-			BigDecimal money = orderDon.getMoney();
-			//去掉余额 多出的部分
-			BigDecimal subBalance = balance;
-			orderDon.setMoney(money.subtract(subBalance));
-			if (balance.compareTo(money) >= 0) {
-				orderDon.setMoney(BigDecimal.ZERO);
-				orderDon.setBalance(money);
-				subBalance = money;
-				orderDon.setType(OrderDon.Type.BALANCE);
-			}
-			BigDecimal userBalance = user.getBalance();
-			//扣除余额 是否成功
-			Integer success = userMapper.deductBalance(user.getId(), subBalance, userBalance);
-			if (success != 1) throw BusinessRuntimeException.getInstance("您的余额不足!");
-			orderDon.setBalance(subBalance);
-			userBenefitsService.recordBalanceBySource(user.getId(), BigDecimal.valueOf(-subBalance.longValue()), UserBalanceSourceRecord.Source.payment);
-		}
+		deductBalancePayOrderMoney(orderDon, balance, user);
 	}
 
 	/**
@@ -2770,4 +2755,26 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		orderDon.setMoney(orderDon.getMoney().subtract(acReduceMoney));
 		orderDon.setCouponMoney(acReduceMoney);
 	}
+
+	public void deductBalancePayOrderMoney(OrderDon orderDon, BigDecimal balance, User user) {
+		//存在余额
+		if (balance != null && balance.compareTo(BigDecimal.ZERO) > 0) {
+			BigDecimal money = orderDon.getMoney();
+			//去掉余额 多出的部分
+			BigDecimal subBalance = balance;
+			orderDon.setMoney(money.subtract(subBalance));
+			if (balance.compareTo(money) >= 0) {
+				orderDon.setMoney(BigDecimal.ZERO);
+				orderDon.setBalance(money);
+				subBalance = money;
+				orderDon.setType(OrderDon.Type.BALANCE);
+			}
+			BigDecimal userBalance = user.getBalance();
+			//扣除余额 是否成功
+			Integer success = userMapper.deductBalance(user.getId(), subBalance, userBalance);
+			if (success != 1) throw BusinessRuntimeException.getInstance("您的余额不足!");
+			orderDon.setBalance(subBalance);
+			userBenefitsService.recordBalanceBySource(user.getId(), BigDecimal.valueOf(-subBalance.longValue()), UserBalanceSourceRecord.Source.payment);
+		}
+	}
 }