diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java index 6772f803..9f5f5849 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java @@ -149,8 +149,10 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService Assert.notNull(orderMaster, "找不到对应的订单"); FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId()); Assert.notNull(financialMaster, "找不到支付记录"); - Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员"); - Assert.isTrue(PayStatus.PAID.getCode().equals(financialMaster.getPayStatus()), "订单未支付"); +// Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员"); +// Assert.isTrue(PayStatus.PAID.getCode().equals(financialMaster.getPayStatus()), "订单未支付"); + // 是否已付款,用于判断是否需要退款 + boolean payReverse = PayStatus.PAID.getCode().equals(financialMaster.getPayStatus()); // 申请退款金额 BigDecimal refundMoney; if (ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())) { @@ -190,7 +192,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService financialMasterService.updateFinancialMaster(financialMaster); // 发起支付撤销 - payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); + if(payReverse){ + payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); + } } else { // 如果退款金额 < 主单服务金额 afterServiceRecord.setOriginalRefund(refundMoney); @@ -199,7 +203,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService financialMasterService.updateFinancialMaster(financialMaster); String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney); // 发起支付撤销 - payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); + if(payReverse){ + payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); + } } } else { // 是子师傅的子单 退款金额最大可以等于子单的派单金额 @@ -216,8 +222,11 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService financialDetailService.updateFinancialDetail(financialDetail); // 发起支付撤销 - String reverseAmt = AdapayUtils.bigDecimalToString(financialMaster.getServerMoney()); - payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); + if(payReverse){ + String reverseAmt = AdapayUtils.bigDecimalToString(financialMaster.getServerMoney()); + payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt); + } + } } afterServiceRecord.setRefundApplyTime(new Date()); diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index ca36098b..57290018 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -256,9 +256,13 @@ public class OrderDetailServiceImpl implements OrderDetailService { logger.info("Set OrderDetail[{}].orderStatus = {}", orderDetailId, OrderStatus.CANCEL.code()); // 查询出所有的子订单 就走主订单取消流程 List 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; for (OrderDetail od : orderDetails) {