fix: bind kefu role by yonghuid when phone duplicated

This commit is contained in:
XingQue
2026-06-28 23:18:14 +08:00
parent de91089743
commit 218001399c
4 changed files with 22 additions and 7 deletions

View File

@@ -85,3 +85,18 @@ def user_bound_role_names(user):
return list(
Role.objects.filter(RoleUUID__in=uuids, RoleStatus=1).values_list('RoleName', flat=True)
)
def resolve_kefu_admin_user(yonghuid=None, phone=None):
"""定位后台客服 User优先 yonghuid同手机号多账号时必须用 ID"""
from users.business_models import User
uid = (yonghuid or '').strip()
if uid:
user = User.objects.filter(UserUID=uid, KefuProfile__isnull=False).first()
if user:
return user
ph = (phone or '').strip()
if not ph:
return None
return User.objects.filter(Phone=ph, KefuProfile__isnull=False).order_by('-UserCreateTime').first()

View File

@@ -134,6 +134,7 @@ def build_menu_access_payload(request, username=None):
'visible_paths': visible_paths,
'permission_codes': _permission_codes_list(permissions),
'role_names': user_bound_role_names(request.user),
'yonghuid': getattr(request.user, 'UserUID', '') or '',
'can_switch_club': bool(club_ctx.get('can_switch_club')),
'is_group_admin': bool(club_ctx.get('is_group_admin')),
'menu_ready': True,

View File

@@ -171,6 +171,7 @@ class ClubKefuLoginView(APIView):
'visible_paths': [],
'permission_codes': [],
'role_names': [],
'yonghuid': target_user.UserUID or '',
'can_switch_club': False,
'is_group_admin': False,
'menu_ready': False,