瀏覽代碼

查询设备列表过滤重复uid

locky 9 月之前
父節點
當前提交
9477957626
共有 1 個文件被更改,包括 15 次插入12 次删除
  1. 15 12
      Service/UserDeviceService.py

+ 15 - 12
Service/UserDeviceService.py

@@ -42,21 +42,24 @@ class UserDeviceService:
         dv_qs = dv_qs.values('id', 'userID', 'NickName', 'UID', 'View_Account', 'View_Password', 'ChannelIndex',
                              'Type', 'isShare', 'primaryUserID', 'primaryMaster', 'data_joined', 'vodPrimaryUserID',
                              'vodPrimaryMaster', 'userID__userEmail', 'version', 'isVod', 'isExist', 'NotificationMode',
-                             'isCameraOpenCloud', 'serial_number').order_by('-data_joined')[
-                (page - 1) * line:page * line]
+                             'isCameraOpenCloud', 'serial_number').order_by('-data_joined')
         dv_list = CommonService.qs_to_list(dv_qs)
         uid_list = []
-        exist_uid_list = []
+        seen = set()
+        unique_results = []
+        for item in dv_qs:
+            key = (item['userID'], item['UID'])  # 根据 userID_id 和 UID 进行去重
+            if key not in seen:
+                seen.add(key)
+                unique_results.append(item)
+
+        # 分页操作
+        dv_list = unique_results[(page - 1) * line:page * line]
+        uid_list = [item['UID'] for item in dv_list]
+
+        # 处理 isPrimaryUser
         for item in dv_list:
-            # 过滤重复uid
-            uid = item['UID']
-            if uid not in exist_uid_list:
-                exist_uid_list.append(uid)
-                if item['primaryUserID'] and item['id'] == item['primaryUserID']:
-                    item['isPrimaryUser'] = 1
-                else:
-                    item['isPrimaryUser'] = 0
-                uid_list.append(item['UID'])
+            item['isPrimaryUser'] = 1 if item['primaryUserID'] and item['id'] == item['primaryUserID'] else 0
         return dv_list, uid_list
 
     @classmethod