Browse Source

优化家庭列表查询代码

zhangdongming 3 years ago
parent
commit
c6ab2bbb7b

+ 21 - 16
Controller/SensorGateway/EquipmentFamilyController.py

@@ -567,25 +567,30 @@ class EquipmentFamilyView(View):
                 family_member_qs = FamilyMember.objects.filter(user_id=user_id) \
                 family_member_qs = FamilyMember.objects.filter(user_id=user_id) \
                     .order_by('sort').values('identity', 'family_id', 'family__name', 'permission_id', 'permission__no',
                     .order_by('sort').values('identity', 'family_id', 'family__name', 'permission_id', 'permission__no',
                                              'family__location', 'user__username', 'user__userIconUrl')
                                              'family__location', 'user__username', 'user__userIconUrl')
-                items = []
-                data = {}
-                for item in family_member_qs:
-                    data['familyId'] = item['family_id']
-                    data['identity'] = item['identity']
-                    data['familyName'] = item['family__name']
-                    data['permissionId'] = item['permission_id']
-                    data['permissionNo'] = item['permission__no']
-                    data['familyLocation'] = item['family__location']
-                    data['userName'] = item['user__username']
-                    data['userIconUrl'] = item['user__userIconUrl']
-                    room_qs = FamilyRoom.objects.filter(family_id=data['familyId']).order_by('sort') \
-                        .values('id', 'name')
-                    data['rooms'] = list(room_qs)
-                    items.append(data)
-                    data = {}
+                items = EquipmentFamilyView.family_info_list(family_member_qs)
                 return response.json(0, items)
                 return response.json(0, items)
         return response.json(309)
         return response.json(309)
 
 
+    @staticmethod
+    def family_info_list(family_member_qs):
+        items = []
+        data = {}
+        for item in family_member_qs:
+            data['familyId'] = item['family_id']
+            data['identity'] = item['identity']
+            data['familyName'] = item['family__name']
+            data['permissionId'] = item['permission_id']
+            data['permissionNo'] = item['permission__no']
+            data['familyLocation'] = item['family__location']
+            data['userName'] = item['user__username']
+            data['userIconUrl'] = item['user__userIconUrl']
+            room_qs = FamilyRoom.objects.filter(family_id=data['familyId']).order_by('sort') \
+                .values('id', 'name')
+            data['rooms'] = list(room_qs)
+            items.append(data)
+            data = {}
+        return items
+
     @classmethod
     @classmethod
     def get_family_setting(cls, request_dict, response):
     def get_family_setting(cls, request_dict, response):
         """
         """

+ 6 - 6
Controller/SensorGateway/GatewayDeviceController.py

@@ -11,7 +11,7 @@ from django.db.models import Q
 from django.views.generic.base import View
 from django.views.generic.base import View
 
 
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
-from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice, Device_Info, UserFamily
+from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice, Device_Info, UserFamily, FamilyMember
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 
 
@@ -120,11 +120,11 @@ class GatewayDeviceView(View):
         user_family_qs = UserFamily.objects.filter(user_id=user_id).values()
         user_family_qs = UserFamily.objects.filter(user_id=user_id).values()
         family_list = []
         family_list = []
         if user_family_qs.exists():
         if user_family_qs.exists():
-            for item in user_family_qs:
-                room_qs = FamilyRoom.objects.filter(family_id=item['id']).order_by('sort') \
-                    .values('id', 'name')
-                item['rooms'] = list(room_qs)
-                family_list.append(item)
+            family_member_qs = FamilyMember.objects.filter(user_id=user_id, identity=1) \
+                .order_by('sort').values('identity', 'family_id', 'family__name', 'permission_id', 'permission__no',
+                                         'family__location', 'user__username', 'user__userIconUrl')
+            items = EquipmentFamilyView.family_info_list(family_member_qs)
+            return response.json(0, items)
         return response.json(0, family_list)
         return response.json(0, family_list)
 
 
     @classmethod
     @classmethod