fix: bind kefu role by yonghuid when phone duplicated
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user