退款要判断是否是已付款的单

This commit is contained in:
kuang.yife 2023-04-20 10:40:12 +08:00
parent fb30737591
commit a72d302696
2 changed files with 22 additions and 9 deletions

View File

@ -149,8 +149,10 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
Assert.notNull(orderMaster, "找不到对应的订单"); Assert.notNull(orderMaster, "找不到对应的订单");
FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId()); FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId());
Assert.notNull(financialMaster, "找不到支付记录"); Assert.notNull(financialMaster, "找不到支付记录");
Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员"); // Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员");
Assert.isTrue(PayStatus.PAID.getCode().equals(financialMaster.getPayStatus()), "订单未支付"); // Assert.isTrue(PayStatus.PAID.getCode().equals(financialMaster.getPayStatus()), "订单未支付");
// 是否已付款,用于判断是否需要退款
boolean payReverse = PayStatus.PAID.getCode().equals(financialMaster.getPayStatus());
// 申请退款金额 // 申请退款金额
BigDecimal refundMoney; BigDecimal refundMoney;
if (ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())) { if (ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())) {
@ -190,7 +192,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
financialMasterService.updateFinancialMaster(financialMaster); financialMasterService.updateFinancialMaster(financialMaster);
// 发起支付撤销 // 发起支付撤销
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); if(payReverse){
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
}
} else { } else {
// 如果退款金额 < 主单服务金额 // 如果退款金额 < 主单服务金额
afterServiceRecord.setOriginalRefund(refundMoney); afterServiceRecord.setOriginalRefund(refundMoney);
@ -199,7 +203,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
financialMasterService.updateFinancialMaster(financialMaster); financialMasterService.updateFinancialMaster(financialMaster);
String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney); String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney);
// 发起支付撤销 // 发起支付撤销
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); if(payReverse){
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
}
} }
} else { } else {
// 是子师傅的子单 退款金额最大可以等于子单的派单金额 // 是子师傅的子单 退款金额最大可以等于子单的派单金额
@ -216,8 +222,11 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
financialDetailService.updateFinancialDetail(financialDetail); financialDetailService.updateFinancialDetail(financialDetail);
// 发起支付撤销 // 发起支付撤销
String reverseAmt = AdapayUtils.bigDecimalToString(financialMaster.getServerMoney()); if(payReverse){
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); String reverseAmt = AdapayUtils.bigDecimalToString(financialMaster.getServerMoney());
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
}
} }
} }
afterServiceRecord.setRefundApplyTime(new Date()); afterServiceRecord.setRefundApplyTime(new Date());

View File

@ -256,9 +256,13 @@ public class OrderDetailServiceImpl implements OrderDetailService {
logger.info("Set OrderDetail[{}].orderStatus = {}", orderDetailId, OrderStatus.CANCEL.code()); logger.info("Set OrderDetail[{}].orderStatus = {}", orderDetailId, OrderStatus.CANCEL.code());
// 查询出所有的子订单 就走主订单取消流程 // 查询出所有的子订单 就走主订单取消流程
List<OrderDetail> orderDetails = orderDetailMapper.selectByOrderMasterId(orderDetail.getOrderMasterId()); List<OrderDetail> orderDetails = orderDetailMapper.selectByOrderMasterId(orderDetail.getOrderMasterId());
// 发起退款 // 判断是否是已付款的订单,未付款不需要退款
refund(orderDetail); FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId());
Assert.notNull(financialMaster, "找不到对应的财务单");
if (PayStatus.PAID.getCode().equals(financialMaster.getPayStatus())) {
// 发起退款
refund(orderDetail);
}
// 如果除了这个子订单以外 没有其它未取消的订单 // 如果除了这个子订单以外 没有其它未取消的订单
boolean allCancel = true; boolean allCancel = true;
for (OrderDetail od : orderDetails) { for (OrderDetail od : orderDetails) {