|
|
@@ -558,7 +558,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
*/
|
|
|
public void commonUpgradeRefund(UpgradeOrderDon orderDon, BigDecimal refundMoney, String operator, UpgradePackage upgradePackage, String outNo, String refundType, Boolean isOnly, BigDecimal refundBalance, String chatImg) {
|
|
|
TASK_POOL.execute(() -> {
|
|
|
- orderRefundService.refundUpgradeRecord(orderDon, refundMoney,upgradePackage, operator, outNo, refundType, chatImg);
|
|
|
+ orderRefundService.refundUpgradeRecord(orderDon, refundMoney, refundBalance, upgradePackage, operator, outNo, refundType, chatImg);
|
|
|
//退等比例
|
|
|
if (isOnly != null && isOnly) {
|
|
|
userBenefitsService.addUserBalance(orderDon.getUserId(), refundBalance, UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(), upgradePackage.getName()+ UserBalanceSourceRecord.Source.refund.getDesc(), true);
|
|
|
@@ -566,8 +566,13 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
orderDon.setRefundBalance(orderDonRefundBalance.add(refundBalance));
|
|
|
}
|
|
|
|
|
|
- //若存在余额支付,退还余额
|
|
|
- if (isOnly == null && orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+// //若存在余额支付,退还余额
|
|
|
+// if (isOnly == null && orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+// userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
|
|
|
+// }
|
|
|
+
|
|
|
+ //余额现金混合退款
|
|
|
+ if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
|
|
|
userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), UserBalanceSourceRecord.Source.refund, 0L, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
|
|
|
}
|
|
|
|
|
|
@@ -600,9 +605,10 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
|
|
|
BigDecimal refundMoney = refundReq.getRefundMoney();
|
|
|
BigDecimal money = orderDon.getMoney();
|
|
|
+ BigDecimal balance = orderDon.getBalance();
|
|
|
+ BigDecimal refundBalance = refundReq.getRefundBalance();
|
|
|
//余额退款
|
|
|
if (UpgradeOrderDon.Type.BALANCE.getType().equals(refundType)) {
|
|
|
- BigDecimal balance = orderDon.getBalance();
|
|
|
refundMoney = orderDonRefundBalance.add(refundMoney);
|
|
|
if (UpgradeOrderDon.Type.BALANCE == orderDon.getType() && refundMoney.compareTo(balance) > 0) {
|
|
|
throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
|
|
|
@@ -612,6 +618,18 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
}
|
|
|
orderDon.setRefundBalance(refundMoney);
|
|
|
orderDon.setRefundMoney(BigDecimal.ZERO);
|
|
|
+ } else if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
|
|
|
+ if (refundBalance.compareTo(balance) > 0) {
|
|
|
+ throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
|
|
|
+ }
|
|
|
+ refundBalance = refundBalance.add(orderDonRefundBalance);
|
|
|
+ orderDon.setRefundBalance(refundBalance);
|
|
|
+
|
|
|
+ refundMoney = orderDonRefundMoney.add(refundMoney);
|
|
|
+ if (refundMoney.compareTo(money) > 0) {
|
|
|
+ throw BusinessRuntimeException.getInstance("退款金额大于订单支付金额");
|
|
|
+ }
|
|
|
+ orderDon.setRefundMoney(refundMoney);
|
|
|
} else {
|
|
|
//退金额
|
|
|
refundMoney = orderDonRefundMoney.add(refundMoney);
|
|
|
@@ -968,10 +986,11 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
}
|
|
|
}
|
|
|
BigDecimal refundMoney = refundReq.getRefundMoney();
|
|
|
+ BigDecimal refundBalance = refundReq.getRefundBalance();
|
|
|
BigDecimal money = orderDon.getMoney();
|
|
|
+ BigDecimal balance = orderDon.getBalance();
|
|
|
//余额退款
|
|
|
if (OrderDon.Type.BALANCE.getType().equals(refundType)) {
|
|
|
- BigDecimal balance = orderDon.getBalance();
|
|
|
refundMoney = orderDonRefundBalance.add(refundMoney);
|
|
|
if (OrderDon.Type.BALANCE == orderDon.getType() && refundMoney.compareTo(balance) > 0) {
|
|
|
throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
|
|
|
@@ -980,7 +999,18 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
throw BusinessRuntimeException.getInstance("退款余额大于订单支付金额");
|
|
|
}
|
|
|
orderDon.setRefundBalance(refundMoney);
|
|
|
- orderDon.setRefundMoney(BigDecimal.ZERO);
|
|
|
+ } else if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
|
|
|
+ if (refundBalance.compareTo(balance) > 0) {
|
|
|
+ throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
|
|
|
+ }
|
|
|
+ refundBalance = refundBalance.add(orderDonRefundBalance);
|
|
|
+ orderDon.setRefundBalance(refundBalance);
|
|
|
+
|
|
|
+ refundMoney = orderDonRefundMoney.add(refundMoney);
|
|
|
+ if (refundMoney.compareTo(money) > 0) {
|
|
|
+ throw BusinessRuntimeException.getInstance("退款金额大于订单支付金额");
|
|
|
+ }
|
|
|
+ orderDon.setRefundMoney(refundMoney);
|
|
|
} else {
|
|
|
//退金额
|
|
|
refundMoney = orderDonRefundMoney.add(refundMoney);
|
|
|
@@ -1015,7 +1045,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
* 退款后 处理关联
|
|
|
*/
|
|
|
public void commonRefund(OrderDon orderDon, BigDecimal refundMoney, String operator, GoodsDon goodsDon, GoodsDonSku sku, String outNo, String refundType, Boolean isOnly, BigDecimal refundBalance, String chatImg, BigDecimal deductBalance, List<Long> dpRelationIds) {
|
|
|
- orderRefundService.refundRecord(orderDon, refundMoney, operator, goodsDon, sku, outNo, refundType, chatImg);
|
|
|
+ orderRefundService.refundRecord(orderDon, refundMoney, refundBalance, operator, goodsDon, sku, outNo, refundType, chatImg);
|
|
|
//退款一次
|
|
|
goodsDonStockService.upStockRelate(null, orderDon.getId(), "refund");
|
|
|
try {
|
|
|
@@ -1038,13 +1068,18 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
}
|
|
|
|
|
|
//若存在余额支付,退还余额
|
|
|
- if (isOnly == null && orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- BigDecimal addBalance = orderDon.getBalance();
|
|
|
- //需额外扣除余额
|
|
|
- if (deductBalance != null && deductBalance.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- addBalance = addBalance.subtract(deductBalance);
|
|
|
- }
|
|
|
- userBenefitsService.addUserBalance(orderDon.getUserId(), addBalance, UserBalanceSourceRecord.Source.refund, orderDon.getYhsId(), orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
|
|
|
+// if (isOnly == null && orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+// BigDecimal addBalance = orderDon.getBalance();
|
|
|
+// //需额外扣除余额
|
|
|
+// if (deductBalance != null && deductBalance.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+// addBalance = addBalance.subtract(deductBalance);
|
|
|
+// }
|
|
|
+// userBenefitsService.addUserBalance(orderDon.getUserId(), addBalance, UserBalanceSourceRecord.Source.refund, orderDon.getYhsId(), orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
|
|
|
+// }
|
|
|
+
|
|
|
+ //余额现金混合退款
|
|
|
+ if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
|
|
|
+ userBenefitsService.addUserBalance(orderDon.getUserId(), refundBalance, UserBalanceSourceRecord.Source.refund, null, orderDon.getId(), orderDon.getPayTitle() + UserBalanceSourceRecord.Source.refund.getDesc(), true);
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
@@ -1372,7 +1407,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
orderDonMapper.updateById(orderDon);
|
|
|
}
|
|
|
|
|
|
- orderRefundService.refundRecord(orderDon, refundMoney, orderRefundReq.getOperator(), goodsDon, sku, outNo, refundType, null);
|
|
|
+ orderRefundService.refundRecord(orderDon, refundMoney, orderRefundReq.getRefundBalance(), orderRefundReq.getOperator(), goodsDon, sku, outNo, refundType, null);
|
|
|
}
|
|
|
|
|
|
@Override
|