diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java index ac7c2dc15..ac42d9510 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java @@ -457,6 +457,11 @@ public interface OrderBasicInfoService{ */ List queryRepayOrder(String memberId); + /** + * 获取订单已退款金额 + */ + BigDecimal getOrderRefundedAmount(String orderCode); + /** * 通过orderCode获取退款明细列表 * @param orderCode 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 27e9f2c9c..0cec8ec9e 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 @@ -4662,6 +4662,28 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return orderBasicInfoMapper.queryRepayOrder(memberId); } + /** + * 获取订单已退款金额 + */ + @Override + public BigDecimal getOrderRefundedAmount(String orderCode) { + BigDecimal refunded = BigDecimal.ZERO; + OrderBasicInfo orderBasicInfo = getOrderInfoByOrderCode(orderCode); + List orderRefundInfoList = getOrderRefundInfoList(orderBasicInfo); + if (CollectionUtils.isNotEmpty(orderRefundInfoList)) { + // 已退款金额 + refunded = orderRefundInfoList.stream() + .map(x -> Objects.nonNull(x.getReverseAmt()) ? new BigDecimal(x.getReverseAmt()) : BigDecimal.ZERO) + .reduce(BigDecimal.ZERO,BigDecimal::add); + } + return refunded; + } + + /** + * 查询该笔订单的退款记录 + * @param orderCode + * @return + */ @Override public List getOrderRefundInfoList(String orderCode) { OrderBasicInfo orderBasicInfo = getOrderInfoByOrderCode(orderCode); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 5f95264cb..b17dbecaf 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -774,18 +774,18 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { logger.info("执行订单退款-退款金额小于等于0,orderCode:{}, 退款金额:{}", orderBasicInfo.getOrderCode(), refundAmount); return; } - // 查询该笔订单的退款记录 - 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; - } - } + // 查询该笔订单的退款记录 2025年4月23日10点17分此判断移动到具体方法中了 + // 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(); @@ -996,6 +996,13 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { return; } + // 获取订单已退款金额 + BigDecimal orderRefundedAmount = orderBasicInfoService.getOrderRefundedAmount(orderBasicInfo.getOrderCode()); + if (orderRefundedAmount.compareTo(refundAmount) >= 0) { + logger.info("执行订单退款-校验已退款金额,orderCode:{}, 应退款金额:{}, 已经退款金额:{}, 不再执行退款", orderBasicInfo.getOrderCode(), refundAmount, orderRefundedAmount); + return; + } + // 订单编号 String orderCode = orderBasicInfo.getOrderCode(); @@ -1075,6 +1082,14 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { return; } + // 获取已退款金额 + BigDecimal orderRefundedAmount = orderBasicInfoService.getOrderRefundedAmount(orderBasicInfo.getOrderCode()); + if (orderRefundedAmount.compareTo(refundAmount) >= 0) { + logger.info("执行订单退款-校验已退款金额,orderCode:{}, 应退款金额:{}, 已经退款金额:{}, 不再执行退款", orderBasicInfo.getOrderCode(), refundAmount, orderRefundedAmount); + return; + } + + // 微信退款逻辑 ApplyRefundDTO applyRefundDTO = new ApplyRefundDTO(); applyRefundDTO.setOrderCode(orderBasicInfo.getOrderCode());