diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index 348a18624..d57aef436 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -904,6 +904,21 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("订单支付金额小于等于0: " + wxOrder.toString()); throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO); } + + //抖音可能会重复推送,如果是待退款状态,则表示,之前已经回调成功了。无需再次执行下面的逻辑,直接查询就行 + if (EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode().equals(wxOrder.getOrderStatus())) { + WxRefundOrder refundOrderQuery = new WxRefundOrder(); + refundOrderQuery.updateTenantInfo(tenantEntity); + refundOrderQuery.setOrderId(wxOrder.getId()); + refundOrderQuery.setTransactionId(refundOrderCallback.getOrderId()); + List rflist = wxRefundOrderMapper.findList(refundOrderQuery); + if (null == rflist || rflist.size() <= 0 ) { + logger.error("该订单无退款记录:" + wxOrder.getId()); + throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO.getCode(),"该订单无退款记录"); + } + return new ResultData(Result.SUCCESS, "退款订单申请成功", rflist.get(0)); + } + if(!EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode().equals(wxOrder.getOrderStatus()) && !EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode().equals(wxOrder.getOrderStatus())){ logger.error("交易订单状态不支持退款:" + EnumOrderStatus.getEnum(wxOrder.getOrderStatus()).getMessage());