修正864联调中的真实路由与二维码状态同步
- 按 864 router.go 修正联系人详情与群公告的真实接口路径 - 结合 CheckLoginStatus 返回结构补充 uuid 与 effective_time 同步,支持 Dashboard 倒计时与二维码自动刷新 - 更新多版本适配路线图,记录首轮 864 实服联调结论
This commit is contained in:
@@ -137,13 +137,24 @@ class Server864RuntimeMixin:
|
||||
)
|
||||
break
|
||||
|
||||
# 864 的登录状态查询会回传当前 uuid 和有效期:
|
||||
# 1. 真实联调中已确认 `CheckLoginStatus` 会返回 `uuid/effective_time`;
|
||||
# 2. 这些值应优先作为 Dashboard 的二维码倒计时与当前扫码目标来源;
|
||||
# 3. 一旦 server 侧切换了新的 uuid,这里也要及时覆盖本地展示态,避免前端一直盯着旧码。
|
||||
latest_uuid = str(login_status.get("uuid", "") or uuid).strip() or uuid
|
||||
effective_time = int(login_status.get("effective_time", 0) or 0)
|
||||
if latest_uuid != uuid:
|
||||
uuid = latest_uuid
|
||||
scan_url = f"http://weixin.qq.com/x/{uuid}" if uuid else ""
|
||||
url = f"https://api.2dcode.biz/v1/create-qr-code?data={scan_url}" if scan_url else url
|
||||
|
||||
await self._safe_callback(
|
||||
on_login_qr_update,
|
||||
{
|
||||
"uuid": uuid,
|
||||
"url": url,
|
||||
"scan_url": scan_url,
|
||||
"expires_in": None,
|
||||
"expires_in": effective_time if effective_time > 0 else None,
|
||||
"status": "waiting",
|
||||
"status_text": str(login_status.get("msg") or login_status.get("loginState") or "等待扫码登录"),
|
||||
"login_source": "fresh_qr",
|
||||
@@ -151,6 +162,28 @@ class Server864RuntimeMixin:
|
||||
logger=logger,
|
||||
callback_name="on_login_qr_update",
|
||||
)
|
||||
|
||||
# 若 server 已明确告知二维码失效,则立即重新申请一张新码:
|
||||
# 1. 这能避免 Dashboard 一直展示一张已经不可扫的旧二维码;
|
||||
# 2. 也能让新环境登录时的交互与 855 保持一致,都是“过期就自动刷新”;
|
||||
# 3. 重新申请后直接回到当前 while 顶部继续轮询新的 uuid 状态。
|
||||
if effective_time <= 0:
|
||||
uuid, url = await self.get_qr_code(print_qr=True)
|
||||
scan_url = f"http://weixin.qq.com/x/{uuid}" if uuid else ""
|
||||
await self._safe_callback(
|
||||
on_login_qr_update,
|
||||
{
|
||||
"uuid": uuid,
|
||||
"url": url,
|
||||
"scan_url": scan_url,
|
||||
"expires_in": None,
|
||||
"status": "waiting",
|
||||
"status_text": "二维码已刷新,等待扫码登录",
|
||||
"login_source": "refresh_qr",
|
||||
},
|
||||
logger=logger,
|
||||
callback_name="on_login_qr_update",
|
||||
)
|
||||
await asyncio.sleep(5)
|
||||
|
||||
await self._wait_init_ready(logger=logger)
|
||||
|
||||
Reference in New Issue
Block a user