From 177d082d801d9345b76b04df8a906ad18695a1f0 Mon Sep 17 00:00:00 2001 From: XingQue Date: Thu, 18 Jun 2026 09:47:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=9C=8D=E7=99=BB=E5=BD=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20KefuLoginView=EF=BC=88/yonghu/kefujinru=EF=BC=89?= =?UTF-8?q?=E5=B7=B2=E4=BF=AE=E5=A4=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- users/views.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/users/views.py b/users/views.py index 238c977..c1c7b4a 100644 --- a/users/views.py +++ b/users/views.py @@ -6727,14 +6727,12 @@ class KefuLoginView(APIView): # 2. 获取客户端真实IP client_ip = self.get_client_ip(request) - # 3. 查询所有手机号匹配且类型为客服的用户 - # 注意:User 中需要有 user_type 字段,且值为 'kefu' 代表客服 - user_mains = User.query.filter( - phone=phone, - user_type='kefu' # 只查找客服账号 - ).select_related('kefu_profile') # 预加载客服扩展表 + # 3. 查询该手机号下所有客服账号(GVSDSDK User 字段为 Phone,客服在 user_kefu 表) + kefu_candidates = UserKefu.query.filter( + user__Phone=phone, + ).select_related('user') - if not user_mains.exists(): + if not kefu_candidates.exists(): logger.warning(f"登录失败,手机号不存在或非客服: {phone}, IP: {client_ip}") return Response({ 'code': 1, @@ -6742,19 +6740,14 @@ class KefuLoginView(APIView): 'data': None }, status=status.HTTP_400_BAD_REQUEST) - # 4. 遍历所有匹配的用户,验证密码和二级密码 + # 4. 遍历所有匹配的客服账号,验证密码和二级密码 target_user = None target_kefu = None - for user in user_mains: + for kefu in kefu_candidates: + user = kefu.user # 验证主密码(明文比较,按您的要求) - if user.password != password: - continue - - # 检查是否存在客服扩展表 - try: - kefu = user.kefu_profile - except UserKefu.DoesNotExist: + if user.UserPassword != password: continue # 验证二级密码(明文比较)