Przeglądaj źródła

设备列表增加序列号, 设备列表返回IOT相关

chenshibin 4 lat temu
rodzic
commit
c5c9218eaa

+ 37 - 5
Controller/EquipmentManager.py

@@ -7,7 +7,8 @@ import logging
 import requests
 import simplejson as json
 from django.utils import timezone
-from Model.models import Device_User, Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel
+from Model.models import Device_User, Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, \
+    UIDCompanySerialModel, iotdeviceInfoModel
 from django.db.models import Q
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -479,12 +480,25 @@ def addInterface(request):
                                                                     'isShare',
                                                                     'primaryUserID', 'primaryMaster', 'vodPrimaryUserID', 'vodPrimaryMaster', 'userID__userEmail',
                                                                     'data_joined', 'version',
-                                                                    'isVod', 'isExist', 'isCameraOpenCloud')
+                                                                    'isVod', 'isExist', 'isCameraOpenCloud', 'serial_number')
                     dvql = CommonService.qs_to_list(dvqs)
                     ubqs = UID_Bucket.objects.filter(uid=UID). \
                         values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                     res = dvql[0]
                     res['vod'] = list(ubqs)
+
+
+                    # 新增获取IOT证书内容
+                    iotqs = iotdeviceInfoModel.objects.filter(serial_number__serial_number=dvql[0]['serial_number'])
+                    if iotqs.exists():
+                        res['iot'].append(
+                            {
+                                'endpoint': iotqs[0].endpoint,
+                                'token_iot_number': iotqs[0].endpoint
+
+                            }
+                        )
+
                     if isMainUserExists:
                         res['isMainUserExists'] = 1
                     return response.json(0, res)
@@ -816,17 +830,22 @@ def queryInterface(request):
         dvql = dvqs[(page - 1) * line:page * line].values('id', 'userID', 'NickName', 'UID', 'View_Account',
                                                           'View_Password', 'ChannelIndex', 'Type', 'isShare',
                                                           'primaryUserID', 'primaryMaster', 'data_joined', 'version', 'vodPrimaryUserID', 'vodPrimaryMaster', 'userID__userEmail',
-                                                          'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud')
+                                                          'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud', 'serial_number')
         dvls = CommonService.qs_to_list(dvql)
         uid_list = []
+        serial_number_list = []
         for dvl in dvls:
             if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
                 dvl['isPrimaryUser'] = 1
             else:
                 dvl['isPrimaryUser'] = 0
             uid_list.append(dvl['UID'])
-            # if dvl['isShare'] is False:
-            #     uid_list.append(dvl['UID'])
+            serial_number_list.append(dvl['serial_number'])
+
+
+        #新增获取IOT证书内容
+        iotqs = iotdeviceInfoModel.objects.filter(serial_number__serial_number__in=serial_number_list)
+
         ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
             values('bucket__content', 'status', 'channel', 'endTime', 'uid')
         upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
@@ -842,7 +861,20 @@ def queryInterface(request):
             uv_dict[us['uid']] = {'version': us['version'],
                                   'nickname': us['nickname'],
                                   'detect_interval': us['detect_interval']}
+
         for p in dvls:
+            #新增IOT
+            p['iot'] = []
+            for iot in iotqs:
+                if p['serial_number'][0:6] == iot.serial_number:
+                        p['iot'].append(
+                            {
+                                'endpoint':iot.endpoint,
+                                'token_iot_number':iot.token_iot_number
+
+                            }
+                        )
+
             p['vod'] = []
             for dm in ubqs:
                 if p['UID'] == dm['uid']:

+ 40 - 7
Controller/EquipmentManagerV2.py

@@ -8,7 +8,8 @@ from django.db.models import Q
 from django.views.generic.base import View
 
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
-from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel
+from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel, \
+    iotdeviceInfoModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -148,18 +149,22 @@ class EquipmentManagerV2(View):
                        'View_Password', 'ChannelIndex', 'Type', 'isShare',
                        'primaryUserID', 'primaryMaster', 'data_joined', 'vodPrimaryUserID', 'vodPrimaryMaster', 'userID__userEmail',
                        'version',
-                       'isVod', 'isExist', 'NotificationMode', 'isOpenCloud', 'endpoint')
+                       'isVod', 'isExist', 'NotificationMode', 'isOpenCloud', 'serial_number')
             dvls = CommonService.qs_to_list(dvql)
