Browse Source

优化自定义查询sql,家庭信息增加返回字段,房间增加详情接口。

zhangdongming 3 years ago
parent
commit
dfea064373

+ 1 - 1
Ansjer/cn_config/test_settings.py

@@ -45,7 +45,7 @@ AUTHENTICATION_BACKENDS = (
 ADDR_URL = []
 ANONYMOUS_USER_ID = -1  # 支持匿名用户
 
-STATIC_URL = '/static/'
+STATIC_URL = '/static/static/'
 
 # 上传路径根目录
 MEDIA_ROOT = os.path.join(BASE_DIR, 'static/Upgrate')

+ 4 - 4
Ansjer/local_config/local_settings.py

@@ -14,7 +14,7 @@ ALLOWED_HOSTS = ['*']
 ADDR_URL = []
 ANONYMOUS_USER_ID = -1  # 支持匿名用户
 
-STATIC_URL = '/static/'
+STATIC_URL = '/static/static/'
 STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
 
 # 上传路径根目录
@@ -100,13 +100,13 @@ WSGI_APPLICATION = 'Ansjer.local_config.local_wsgi.application'
 DATABASE_DATA = 'ansjer_test'
 SERVER_HOST = '127.0.0.1'
 DATABASES_USER = 'root'
-DATABASES_PASS = 'root'
+DATABASES_PASS = 'password'
 
 # 推送数据库
-DATABASE_DATA2 = 'ansjerpush'
+DATABASE_DATA2 = 'ansjer_push_test'
 SERVER_HOST2 = '127.0.0.1'
 DATABASES_USER2 = 'root'
-DATABASES_PASS2 = 'root'
+DATABASES_PASS2 = 'password'
 
 # 序列号公共数据库
 # DATABASE_DATA3 = 'ansjer_test'

+ 21 - 6
SensorGateway/EquipmentFamilyController.py

@@ -250,9 +250,10 @@ class EquipmentFamilyView(View):
         return device_info_list
 
     @classmethod
-    def get_family_device_list(cls, user_id, page_no, page_size, family_id, room_id):
+    def get_family_device_list(cls, user_id, page_no, page_size, family_id, room_id, is_room_other=False):
         """
         获取关联家庭设备列表
+        @param is_room_other: 是否显示其他房间设备
         @param user_id: 用户id
         @param page_no: 页数
         @param page_size: 分页大小
@@ -267,13 +268,21 @@ class EquipmentFamilyView(View):
         sql += 'FROM device_info d INNER JOIN family_room_device l ON d.id = l.device_id '
         sql += 'WHERE d.userID_id = %s AND d.isExist != %s '
         if family_id:
+            user_id = UserFamily.objects.filter(id=family_id).first().user_id
             sql += ' AND l.family_id = %s '
-        if room_id:
+        if room_id and is_room_other:
+            sql += ' AND l.room_id != %s '
+        elif room_id:
             sql += ' AND l.room_id = %s '
         sql += ' order by d.data_joined DESC,d.id DESC LIMIT %s,%s '
-        cursor.execute(sql, [user_id, 2, int(family_id) if family_id else int(room_id), ((page_no - 1) * page_size),
-                             page_size, ])
-        data_obj = cursor.fetchall()
+        if family_id and room_id:
+            cursor.execute(sql, [user_id, 2, int(family_id), int(room_id), ((page_no - 1) * page_size),
+                                 page_size, ])
+            data_obj = cursor.fetchall()
+        else:
+            cursor.execute(sql, [user_id, 2, int(family_id) if family_id else int(room_id), ((page_no - 1) * page_size),
+                                 page_size, ])
+            data_obj = cursor.fetchall()
         cursor.close()  # 执行完,关闭
         connection.close()
         result_list = []
@@ -553,7 +562,10 @@ class EquipmentFamilyView(View):
                                                    'permission__no',
                                                    'user__username',
                                                    'user_id',
-                                                   'user__userIconUrl')
+                                                   'user__userIconUrl',
+                                                   'user__NickName',
+                                                   'user__phone',
+                                                   'user__userEmail')
         family_member_qs = family_member_qs.order_by('-identity').order_by('sort')
         items = []
         data = {}
@@ -564,6 +576,9 @@ class EquipmentFamilyView(View):
             data['identity'] = item['identity']
             data['permissionId'] = item['permission_id']
             data['permissionNo'] = item['permission__no']
+            data['nickName'] = item['user__NickName']
+            data['phone'] = item['user__phone']
+            data['userEmail'] = item['user__userEmail']
             items.append(data)
             data = {}
         family_dict['members'] = items

+ 24 - 1
SensorGateway/GatewayFamilyMemberController.py

@@ -9,9 +9,10 @@
 
 from django.views.generic.base import View
 
-from Model.models import FamilyMemberJoin
+from Model.models import FamilyMemberJoin, UserFamily
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
+from SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 
 
 # 家庭房间管理
@@ -80,3 +81,25 @@ class GatewayFamilyMemberView(View):
                 'createdTime': item['created_time']
             })
         return response.json(0, result)
+
+    @classmethod
+    def family_qrcode(cls, user_id, request_dict, response):
+        """
+        获取邀请码信息
+        @param user_id:
+        @param request_dict:
+        @param response:
+        @return:
+        """
+        family_id = request_dict.get('familyId', None)
+        if not family_id:
+            return response.json(444)
+        is_owner = EquipmentFamilyView.get_family_owner(user_id, family_id)
+        if not is_owner:
+            return response.json(404)
+        try:
+            UserFamily.objects.get(id=family_id)
+        except Exception as e:
+            print(e)
+            return response.json(173, repr(e))
+        pass

+ 53 - 0
SensorGateway/GatewayFamilyRoomController.py

@@ -46,6 +46,9 @@ class GatewayFamilyRoomView(View):
         # 房间删除
         elif operation == 'del':
             return self.room_del(request_dict, response)
+        # 房间详情
+        elif operation == 'details':
+            return self.get_room_details(app_user_id, request_dict, response)
 
     @classmethod
     def room_device_save(cls, app_user_id, request_dict, response):
@@ -119,3 +122,53 @@ class GatewayFamilyRoomView(View):
             if family_room.exists():
                 family_room.update(sort=int(sort))
         return response.json(0)
+
+    @classmethod
+    def get_room_details(cls, app_user_id, request_dict, response):
+        """
+        房间设备详情
+        @param app_user_id:
+        @param request_dict:
+        @param response:
+        @return:
+        """
+        family_id = request_dict.get('familyId', None)
+        room_id = request_dict.get('roomId', None)
+        page_no = request_dict.get('pageNo', None)
+        page_size = request_dict.get('pageSize', None)
+        if not all([family_id, room_id, page_no, page_size]):
+            return response.json(444)
+        room_count = FamilyRoomDevice.objects.filter(family_id=int(family_id), room_id=int(room_id)).count()
+        device_room = []
+        # 房间设备列表
+        if room_count > 0:
+            device_room_list = EquipmentFamilyView.get_family_device_list(user_id=app_user_id, page_no=1,
+                                                                          page_size=room_count,
+                                                                          family_id=int(family_id),
+                                                                          room_id=int(room_id))
+
+            if device_room_list:
+                room_name = FamilyRoom.objects.get(id=room_id).name
+
+                for item in device_room_list:
+                    device_room.append({
+                        'deviceId': item['id'],
+                        'deviceType': item['Type'],
+                        'nickName': item['NickName'],
+                        'roomName': room_name,
+                    })
+        device_not_room = []
+        device_not_room_count = FamilyRoomDevice.objects.filter(family_id=int(family_id), room_id=0).count()
+        if device_not_room_count > 0:
+            not_room_device_list = EquipmentFamilyView.get_family_device_list(user_id=app_user_id, page_no=int(page_no),
+                                                                              page_size=int(page_size),
+                                                                              family_id=int(family_id), room_id=0,
+                                                                              is_room_other=True)
+            if not_room_device_list:
+                for item in not_room_device_list:
+                    device_not_room.append({
+                        'deviceId': item['id'],
+                        'deviceType': item['Type'],
+                        'nickName': item['NickName'],
+                    })
+        return response.json(0, {'deviceRooms': device_room, 'deviceNotRooms': device_not_room})