Forráskód Böngészése

修复共享设备无法显示问题

peng 3 éve
szülő
commit
2f2a125631

+ 7 - 2
Controller/DeviceShare.py

@@ -24,6 +24,7 @@ from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
+from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 
 
 
 
 class DeviceShareView(View):
 class DeviceShareView(View):
@@ -141,7 +142,9 @@ class DeviceShareView(View):
 
 
     def do_confirm(self, userID, request_dict, response):
     def do_confirm(self, userID, request_dict, response):
         shareToken = request_dict.get('shareToken', None)
         shareToken = request_dict.get('shareToken', None)
-        if shareToken is not None:
+        family_id = request_dict.get('familyId', None)
+        room_id = request_dict.get('roomId', None)
+        if not all([shareToken, family_id]):
             # try:
             # try:
             #     data = jwt.decode(shareToken, '.#^^&', algorithms='HS256')
             #     data = jwt.decode(shareToken, '.#^^&', algorithms='HS256')
             # except Exception as e:
             # except Exception as e:
@@ -177,6 +180,7 @@ class DeviceShareView(View):
                     sharerDvqs.primaryMaster = primaryMaster
                     sharerDvqs.primaryMaster = primaryMaster
                     sharerDvqs.data_joined = None
                     sharerDvqs.data_joined = None
                     sharerDvqs.save()
                     sharerDvqs.save()
+
                     # redisObj = RedisObject(db=8)
                     # redisObj = RedisObject(db=8)
                     # redisObj.del_data(key='uid_qs_' + userID)
                     # redisObj.del_data(key='uid_qs_' + userID)
                 except Exception as e:
                 except Exception as e:
@@ -189,6 +193,7 @@ class DeviceShareView(View):
                                                                           'primaryUserID', 'primaryMaster',
                                                                           'primaryUserID', 'primaryMaster',
                                                                           'data_joined', 'version',
                                                                           'data_joined', 'version',
                                                                           'isVod', 'isExist')
                                                                           'isVod', 'isExist')
+                    EquipmentFamilyView.family_room_device_save(family_id, room_id, deviceId, dvqs[0]['Type'])
                     dvql = CommonService.qs_to_list(dvqs)
                     dvql = CommonService.qs_to_list(dvqs)
                     ubqs = UID_Bucket.objects.filter(uid=UID). \
                     ubqs = UID_Bucket.objects.filter(uid=UID). \
                         values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                         values('bucket__content', 'status', 'channel', 'endTime', 'uid')
@@ -199,7 +204,7 @@ class DeviceShareView(View):
             else:
             else:
                 return response.json(174)
                 return response.json(174)
         else:
         else:
-            return response.json(444, {'param': 'shareToken'})
+            return response.json(444, {'param': 'shareToken or familyId'})
 
 
     # 1,这个用户的分享出去的设备
     # 1,这个用户的分享出去的设备
     # 2,获得上面个的设备拥有者
     # 2,获得上面个的设备拥有者

+ 43 - 90
Controller/SensorGateway/EquipmentFamilyController.py

@@ -1007,99 +1007,55 @@ class EquipmentFamilyView(View):
                     item['category_name'] = '网关子设备类'
                     item['category_name'] = '网关子设备类'
                 else:
                 else:
                     item['category_name'] = '摄像头类'
                     item['category_name'] = '摄像头类'
+            device_dict['sort'] = list(category_sort)
             if room_id:
             if room_id:
                 family_room = FamilyRoom.objects.filter(id=room_id)
                 family_room = FamilyRoom.objects.filter(id=room_id)
                 if not family_room.exists():
                 if not family_room.exists():
                     return response.json(173)
                     return response.json(173)
                 family_room_device_qs = family_room_device_qs.filter(room_id=room_id)
                 family_room_device_qs = family_room_device_qs.filter(room_id=room_id)
-            family_room_device_qs = family_room_device_qs[(page - 1) * line:page * line]
-            for item in family_room_device_qs:
-                if not item['sub_device']:  # 查询网关、摄像头
-                    device_qs = Device_Info.objects.filter(id=item['device_id']).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'
-                    ).first()
-                    if device_qs:
-                        device_qs['sensorStatus'] = 0
-                        if device_qs['primaryUserID'] and device_qs['id'] == device_qs['primaryUserID']:
-                            device_qs['isPrimaryUser'] = 1
-                        else:
-                            device_qs['isPrimaryUser'] = 0
-                        if 'data_joined' in device_qs:
-                            if device_qs['data_joined']:
-                                device_qs['data_joined'] = device_qs['data_joined'].strftime("%Y-%m-%d %H:%M:%S")
-                            else:
-                                device_qs['data_joined'] = ''
-                        if device_qs['Type'] == 200:
-                            gateways.append(device_qs)
+            # 处理网关摄像头
+            gateways_or_cameras_qs = family_room_device_qs.filter(sub_device=0)[(page - 1) * line:page * line]
+            for item in gateways_or_cameras_qs:
+                room_qs = FamilyRoom.objects.filter(id=item['room_id']).values('name')
+                room_name = room_qs[0]['name'] if room_qs.exists() else ''
+                device_qs = Device_Info.objects.filter(id=item['device_id']).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'
+                ).first()
+                if device_qs:
+                    device_qs['sensorStatus'] = 0
+                    device_qs['roomName'] = room_name
+                    if device_qs['primaryUserID'] and device_qs['id'] == device_qs['primaryUserID']:
+                        device_qs['isPrimaryUser'] = 1
+                    else:
+                        device_qs['isPrimaryUser'] = 0
+                    if 'data_joined' in device_qs:
+                        if device_qs['data_joined']:
+                            device_qs['data_joined'] = device_qs['data_joined'].strftime("%Y-%m-%d %H:%M:%S")
                         else:
                         else:
-                            cameras.append(device_qs)
-                else:  # 查询传感器
-                    sub_device_qs = GatewaySubDevice.objects.filter(id=item['sub_device']).values()
-                    if sub_device_qs.exists():
-                        created_time = time.localtime(sub_device_qs[0]['created_time'])
-                        created_time = time.strftime('%Y-%m-%d %H:%M:%S', created_time)
-                        sub_device_dict = {
-                            "id": sub_device_qs[0]['id'],
-                            "userID": user_id,
-                            "NickName": sub_device_qs[0]['nickname'],
-                            "UID": "",
-                            "View_Account": "",
-                            "View_Password": "",
-                            "ChannelIndex": 0,
-                            "Type": sub_device_qs[0]['device_type'],
-                            'sensorStatus': sub_device_qs[0]['status'],
-                            "isShare": False,
-                            "primaryUserID": "",
-                            "primaryMaster": "",
-                            "data_joined": created_time,
-                            "vodPrimaryUserID": "",
-                            "vodPrimaryMaster": "",
-                            "userID__userEmail": "",
-                            "version": "",
-                            "isVod": 0,
-                            "isExist": 0,
-                            "NotificationMode": 0,
-                            "isCameraOpenCloud": 0,
-                            "serial_number": sub_device_qs[0]['sensor_serial'],
-                            "isPrimaryUser": 0,
-                            "iot": [],
-                            "vod": [],
-                            "preview": [],
-                            "platform": "",
-                            "initString": "",
-                            "initStringApp": "",
-                            "uid_version": "",
-                            "ucode": "",
-                            "detect_interval": 0,
-                            "detect_status": 0,
-                            "detect_group": "",
-                            "region_alexa": "",
-                            "is_alexa": 0,
-                            "deviceModel": "",
-                            "TimeZone": "",
-                            "TimeStatus": 0,
-                            "SpaceUsable": "",
-                            "SpaceSum": "",
-                            "MirrorType": 0,
-                            "RecordType": 0,
-                            "OutdoorModel": 0,
-                            "WIFIName": "",
-                            "isDetector": 0,
-                            "DetectorRank": 0,
-                            "is_human": 0,
-                            "is_custom_voice": 0,
-                            "is_ptz": 0,
-                            "channels": [],
-                            "double_wifi": 0,
-                            "is_ai": 0
-                        }
-                        sensors.append(sub_device_dict)
+                            device_qs['data_joined'] = ''
+                    if device_qs['Type'] == 200:
+                        gateways.append(device_qs)
+                    else:
+                        cameras.append(device_qs)
+            # 处理传感器
+            sensors_qs = family_room_device_qs.filter(~Q(sub_device=0))
+            for item in sensors_qs:     # 查询传感器
+                sub_device_qs = GatewaySubDevice.objects.filter(id=item['sub_device']).values()
+                if sub_device_qs.exists():
+                    sub_device_dict = {
+                        "id": sub_device_qs[0]['id'],
+                        "NickName": sub_device_qs[0]['nickname'],
+                        "Type": sub_device_qs[0]['device_type'],
+                        'sensorStatus': sub_device_qs[0]['status'],
+                    }
+                    sensors.append(sub_device_dict)
+            device_dict['sensors'] = sensors
 
 
             device_list = [gateways, cameras]
             device_list = [gateways, cameras]
             for item in device_list:
             for item in device_list:
@@ -1117,9 +1073,6 @@ class EquipmentFamilyView(View):
                 else:
                 else:
                     device_dict['cameras'] = result
                     device_dict['cameras'] = result
 
 
-            device_dict['sort'] = list(category_sort)
-            device_dict['gateways'].extend(sensors)
-
             return response.json(0, device_dict)
             return response.json(0, device_dict)
         except Exception as e:
         except Exception as e:
             return response.json(500, repr(e))
             return response.json(500, repr(e))