+
             uid_list = []
+            serial_number_list = []
             for dvl in dvls:
                 if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
                     dvl['isPrimaryUser'] = 1
                 else:
                     dvl['isPrimaryUser'] = 0
-
                 uid_list.append(dvl['UID'])
-                # if dvl['isShare'] is False:
-                #     uid_list.append(dvl['UID'])
+                serial_number_list.append(dvl['serial_number'])
+
+            # 新增获取IOT证书内容
+            iotqs = iotdeviceInfoModel.objects.filter(serial_number__serial_number__in=serial_number_list)
+
             ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
                 values('bucket__content', 'status', 'channel', 'endTime', 'uid')
             upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
@@ -180,6 +185,18 @@ class EquipmentManagerV2(View):
                     'is_custom_voice': us['is_custom_voice'],
                 }
             for p in dvls:
+                # 新增云分配UID
+                p['iot'] = []
+                for iot in iotqs:
+                    if p['serial_number'][0:6] == iot.serial_number:
+                        p['iot'].append(
+                            {
+                                'endpoint': iot.endpoint,
+                                'token_iot_number': iot.token_iot_number
+
+                            }
+                        )
+
                 p['vod'] = []
                 for dm in ubqs:
                     if p['UID'] == dm['uid']:
@@ -220,16 +237,20 @@ class EquipmentManagerV2(View):
                            'View_Password', 'ChannelIndex', 'Type', 'isShare',
                            'primaryUserID', 'primaryMaster', 'data_joined', 'vodPrimaryUserID', 'vodPrimaryMaster',
                            'userID__userEmail',
-                           'version', 'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud')
+                           'version', 'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud', 'serial_number')
         dvls = CommonService.qs_to_list(dvql)
         uid_list = []
+        serial_number_list = []
         for dvl in dvls:
             if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
                 dvl['isPrimaryUser'] = 1
             else:
                 dvl['isPrimaryUser'] = 0
-
             uid_list.append(dvl['UID'])
+            serial_number_list.append(dvl['serial_number'])
+
+        # 新增获取IOT证书内容
+        iotqs = iotdeviceInfoModel.objects.filter(serial_number__serial_number__in=serial_number_list)
 
         ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
             values('bucket__content', 'status', 'channel', 'endTime', 'uid')
@@ -302,6 +323,18 @@ class EquipmentManagerV2(View):
             uv_dict[us['uid']]['channels'] = channels
 
         for p in dvls:
+            # 新增IOT
+            p['iot'] = []
+            for iot in iotqs:
+                if p['serial_number'][0:6] == iot.serial_number:
+                    p['iot'].append(
+                        {
+                            'endpoint': iot.endpoint,
+                            'token_iot_number': iot.token_iot_number
+
+                        }
+                    )
+
             p['vod'] = []
             for dm in ubqs:
                 if p['UID'] == dm['uid']:

+ 49 - 5
Controller/EquipmentManagerV3.py

@@ -12,7 +12,7 @@ from django.views.generic.base import View
 from Object.RedisObject import RedisObject
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, BASE_DIR
 from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel, \
-    Device_User
+    Device_User, iotdeviceInfoModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -196,13 +196,23 @@ class EquipmentManagerV3(View):
                                                                         'vodPrimaryUserID', 'vodPrimaryMaster',
                                                                         'userID__userEmail',
                                                                         'data_joined', 'version',
-                                                                        'isVod', 'isExist', 'isCameraOpenCloud')
+                                                                        'isVod', 'isExist', 'isCameraOpenCloud', 'serial_number')
                         dvql = CommonService.qs_to_list(dvqs)
                         ubqs = UID_Bucket.objects.filter(uid=UID). \
                             values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                         res = dvql[0]
                         res['vod'] = list(ubqs)
 
+                        iotqs = iotdeviceInfoModel.objects.filter(serial_number__serial_number=dvql[0]['serial_number'])
+                        if iotqs.exists():
+                            res['iot'].append(
+                                {
+                                    'endpoint': iotqs[0].endpoint,
+                                    'token_iot_number': iotqs[0].endpoint
+
+                                }
+                            )
+
                         return response.json(0, res)
 
                 else:
