This commit is contained in:
2024-03-06 15:04:42 +08:00
parent 19620d6d09
commit 1b9efc500e
2 changed files with 21 additions and 2 deletions

View File

@@ -3593,6 +3593,11 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
return getOrderRefundInfoList(orderBasicInfo);
}
/**
* 查询该笔订单的退款记录
* @param orderBasicInfo
* @return
*/
@Override
public List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) {
if (orderBasicInfo == null) {

View File

@@ -415,6 +415,20 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic {
@Override
public void refundOrder(OrderBasicInfo orderBasicInfo) {
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
// 查询该笔订单的退款记录
List<OrderDetailInfoVO.OrderRefundInfo> 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);