From 69d91b3fe0118c3a7d90eaa9757c1db5d541d958 Mon Sep 17 00:00:00 2001 From: guke Date: Wed, 24 Jun 2026 17:55:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(wx-cps):=20=E4=BF=AE=E5=A4=8D=20=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1cps=E5=88=86=E5=8F=91=E6=97=B6=E6=B7=98=E5=AE=9D?= =?UTF-8?q?=E8=90=BD=E5=9C=B0=E9=A1=B5=E6=8E=88=E6=9D=83=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=AF=BC=E8=87=B4click=5Fvalue=20=E9=87=8D=E5=A4=8D=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E9=97=AE=E9=A2=98=200624?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/v1/cps_redirect.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/api/v1/cps_redirect.py b/app/api/v1/cps_redirect.py index ee7aa0b..57b5387 100644 --- a/app/api/v1/cps_redirect.py +++ b/app/api/v1/cps_redirect.py @@ -83,7 +83,10 @@ def cps_landing(code: str, request: Request, db: Session = Depends(get_db)): redirect_uri = f"{settings.CPS_REDIRECT_BASE.rstrip('/')}/wx/oauth/cb" auth_url = wx_oauth.build_authorize_url(redirect_uri, "snsapi_base", f"base:{code}") return RedirectResponse(auth_url, status_code=302) - _record(db, link, request, "visit", openid=openid) + # ?authed=1 是 userinfo 授权后的自动回跳重载,不是用户主动打开:visit 已在授权前那次 + # 落地(base 静默授权回来那次)记过,这里再记会让每个走"领券授权"的用户 visit 虚增 1。 + if request.query_params.get("authed") != "1": + _record(db, link, request, "visit", openid=openid) if link.platform == "taobao": activity = db.get(CpsActivity, link.activity_id) image_url = (activity.image_url if activity else None) or _DEFAULT_TAOBAO_IMAGE @@ -201,8 +204,9 @@ function copyToken(){ if(UINFO_URL){location.href=UINFO_URL;return} doCopy(); } -// userinfo 授权回流(?authed=1):自动复制,把"点领券→授权→复制"衔接成一步无感 -if(location.search.indexOf('authed=1')>=0){doCopy()} +// userinfo 授权回流(?authed=1):自动复制,把"点领券→授权→复制"衔接成一步无感; +// 复制后用 replaceState 清掉 authed=1,避免刷新/微信返回(BFCache)重载时重复触发复制上报。 +if(location.search.indexOf('authed=1')>=0){doCopy();history.replaceState(null,'',location.pathname)} """