Browse Source

优化查询定制UID池及其设备绑定关系接口

linhaohong 3 months ago
parent
commit
46d543acfd
1 changed files with 18 additions and 7 deletions
  1. 18 7
      AdminController/CloudServiceManage/AgentDeviceController.py

+ 18 - 7
AdminController/CloudServiceManage/AgentDeviceController.py

@@ -395,7 +395,7 @@ class AgentDeviceView(View):
             page = int(request_dict.get('page', 1))
             page = int(request_dict.get('page', 1))
             page_size = int(request_dict.get('pageSize', 20))
             page_size = int(request_dict.get('pageSize', 20))
 
 
-            # 查询 CustomUIDPool(主表)
+            # 查询 CustomUIDPool
             custom_uid_pool_qs = CustomUIDPool.objects.all().order_by('-created_time')
             custom_uid_pool_qs = CustomUIDPool.objects.all().order_by('-created_time')
 
 
             # 应用筛选条件
             # 应用筛选条件
@@ -417,6 +417,22 @@ class AgentDeviceView(View):
             paginator = Paginator(custom_uid_pool_qs, page_size)
             paginator = Paginator(custom_uid_pool_qs, page_size)
             custom_uid_pool_page = paginator.page(page)
             custom_uid_pool_page = paginator.page(page)
 
 
+            # 获取当前页的所有UID,用于批量查询设备绑定信息
+            uid_list = [custom_uid.uid for custom_uid in custom_uid_pool_page]
+
+            # 批量查询所有设备绑定信息(减少查询次数)
+            device_bindings_map = {}
+            if uid_list:
+                bindings = DeviceCustomUID.objects.filter(uid__in=uid_list)
+                for binding in bindings:
+                    if binding.uid not in device_bindings_map:
+                        device_bindings_map[binding.uid] = []
+                    device_bindings_map[binding.uid].append({
+                        'device_mac': binding.device_mac,
+                        'binding_status': binding.status,
+                        'binding_time': binding.created_time,
+                    })
+
             # 构造返回数据
             # 构造返回数据
             uid_list = []
             uid_list = []
             for custom_uid in custom_uid_pool_page:
             for custom_uid in custom_uid_pool_page:
@@ -430,12 +446,7 @@ class AgentDeviceView(View):
                     'uid_status': custom_uid.status,  # UID池状态
                     'uid_status': custom_uid.status,  # UID池状态
                     'created_time': custom_uid.created_time,
                     'created_time': custom_uid.created_time,
                     'updated_time': custom_uid.updated_time,
                     'updated_time': custom_uid.updated_time,
-                    # 设备绑定信息(如果有)
-                    'device_binding': {
-                        'device_mac': device_binding.device_mac if device_binding else None,
-                        'binding_status': device_binding.status if device_binding else None,
-                        'binding_time': device_binding.created_time if device_binding else None,
-                    } if device_binding else None,
+                    'device_bindings': device_bindings_map.get(custom_uid.uid, []),
                 })
                 })
 
 
             # 返回分页结果
             # 返回分页结果