@@ -306,16 +316,21 @@ class EquipmentManagerV3(View):
                                'View_Password', 'ChannelIndex', 'Type', 'isShare',
                                'primaryUserID', 'primaryMaster', 'data_joined', 'vodPrimaryUserID', 'vodPrimaryMaster',
                                'userID__userEmail',
-                               'version', 'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud')
+                               'version', 'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud',
+                               'serial_number')
             dvls = CommonService.qs_to_list(dvql)
             uid_list = []
+            serial_number_list = []
             for dvl in dvls:
                 if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
                     dvl['isPrimaryUser'] = 1
                 else:
                     dvl['isPrimaryUser'] = 0
-
                 uid_list.append(dvl['UID'])
+                serial_number_list.append(dvl['serial_number'])
+
+            # 新增获取IOT证书内容
+            iotqs = iotdeviceInfoModel.objects.filter(serial_number__serial_number__in=serial_number_list)
 
             ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
                 values('bucket__content', 'status', 'channel', 'endTime', 'uid')
@@ -390,6 +405,18 @@ class EquipmentManagerV3(View):
                 uv_dict[us['uid']]['channels'] = channels
 
             for p in dvls:
+                # 新增IOT
+                p['iot'] = []
+                for iot in iotqs:
+                    if p['serial_number'][0:6] == iot.serial_number:
+                        p['iot'].append(
+                            {
+                                'endpoint': iot.endpoint,
+                                'token_iot_number': iot.token_iot_number
+
+                            }
+                        )
+
                 p['vod'] = []
                 for dm in ubqs:
                     if p['UID'] == dm['uid']:
@@ -485,12 +512,18 @@ class EquipmentManagerV3(View):
                                              'View_Password', 'ChannelIndex', 'Type', 'isShare',
                                              'primaryUserID', 'primaryMaster', 'data_joined', 'vodPrimaryUserID',
                                              'vodPrimaryMaster', 'userID__userEmail',
-                                             'version', 'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud')
+                                             'version', 'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud', 'serial_number')
 
                 dvls = CommonService.qs_to_list(device_qs)
                 uid_list = []
+                serial_number_list = []
                 for dvl in dvls:
                     uid_list.append(dvl['UID'])
+                    serial_number_list.append(dvl['serial_number'])
+
+                # 新增获取IOT证书内容
+                iotqs = iotdeviceInfoModel.objects.filter(serial_number__serial_number__in=serial_number_list)
+
                 ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
                     values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                 upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
@@ -553,6 +586,17 @@ class EquipmentManagerV3(View):
                     uv_dict[us['uid']]['channels'] = channels
 
                 for p in dvls:
+                    # 新增IOT
+                    p['iot'] = []
+                    for iot in iotqs:
+                        if p['serial_number'][0:6] == iot.serial_number:
+                            p['iot'].append(
+                                {
+                                    'endpoint': iot.endpoint,
+                                    'token_iot_number': iot.token_iot_number
+
+                                }
+                            )
                     p['vod'] = []
                     for dm in ubqs:
                         if p['UID'] == dm['uid']:

+ 4 - 0
Controller/SerialNumberController.py

@@ -248,6 +248,8 @@ class SerialNumberView(View):
                                 company_serial.status = 2
                                 company_serial.save()
 
+                                Device_Info.objects.filter(UID=uid.uid).update(serial_number=serial_number)
+
                                 res = {
                                     'uid': CommonService.encode_data(uid.uid),
                                     'mac': CommonService.encode_data(uid.mac),
@@ -347,6 +349,8 @@ class SerialNumberView(View):
                     uid.status = 0
                     uid.save()
                 uid_serial.delete()
+
+                Device_Info.objects.filter(UID=uid.uid).update(serial_number='')
                 return response.json(0)
             else:
                 return response.json(173)

+ 1 - 0
Model/models.py

@@ -241,6 +241,7 @@ class Device_Info(models.Model):
     isVod = models.SmallIntegerField(blank=True, default=0, verbose_name='是否支持云存')  # 是否支持云存设备
     isExist = models.SmallIntegerField(blank=True, default=1, verbose_name='是否被删除')  # 是否被删除了(需主用户交互) 1存在,0不存在,2设备被重置
     isCameraOpenCloud =  models.SmallIntegerField(blank=True, default=1, verbose_name='是否开启云存')  # 0:不开启  1:开启
+    serial_number = models.CharField(blank=True, max_length=9, default='', verbose_name='关联序列号')
     ###
     REQUIRED_FIELDS = []