Browse Source

获取未添加房间设备,家庭设置接口,家庭成员删除接口,成员权限修改。

zhangdongming 3 years ago
parent
commit
7b2e67bba0
1 changed files with 124 additions and 43 deletions
  1. 124 43
      SensorGateway/EquipmentFamilyController.py

+ 124 - 43
SensorGateway/EquipmentFamilyController.py

@@ -55,9 +55,9 @@ class EquipmentFamilyView(View):
         # 手机端添加设备,查询,修改
         if operation == 'add':
             return self.do_save(user_id, request_dict, response, request)
-        # 分页获取设备
-        if operation == 'page':
-            return self.do_device_page(user_id, request_dict, response)
+        # 分页获取未添加房间设备
+        if operation == 'family-device-query':
+            return self.get_device_not_in_room(user_id, request_dict, response)
         # 条件查询设备列表
         if operation == 'query':
             return self.do_device_query(user_id, request_dict, response)
@@ -67,16 +67,24 @@ class EquipmentFamilyView(View):
         # 家庭保存
         if operation == 'family-save':
             return self.family_save(user_id, request_dict, response)
+        # 家庭设置
+        if operation == 'family-setting':
+            return self.get_family_setting(user_id, request_dict, response)
+        # 家庭成员删除
+        if operation == 'member-del':
+            return self.family_member_del(user_id, request_dict, response)
         # 获取房间列表
         if operation == 'room-list':
             return self.get_family_room_list(request_dict, response)
         # 房间保存
         if operation == 'room-save':
             return self.room_save(request_dict, response)
-        if operation == 'room-sort':
-            return self.room_sort_save(request_dict, response)
+        # 权限列表
         if operation == 'permission-list':
             return self.get_member_permission_list(user_id, request_dict, response)
+        # 成员权限修改
+        if operation == 'permission-update':
+            return self.changes_member_permission(user_id, request_dict, response)
         else:
             return response.json(414)
 
@@ -140,39 +148,23 @@ class EquipmentFamilyView(View):
             return response.json(177, repr(e))
 
     @classmethod
-    def do_device_page(cls, user_id, request_dict, response):
+    def get_device_not_in_room(cls, user_id, request_dict, response):
         """
-        查询设备列表
-        @param user_id:
+        获取不在房间的设备
+        @param user_id: 用户id
         @param request_dict:
         @param response:
         @return:
         """
         page_no = request_dict.get('pageNo', None)
         page_size = request_dict.get('pageSize', None)
-        if not all([page_no, page_size]):
+        family_id = request_dict.get('familyId', None)
+        if not all([page_no, page_size, family_id]):
             return response.json(444)
-
-        page = int(page_no)
-        line = int(page_size)
-        device_info_qs = Device_Info.objects.filter(userID=user_id)
-        device_info_qs = device_info_qs.filter(~Q(isExist=0))
-        total = device_info_qs.count()
-        device_info_qs = device_info_qs.values("id", "userID_id", "NickName", "Type", "serial_number",
-                                               "data_joined",
-                                               "update_time")[(page - 1) * line: page * line]
-        data = []
-        for item in device_info_qs:
-            data.append({
-                'id': item['id'],
-                'userId': item['userID_id'],
-                'nickName': item['NickName'],
-                'type': item['Type'],
-                'serialNumber': item['serial_number'],
-                'dataJoined': item['data_joined'].strftime("%Y-%m-%d %H:%M:%S"),
-                'updateTime': item['update_time'].strftime("%Y-%m-%d %H:%M:%S")
-            })
-        return response.json(0, {'list': data, 'total': total})
+        page_no = int(page_no)
+        page_size = int(page_size)
+        device_list = cls.get_family_device_list(user_id, page_no, page_size, family_id, 0)
+        return response.json(0, device_list)
 
     @classmethod
     def do_device_query(cls, user_id, request_dict, response):
