|
|
@@ -1187,19 +1187,24 @@ class AccountService:
|
|
|
except Exception:
|
|
|
pass
|
|
|
else:
|
|
|
- if retry_count < 3:
|
|
|
+ # 区分退避策略:对卡转账走多次退避,支付宝转账仅重试1次
|
|
|
+ is_card_transfer = transfer.payee_type == "BANK_CARD"
|
|
|
+ max_retries = 3 if is_card_transfer else 0
|
|
|
+
|
|
|
+ if retry_count < max_retries:
|
|
|
accumulated = sum(cls._RETRY_INTERVALS[:retry_count + 2])
|
|
|
transfer.retry_count = retry_count + 1
|
|
|
transfer.next_retry_at = transfer.created_time + timedelta(minutes=accumulated)
|
|
|
- log.info(f"[重试任务] out_biz_no={out_biz_no}, retry={retry_count+1}/4, result=DEALING, 下次={transfer.next_retry_at}")
|
|
|
+ log.info(f"[重试任务] out_biz_no={out_biz_no}, payee_type={transfer.payee_type}, retry={retry_count+1}/{max_retries+1}, result=DEALING, 下次={transfer.next_retry_at}")
|
|
|
processed += 1
|
|
|
else:
|
|
|
transfer.status = TransferStatusEnum.FAIL.value
|
|
|
transfer.retry_count = 4
|
|
|
transfer.next_retry_at = None
|
|
|
- transfer.error_msg = "反查超时判定为失败"
|
|
|
+ fail_reason = "反查超时判定为失败" if is_card_transfer else "支付宝转账仅重试1次仍DEALING"
|
|
|
+ transfer.error_msg = fail_reason
|
|
|
processed += 1
|
|
|
- log.info(f"[重试任务] out_biz_no={out_biz_no}, retry=4/4次DEALING, 超时判FAIL")
|
|
|
+ log.info(f"[重试任务] out_biz_no={out_biz_no}, payee_type={transfer.payee_type}, retry={retry_count+1}/{max_retries+1}次DEALING, 判FAIL: {fail_reason}")
|
|
|
try:
|
|
|
auth = AuthSchema(db=db, check_data_scope=False, tenant_id=transfer.tenant_id)
|
|
|
await OpenTransferService.open_return_service(auth, order_no or out_biz_no)
|