|
|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|