fix: 统一微信用户定位,修复wechatlogin等UserName(openid)重复1062

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 21:28:23 +08:00
parent 1ffd92758d
commit 39dfe3d52e
3 changed files with 63 additions and 64 deletions

View File

@@ -15,6 +15,7 @@ from jituan.services.club_user import (
ensure_user_club_id,
ensure_wx_openid_binding,
find_user_by_wx_openid,
resolve_or_create_wx_user,
)
from users.business_models import User
from users.models import UserBoss, UserDashou, UserGuanshi, UserShangjia, UserZuzhang, UserShenheguan
@@ -138,34 +139,14 @@ def login_or_register_by_club(code, club_id=None, app_id=None, client_ip=''):
user = User.objects.filter(UserUID=binding.yonghuid).first()
if not user:
user = find_user_by_wx_openid(resolved_club_id, openid)
if user:
ensure_wx_openid_binding(resolved_club_id, openid, user, unionid)
if not user:
user_uuid = uuid.uuid4().bytes
new_uid = _generate_user_uid()
user = User(
UserUUID=user_uuid,
UserUID=new_uid,
UserName=openid,
OpenID=openid if resolved_club_id == CLUB_ID_DEFAULT else None,
UnionID=unionid or None,
ClubID='',
user, created = resolve_or_create_wx_user(
resolved_club_id, openid, _generate_user_uid, unionid=unionid,
)
try:
from django.db import IntegrityError
user.save()
except IntegrityError:
user = find_user_by_wx_openid(resolved_club_id, openid)
if not user:
raise
ensure_wx_openid_binding(resolved_club_id, openid, user, unionid)
else:
created = True
if created:
_ensure_boss_profile(user)
_ensure_consumer_role(user)
ensure_wx_openid_binding(resolved_club_id, openid, user, unionid)
else:
ensure_wx_openid_binding(resolved_club_id, openid, user, unionid)
if unionid and unionid != (user.UnionID or ''):
user.UnionID = unionid