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

新增家庭设备排序接口

locky 3 жил өмнө
parent
commit
aa2032df97

+ 25 - 1
Controller/SensorGateway/GatewayFamilyRoomController.py

@@ -52,6 +52,8 @@ class GatewayFamilyRoomView(View):
             return self.get_room_details(app_user_id, request_dict, response)
         elif operation == 'all-devices':    # 家庭所有设备
             return self.all_devices(request_dict, response)
+        elif operation == 'devices-sort':    # 家庭设备排序
+            return self.devices_sort(request_dict, response)
 
     @classmethod
     def room_device_save(cls, app_user_id, request_dict, response):
@@ -212,7 +214,7 @@ class GatewayFamilyRoomView(View):
                 annotate(device_id=F('device__id'), type=F('device__Type'), nickname=F('device__NickName')).\
                 values('device_id', 'type', 'nickname', 'room_id').order_by('sort')
             if not family_room_device_qs.exists():
-                return response.json(0)
+                return response.json(0, [])
             # 查询房间名称
             for device in family_room_device_qs:
                 room_id = device['room_id']
@@ -225,3 +227,25 @@ class GatewayFamilyRoomView(View):
             return response.json(0, list(family_room_device_qs))
         except Exception as e:
             return response.json(500, repr(e))
+
+    @staticmethod
+    def devices_sort(request_dict, response):
+        """
+        家庭设备排序
+        @param request_dict: 请求参数
+        @request_dict 设备id: deviceIds
+        @param response: 响应参数
+        @return:
+        """
+        device_ids = request_dict.get('deviceIds', None)
+        if not device_ids:
+            return response.json(444)
+        try:
+            device_ids = device_ids.split(',')
+            with transaction.atomic():
+                for i, item in enumerate(device_ids):
+                    device_id = int(item)
+                    FamilyRoomDevice.objects.filter(device_id=device_id).update(sort=i)
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, repr(e))