Эх сурвалжийг харах

优化查询所有代理云服务套餐返回列表(支持模糊查询)

linhaohong 1 жил өмнө
parent
commit
b1867bf8b7

+ 45 - 14
AdminController/CloudServiceManage/AgentCustomerController.py

@@ -354,25 +354,49 @@ class AgentCustomerView(View):
         # 接收分页参数
         page = int(request_dict.get('page', 1))
         page_size = int(request_dict.get('page_size', 10))
+        search_query = request_dict.get('search_query', '')
+        user_id = request_dict.get('user_id', None)
+        phone = request_dict.get('phone', None)
+        userEmail = request_dict.get('userEmail', None)
 
-        # 查询AgentCustomerInfo表以获取代理商基本信息
-        agent_infos = AgentCustomerInfo.objects.filter(status=1).values(
-            'id', 'user_id', 'company_name'
-        ).order_by('id')
         try:
-            # 使用Paginator进行分页处理
+            # 基础查询条件
+            agent_infos_query = AgentCustomerInfo.objects.filter(status=1)
+
+            # 精确查询条件
+            if user_id:
+                agent_infos_query = agent_infos_query.filter(user_id=user_id)
+
+            # 获取所有符合条件的AgentCustomerInfo记录
+            agent_infos = agent_infos_query.values('id', 'user_id', 'company_name').order_by('id')
+
+            # 对结果进行分页
             paginator = Paginator(agent_infos, page_size)
-            # 获取请求页的数据
             packages_page = paginator.page(page)
+
             # 准备最终的代理商列表
             agents_list = []
             for agent_info in packages_page:
-                # 查询Device_User表获取用户信息
-                user_info = Device_User.objects.filter(userID=agent_info['user_id']).values('phone',
-                                                                                            'userEmail').first()
-                # 查询AgentCustomerCard表获取卡信息
-                card_info = AgentCustomerCard.objects.filter(ac_id=agent_info['id']).values('name', 'card_no',
-                                                                                            'card_address').first()
+                # 模糊查询
+                if search_query:
+                    card_info_query = AgentCustomerCard.objects.filter(ac_id=agent_info['id'],
+                                                                       name__icontains=search_query)
+                    if not card_info_query.exists() and search_query not in agent_info['company_name']:
+                        continue
+                else:
+                    card_info_query = AgentCustomerCard.objects.filter(ac_id=agent_info['id'])
+
+                # 获取卡信息
+                card_info = card_info_query.values('name', 'card_no', 'card_address').first()
+
+                # 获取用户信息,根据需要进行精确查询
+                user_info_query = Device_User.objects.filter(userID=agent_info['user_id'])
+                if phone:
+                    user_info_query = user_info_query.filter(phone=phone)
+                if userEmail:
+                    user_info_query = user_info_query.filter(userEmail=userEmail)
+
+                user_info = user_info_query.values('phone', 'userEmail').first()
 
                 # 组合信息
                 agent_record = {
@@ -386,8 +410,15 @@ class AgentCustomerView(View):
                     'card_address': card_info.get('card_address') if card_info else None,
                 }
                 agents_list.append(agent_record)
-            return response.json(0, {'page': page, 'page_size': page_size, 'total': paginator.count,
-                                     'num_pages': paginator.num_pages, 'list': agents_list})
+
+            # 返回分页后的结果
+            return response.json(0, {
+                'page': page,
+                'page_size': page_size,
+                'total': paginator.count,
+                'num_pages': paginator.num_pages,
+                'list': agents_list
+            })
         except Exception as e:
             print(e)
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))