diff --git a/alembic/versions/bcfcaf07152b_merge_meituan_coupon_image_meta_and_.py b/alembic/versions/bcfcaf07152b_merge_meituan_coupon_image_meta_and_.py new file mode 100644 index 0000000..31a5378 --- /dev/null +++ b/alembic/versions/bcfcaf07152b_merge_meituan_coupon_image_meta_and_.py @@ -0,0 +1,26 @@ +"""merge meituan_coupon_image_meta and comparison/ad heads + +Revision ID: bcfcaf07152b +Revises: 4dc2af7ebe74, meituan_coupon_image_meta +Create Date: 2026-06-24 20:34:09.475641 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'bcfcaf07152b' +down_revision: Union[str, Sequence[str], None] = ('4dc2af7ebe74', 'meituan_coupon_image_meta') +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass 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)} """