Browse Source

优化设备信息和图标/流失预警/

guanhailong 2 years ago
parent
commit
84b9348c19

+ 27 - 7
AdminController/DeviceManagementController.py

@@ -125,10 +125,11 @@ class DeviceManagement(View):
         if not all([model, type, lang, name, sort]):
             return response.json(444)
         type = int(type)
+        nowTime = int(time.time())
 
         try:
             with transaction.atomic():
-                # 判断包是否存在,并创建
+                # 判断包是否存在
                 new_bundle_list = []
                 for bundle_name in app_bundle_name:
                     if not bundle_name == '':
@@ -170,13 +171,29 @@ class DeviceManagement(View):
                     app_bundle_qs = AppBundle.objects.filter(id=app_id).values('id')
                     app_bundle_qs = app_bundle_qs[0]['id']
                     app_device_type_qs.appbundle_set.add(app_bundle_qs)
+                device_type_qs = DeviceTypeModel.objects.filter(model=model, type=type)
+                if device_type_qs.exists():
+                    device_type_qs.update(updata_time=nowTime)
+                else:
+                    DeviceTypeModel.objects.create(name=name, model=model, type=type, ptz_type=model, icon=fileName,
+                                                   add_time=nowTime, update_time=nowTime)
                 return response.json(0)
         except Exception as e:
             print(e)
             return response.json(500, repr(e))
 
-    @staticmethod
-    def get_device_info_list(request_dict, response):
+    @classmethod
+    def add_device_type(cls, name, model, type, fileName):
+        nowTime = int(time.time())
+        data = {
+            'name': name,
+            'model': model,
+            'type': type,
+            'icon': fileName
+        }
+
+    @classmethod
+    def get_device_info_list(cls, request_dict, response):
         pageNo = request_dict.get('pageNo', None)
         pageSize = request_dict.get('pageSize', None)
         UID = request_dict.get('UID', None)
@@ -235,14 +252,17 @@ class DeviceManagement(View):
                             device_info_list["datas"][k]['fields']['Type'] = device_type_qs[0]['name']
                         uid_set_qs = UidSetModel.objects.filter(
                             uid=device_info_list["datas"][k]['fields']['UID']).values('is_alexa', 'ip', 'version',
-                                                                                      'is_ai', 'is_human', 'cloud_vod')
+                                                                                      'is_ai', 'is_human', 'cloud_vod',
+                                                                                      'ucode', 'device_type')
                         if uid_set_qs.exists():
                             isAlexa = '是' if uid_set_qs[0]['is_alexa'] else '否'
                             isHuman = '是' if uid_set_qs[0]['is_human'] else '否'
-                            if uid_set_qs[0]['cloud_vod'] == 2:
-                                cloud_vod = '不支持'
-                            else:
+                            cloud_vod = CommonService.is_cloud_device(uid_set_qs[0]['ucode'],
+                                                                      uid_set_qs[0]['device_type'])
+                            if cloud_vod:
                                 cloud_vod = '支持'
+                            else:
+                                cloud_vod = '不支持'
                             if uid_set_qs[0]['is_ai'] == 2:
                                 isAI = '不支持'
                             elif uid_set_qs[0]['is_ai'] == 1:

+ 5 - 10
AdminController/ServeManagementController.py

@@ -103,7 +103,7 @@ class serveManagement(View):
             elif operation == 'getCloudUserList':  # 获取云存用户信息
                 return self.getCloudUserList(request_dict, response)
             elif operation == 'deviceAttritionAlert':  # 流失预警
-                return self.deviceAttritionAlert(request_dict, response, request)
+                return self.deviceAttritionAlert(request_dict, response)
             elif operation == 'deactivationPackage':  # 停用套餐
                 return self.deactivationPackage(request_dict, response)
             elif operation == 'paypal-cycle-cancel':  # 取消循环扣款
@@ -1427,7 +1427,7 @@ class serveManagement(View):
             return response.json(500, repr(e))
 
     @classmethod
-    def deviceAttritionAlert(cls, request_dict, response, request):
+    def deviceAttritionAlert(cls, request_dict, response):
         """
         流失预警界面
         @param request_dict:
@@ -1521,16 +1521,11 @@ class serveManagement(View):
                         uid_set_qs = UidSetModel.objects.filter(uid=uid).values('ucode', 'device_type')
                         ucode = uid_set_qs[0]['ucode'] if uid_set_qs.exists() else ''
                         device_type = uid_set_qs[0]['device_type'] if uid_set_qs.exists() else ''
-                        if len(ucode) > 4:
-                            number = ucode[-4]
-                        else:
-                            continue
-                        device_type_qs = DeviceTypeModel.objects.filter(type=device_type).values('model')
-                        model = device_type_qs[0]['model'] if device_type_qs.exists() else ''
+                        cloud_vod = CommonService.is_cloud_device(ucode, device_type)
                         #  判断设备是否为ipc设备和是否支持云存
-                        if model == 2 and number in ['4', '5']:
+                        if cloud_vod:
                             device_number += 1
-                            item['device_number'] = device_number
+                    item['device_number'] = device_number
                 item['other_device'] = 0
                 not_upload_list.append(item)
             return response.json(0, {'result_list': not_upload_list, 'total': total})

+ 19 - 1
Service/CommonService.py

@@ -17,7 +17,7 @@ from pyipip import IPIPDatabase
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN_SSL, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, SERVER_DOMAIN_TEST, \
     SERVER_DOMAIN_CN, SERVER_DOMAIN_US, CONFIG_US, CONFIG_EUR, SERVER_DOMAIN_LIST, SERVER_DOMAIN_EUR
 from Controller.CheckUserData import RandomStr
-from Model.models import iotdeviceInfoModel, Device_Info, UIDModel
+from Model.models import iotdeviceInfoModel, Device_Info, UIDModel, AppDeviceType
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 
@@ -727,3 +727,21 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
             return content
         elif order_type == 2:
             pass
+
+    @staticmethod
+    def is_cloud_device(ucode, device_type):
+        """
+        设备是否支持云存
+        @param ucode: 设备版本
+        @param device_type: 设备类型
+        """
+        if len(ucode) > 4:
+            number = ucode[-4]
+        else:
+            return False
+        device_type_qs = AppDeviceType.objects.filter(type=device_type).values('model')
+        model = device_type_qs[0]['model'] if device_type_qs.exists() else ''
+        #  判断设备是否为ipc设备和是否支持云存
+        if model == 2 and number in ['4', '5']:
+            return True
+        return False