订单退款时校验已经退款金额

This commit is contained in:
2024-02-22 10:21:35 +08:00
parent 8ff5e15a5d
commit 5c75b981a4
5 changed files with 75 additions and 21 deletions

View File

@@ -416,8 +416,28 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
}
}
/**
* 执行订单退款
* @param orderBasicInfo
*/
@Override
public void refundOrder(OrderBasicInfo orderBasicInfo) {
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
// 查询该笔订单的退款记录
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo);
if (CollectionUtils.isNotEmpty(orderRefundInfoList)) {
// 已退款金额
BigDecimal refunded = BigDecimal.ZERO;
for (OrderDetailInfoVO.OrderRefundInfo orderRefundInfo : orderRefundInfoList) {
BigDecimal reverseAmt = new BigDecimal(orderRefundInfo.getReverseAmt());
refunded = refunded.add(reverseAmt);
}
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())) {