|
|
@@ -1104,6 +1104,10 @@ class AccountService:
|
|
|
update_data["fund_order_id"] = api_fund_order_id
|
|
|
if api_amount:
|
|
|
update_data["amount"] = Decimal(str(api_amount))
|
|
|
+ if alipay_status == "FAIL":
|
|
|
+ sub_msg = getattr(result, 'sub_msg', '') or getattr(result, 'msg', '') or ''
|
|
|
+ if sub_msg:
|
|
|
+ update_data["remark"] = sub_msg
|
|
|
|
|
|
upd = sa_update(TransferModel).where(
|
|
|
TransferModel.out_biz_no == out_biz_no
|
|
|
@@ -1114,7 +1118,7 @@ class AccountService:
|
|
|
|
|
|
|
|
|
# ─────────── 退避时间映射 ───────────
|
|
|
- _RETRY_INTERVALS = [5, 10, 30, 60] # 分钟: retry_count 0→1, 1→2, 2→3, 3 判 FAIL
|
|
|
+ _RETRY_INTERVALS = [10, 30, 60] # 分钟: retry_count 0→1, 1→2, 2→3, 3 判 FAIL
|
|
|
|
|
|
@classmethod
|
|
|
async def retry_dealing_transfers(cls) -> dict:
|
|
|
@@ -1184,16 +1188,16 @@ class AccountService:
|
|
|
pass
|
|
|
else:
|
|
|
if retry_count < 3:
|
|
|
- accumulated = sum(cls._RETRY_INTERVALS[:retry_count + 2])
|
|
|
+ interval = cls._RETRY_INTERVALS[retry_count]
|
|
|
transfer.retry_count = retry_count + 1
|
|
|
- transfer.next_retry_at = transfer.created_time + timedelta(minutes=accumulated)
|
|
|
+ transfer.next_retry_at = datetime.now() + timedelta(minutes=interval)
|
|
|
log.info(f"[重试任务] out_biz_no={out_biz_no}, retry={retry_count+1}/4, 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 = "反查超时判定为失败"
|
|
|
+ transfer.remark = "反查超时判定为失败"
|
|
|
processed += 1
|
|
|
log.info(f"[重试任务] out_biz_no={out_biz_no}, retry=4/4次DEALING, 超时判FAIL")
|
|
|
try:
|