@@ -487,7 +479,7 @@ class EquipmentFamilyView(View):
     @classmethod
     def get_family_list(cls, user_id, request_dict, response):
         """
-        查询家庭列表
+        查询我的家庭列表
         @param user_id: 用户id
         @param request_dict: 请求
         @param response: 响应
@@ -530,9 +522,50 @@ class EquipmentFamilyView(View):
                     data['userName'] = item['user__username']
                     data['userIconUrl'] = item['user__userIconUrl']
                     items.append(data)
+                    data = {}
                 return response.json(0, items)
         return response.json(309)
 
+    @classmethod
+    def get_family_setting(cls, user_id, request_dict, response):
+        """
+        家庭设置
+        @param user_id: 用户id
+        @param request_dict: 请求
+        @param response: 响应
+        @return: 家庭列表items
+        """
+        family_id = request_dict.get('familyId', None)
+        if not family_id:
+            return response.json(444)
+        user_family_qs = UserFamily.objects.filter(id=family_id, user_id=user_id).values('id', 'name', 'location')
+        if not user_family_qs.exists():
+            return response.json(404)
+        family_dict = user_family_qs.first()
+        family_dict['roomCount'] = FamilyRoom.objects.filter(family_id=family_id).count()
+
+        family_member_qs = FamilyMember.objects.filter(family_id=family_id)
+        family_member_qs = family_member_qs.values('identity', 'family_id',
+                                                   'permission_id',
+                                                   'permission__no',
+                                                   'user__username',
+                                                   'user_id',
+                                                   'user__userIconUrl')
+        family_member_qs = family_member_qs.order_by('-identity').order_by('sort')
+        items = []
+        data = {}
+        for item in family_member_qs:
+            data['userName'] = item['user__username']
+            data['userIconUrl'] = item['user__userIconUrl']
+            data['userId'] = item['user_id']
+            data['identity'] = item['identity']
+            data['permissionId'] = item['permission_id']
+            data['permissionNo'] = item['permission__no']
+            items.append(data)
+            data = {}
+        family_dict['members'] = items
+        return response.json(0, family_dict)
+
     @classmethod
     def family_save(cls, user_id, request_dict, response):
         """
@@ -683,32 +716,61 @@ class EquipmentFamilyView(View):
         return response.json(0)
 
     @classmethod
-    def room_sort_save(cls, request_dict, response):
+    def changes_member_permission(cls, app_user_id, request_dict, response):
         """
-        房间排序
+        更新家庭成员权限
+        @param app_user_id: 当前app登录用户
         @param request_dict: 请求参数
-        @param response: 响应参数
+        @param response: 响应实体
+        @return:
+        """
+        family_id = request_dict.get('familyId', None)
+        user_id = request_dict.get('userId', None)
+        no = request_dict.get('no', None)
+        if not all([family_id, user_id, no]):
+            return response.json(444)
+        owner = cls.get_family_owner(app_user_id, family_id)
+        if not owner:
+            return response.json(404)
+        permission_qs = FamilyMemberPermission.objects.filter(no=no).values()
+        if permission_qs.exists():
+            permission_qs = permission_qs.first()
+            p_id = permission_qs['id']
+            FamilyMember.objects.filter(family_id=family_id, user_id=user_id).update(permission_id=p_id)
+        return response.json(0)
+
+    @classmethod
+    def family_member_del(cls, app_user_id, request_dict, response):
+        """
+        家庭成员删除
+        @param app_user_id: 当前app登录用户
+        @param request_dict: 请求参数
+        @param response: 响应实体
         @return:
         """
-        ids = request_dict.getlist('ids', None)
-        if not ids:
+        family_id = request_dict.get('familyId', None)
+        user_id = request_dict.get('userId', None)
+        if not all([family_id, user_id]):
             return response.json(444)
-        for i, item in ids:
-            id_sort = item[i]
-            print(id_sort)
+        owner = cls.get_family_owner(app_user_id, family_id)
+        if not owner:
+            return response.json(404)
+        family_member_qs = FamilyMember.objects.filter(family_id=family_id, user_id=user_id)
+        if family_member_qs.exists():
+            family_member_qs.delete()
         return response.json(0)
 
     @classmethod
-    def get_member_permission_list(cls, user_id, request_dict, response):
+    def get_member_permission_list(cls, app_user_id, request_dict, response):
         """
         获取用户权限列表
-        @param user_id:
+        @param app_user_id: 当前app登录用户
         @param request_dict:
         @param response:
         @return:
         """
-        family_id = request_dict.get('familyId')
-        user_id = request_dict.get('userId', user_id)
+        family_id = request_dict.get('familyId', None)
+        user_id = request_dict.get('userId', app_user_id)
         if not family_id:
             return response.json(404)
         result = cls.get_member_permission_by_family_id(user_id, family_id)
@@ -742,6 +804,12 @@ class EquipmentFamilyView(View):
 
     @classmethod
     def get_member_permission_details(cls, user_id, family_id):
+        """
+        根据用户id获取家庭设备权限
+        @param user_id:
+        @param family_id:
+        @return: 权限编号 001:所有权限,002:查看设备,003:暂无权限
+        """
         member_qs = FamilyMember.objects.filter(family_id=family_id, user_id=user_id).values()
         if member_qs.exists():
             member_qs = member_qs.first()
@@ -749,3 +817,16 @@ class EquipmentFamilyView(View):
             permission_qs = FamilyMemberPermission.objects.filter(id=permission_id).values('no')
             return permission_qs.first()['no']
         return ''
+
+    @classmethod
+    def get_family_owner(cls, user_id, family_id):
+        """
+        判断是否是家庭主用户
+        @param user_id:
+        @param family_id:
+        @return:
+        """
+        user_family_qs = UserFamily.objects.filter(id=family_id, user_id=user_id)
+        if user_family_qs.exists():
+            return True
+        return False