退款金额小于等于0, 不执行退款

This commit is contained in:
Guoqs
2025-04-02 11:15:22 +08:00
parent 7b88280d14
commit 2a660e31e5

View File

@@ -769,9 +769,9 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
@Override
public void refundOrder(OrderBasicInfo orderBasicInfo) {
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
// 如果退款金额小于0, 不执行退款
if (refundAmount.compareTo(BigDecimal.ZERO) < 0) {
logger.info("执行订单退款-退款金额小于0orderCode:{}, 退款金额:{}", orderBasicInfo.getOrderCode(), refundAmount);
// 如果退款金额小于等于0, 不执行退款
if (refundAmount == null || refundAmount.compareTo(BigDecimal.ZERO) <= 0) {
logger.info("执行订单退款-退款金额小于等于0orderCode:{}, 退款金额:{}", orderBasicInfo.getOrderCode(), refundAmount);
return;
}
// 查询该笔订单的退款记录
@@ -987,23 +987,38 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
@Transactional(rollbackFor = Exception.class)
public void balancePaymentOrderRefund(OrderBasicInfo orderBasicInfo) {
logger.info("【{}】-余额支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo));
// 需要退款的金额
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
// 如果退款金额小于等于0, 不执行退款
if (refundAmount == null || refundAmount.compareTo(BigDecimal.ZERO) <= 0) {
logger.info("balancePaymentOrderRefund-退款金额小于等于0orderCode:{}, 退款金额:{}", orderBasicInfo.getOrderCode(), refundAmount);
return;
}
// 订单编号
String orderCode = orderBasicInfo.getOrderCode();
// 运营商id
String merchantId = orderBasicInfo.getMerchantId();
// 订单消费金额
BigDecimal orderAmount = orderBasicInfo.getOrderAmount();
// 查支付记录
List<OrderPayRecord> payRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
// 根据payMode分组
Map<String, List<OrderPayRecord>> payRecordMap = payRecordList.stream()
.collect(Collectors.groupingBy(OrderPayRecord::getPayMode));
// 获取本金支付的记录
List<OrderPayRecord> principalPayRecordList = payRecordMap.get(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue());
BigDecimal principalPay = null;
if (CollectionUtils.isNotEmpty(principalPayRecordList)) {
principalPay = principalPayRecordList.stream().map(OrderPayRecord::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
}
// 获取赠送金支付的记录
List<OrderPayRecord> giftPayRecordList = payRecordMap.get(OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue());
BigDecimal giftPay = null;
@@ -1020,6 +1035,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
// 需要退回本金的金额
BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal");
// 需要退回赠送金的金额
BigDecimal returnGift = returnAmountMap.get("returnGift");
@@ -1049,15 +1065,19 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
*/
private void onlinePaymentOrderRefund(OrderBasicInfo orderBasicInfo) {
logger.info("【{}】-在线支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo));
// 订单编号
String orderCode = orderBasicInfo.getOrderCode();
// 需要退款的金额
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
// 如果退款金额小于等于0, 不执行退款
if (refundAmount == null || refundAmount.compareTo(BigDecimal.ZERO) <= 0) {
logger.info("onlinePaymentOrderRefund-退款金额小于等于0orderCode:{}, 退款金额:{}", orderBasicInfo.getOrderCode(), refundAmount);
return;
}
// 微信退款逻辑
ApplyRefundDTO applyRefundDTO = new ApplyRefundDTO();
applyRefundDTO.setOrderCode(orderCode);
applyRefundDTO.setOrderCode(orderBasicInfo.getOrderCode());
applyRefundDTO.setRefundType(Constants.ONE);
applyRefundDTO.setRefundAmount(refundAmount);