fix: User.ClubID默认xq导致星之界新用户误判,创建时置空并以wx绑定为准
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user