fix: User.ClubID默认xq导致星之界新用户误判,创建时置空并以wx绑定为准

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 18:34:45 +08:00
parent d025287785
commit ad33ee6c86
4 changed files with 29 additions and 16 deletions

View File

@@ -13,23 +13,30 @@ def resolve_invite_party_club(user, request_club_id=None):
if not user:
return None
explicit = (getattr(user, 'ClubID', None) or '').strip()
if explicit:
return explicit
uid = getattr(user, 'UserUID', None) or getattr(user, 'yonghuid', None)
if not uid:
return None
req = (request_club_id or '').strip()
if req:
hit = UserWxOpenid.query.filter(yonghuid=uid, club_id=req).first()
if hit:
# 当前小程序 openid 绑定优先ClubID 字段曾默认 xq会误判新用户
if req and uid:
if UserWxOpenid.query.filter(yonghuid=uid, club_id=req).exists():
return req
binding = UserWxOpenid.query.filter(yonghuid=uid).order_by('id').first()
if binding:
return binding.club_id
explicit = (getattr(user, 'ClubID', None) or '').strip()
if explicit:
if explicit == CLUB_ID_DEFAULT and uid:
has_real_xq = (
UserWxOpenid.query.filter(yonghuid=uid, club_id=CLUB_ID_DEFAULT).exists()
or bool(getattr(user, 'OpenID', None))
)
if not has_real_xq:
explicit = ''
if explicit:
return explicit
if uid:
binding = UserWxOpenid.query.filter(yonghuid=uid).order_by('id').first()
if binding:
return binding.club_id
return None

View File

@@ -151,6 +151,7 @@ def login_or_register_by_club(code, club_id=None, app_id=None, client_ip=''):
UserName=openid,
OpenID=openid if resolved_club_id == CLUB_ID_DEFAULT else None,
UnionID=unionid or None,
ClubID='',
)
try:
from django.db import IntegrityError