diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index af229eea8..6b26af1cc 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -3593,6 +3593,11 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return getOrderRefundInfoList(orderBasicInfo); } + /** + * 查询该笔订单的退款记录 + * @param orderBasicInfo + * @return + */ @Override public List getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) { if (orderBasicInfo == null) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java index 14ecab20c..09da065de 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java @@ -415,6 +415,20 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic { @Override public void refundOrder(OrderBasicInfo orderBasicInfo) { + BigDecimal refundAmount = orderBasicInfo.getRefundAmount(); + // 查询该笔订单的退款记录 + List orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); + if (CollectionUtils.isNotEmpty(orderRefundInfoList)) { + // 已退款金额 + BigDecimal refunded = orderRefundInfoList.stream() + .map(x -> Objects.nonNull(x.getReverseAmt()) ? new BigDecimal(x.getReverseAmt()) : BigDecimal.ZERO) + .reduce(BigDecimal.ZERO,BigDecimal::add); + if (refunded.compareTo(refundAmount) >= 0) { + logger.info("执行订单退款-校验已退款金额,orderCode:{}, 应退款金额:{}, 已经退款金额:{}, 不再执行退款", orderBasicInfo.getOrderCode(), refundAmount, refunded); + return; + } + } + try { String payMode = orderBasicInfo.getPayMode(); if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) { @@ -424,8 +438,8 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic { // 微信支付 onlinePaymentOrderRefund(orderBasicInfo); } else { - // 白名单支付 - logger.info("订单:{}使用白名单支付,不进行退款处理", orderBasicInfo.getOrderCode()); + // 白名单支付或者ETC支付 + logger.info("订单:{}使用:{},不进行退款处理", orderBasicInfo.getOrderCode(), OrderPayModeEnum.getPayModeDescription(payMode)); } } catch (Exception e) { logger.error("{}-订单退款逻辑异常orderCode:{}", this.getClass().getSimpleName(), orderBasicInfo.getOrderCode(), e);