瀏覽代碼

优化app获取设备图标接口(根据版本号获取对应的设备图标)

guanhailong 2 年之前
父節點
當前提交
90754dca67
共有 1 個文件被更改,包括 85 次插入35 次删除
  1. 85 35
      AdminController/DeviceManagementController.py

+ 85 - 35
AdminController/DeviceManagementController.py

@@ -455,8 +455,7 @@ class DeviceManagement(View):
             print(e)
             print(e)
             return response.json(500, repr(e))
             return response.json(500, repr(e))
 
 
-    @staticmethod
-    def get_device_icon(request_dict, response):
+    def get_device_icon(self, request_dict, response):
         lang = request_dict.get('lang', 'en')
         lang = request_dict.get('lang', 'en')
         app_bundle_id = request_dict.get('appBundleId', None)
         app_bundle_id = request_dict.get('appBundleId', None)
         version_number = request_dict.get('versionNumber', None)
         version_number = request_dict.get('versionNumber', None)
@@ -464,43 +463,94 @@ class DeviceManagement(View):
             return response.json(444)
             return response.json(444)
         if lang != 'cn':
         if lang != 'cn':
             lang = 'en'
             lang = 'en'
-        version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id,
-                                                            version_number=version_number)
-        if not version_number_qs.exists():
-            version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id)
+        if version_number >= '2.6.2.1':
+            return self.newAppVersion(response, app_bundle_id, lang)  # 获取2.6.2.1及以上版本设备信息图标
+        else:
+            version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id,
+                                                                version_number=version_number)
             if not version_number_qs.exists():
             if not version_number_qs.exists():
-                return response.json(173)
-            version_qs = version_number_qs.values('version_number')
-            test_list = [item[key] for item in version_qs for key in item]
-            if (version_number > test_list[-1] or version_number < test_list[0]):
-                version_number_qs = version_number_qs.filter().values('id').order_by('id')
-                total_list = [item[key] for item in version_number_qs for key in item]
-                version_number_id = total_list[-1]
+                version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id)
+                if not version_number_qs.exists():
+                    return response.json(173)
+                version_qs = version_number_qs.values('version_number')
+                test_list = [item[key] for item in version_qs for key in item]
+                if version_number > test_list[-1] or version_number < test_list[0]:
+                    version_number_qs = version_number_qs.filter().values('id').order_by('id')
+                    total_list = [item[key] for item in version_number_qs for key in item]
+                    version_number_id = total_list[-1]
+                else:
+                    pos = bisect_left(test_list, version_number)
+                    if pos == 0:
+                        return test_list[0]
+                    if pos == len(test_list):
+                        return test_list[-1]
+                    before = test_list[pos - 1]
+                    version_number_qs = AppVersionNumber.objects.filter(version_number=before).values('id')
+                    version_number_id = version_number_qs[0]['id']
             else:
             else:
-                pos = bisect_left(test_list, version_number)
-                if pos == 0:
-                    return test_list[0]
-                if pos == len(test_list):
-                    return test_list[-1]
-                before = test_list[pos - 1]
-                version_number_qs = AppVersionNumber.objects.filter(version_number=before).values('id')
+                version_number_qs = AppVersionNumber.objects.filter(version_number=version_number).values('id')
                 version_number_id = version_number_qs[0]['id']
                 version_number_id = version_number_qs[0]['id']
-        else:
-            version_number_qs = AppVersionNumber.objects.filter(version_number=version_number).values('id')
-            version_number_id = version_number_qs[0]['id']
+            try:
+                app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
+                                                         app_device_type__devicenamelanguage__lang=lang,
+                                                         app_device_type__app_version_number_id=version_number_id). \
+                    annotate(
+                    model=F('app_device_type__model'), type=F('app_device_type__type'), icon=F('app_device_type__icon'),
+                    name=F('app_device_type__devicenamelanguage__name'),
+                    sort=F('app_device_type__devicenamelanguage__sort'),
+                    app_version_number_id=F('app_device_type__app_version_number_id')).order_by(
+                    'app_device_type__devicenamelanguage__sort').values('model', 'type', 'icon', 'name', 'sort',
+                                                                        'app_device_type__app_version_number_id')
+                dvr_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 1]
+                ipc_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 2]
+                print(dvr_list, ipc_list)
+                res = {
+                    'deviceDvr': dvr_list,
+                    'deviceIpc': ipc_list,
+                }
+                return response.json(0, res)
+            except Exception as e:
+                print(e)
+                return response.json(500, repr(e))
+
+    def newAppVersion(self, response, app_bundle_id, lang):
+        version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id)  # 获取包
+        if not version_number_qs.exists():
+            return response.json(173)
+        # 获取版本号
         try:
         try:
-            app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
-                                                     app_device_type__devicenamelanguage__lang=lang,
-                                                     app_device_type__app_version_number_id=version_number_id). \
-                annotate(
-                model=F('app_device_type__model'), type=F('app_device_type__type'), icon=F('app_device_type__icon'),
-                name=F('app_device_type__devicenamelanguage__name'),
-                sort=F('app_device_type__devicenamelanguage__sort'),
-                app_version_number_id=F('app_device_type__app_version_number_id')).order_by(
-                'app_device_type__devicenamelanguage__sort').values('model', 'type', 'icon', 'name', 'sort',
-                                                                    'app_device_type__app_version_number_id')
-            dvr_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 1]
-            ipc_list = [app_bundle for app_bundle in app_bundle_qs if app_bundle['model'] == 2]
+            app_bundle_list = []
+            if app_bundle_id == 'com.ansjer.zccloud' or app_bundle_id == 'com.ansjer.zccloud_a':
+                version_number_qs = version_number_qs.values('version_number')[0:]
+            else:
+                version_number_qs = version_number_qs.values('version_number')[1:]
+            for version_number in version_number_qs:
+                version_number = version_number['version_number']
+                version_number_qs = AppVersionNumber.objects.filter(version_number=version_number,
+                                                                    app_bundle__app_bundle_id=app_bundle_id).values(
+                    'id')
+                version_number_id = version_number_qs[0]['id']
+                app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id,
+                                                         app_device_type__devicenamelanguage__lang=lang,
+                                                         app_device_type__app_version_number_id=version_number_id). \
+                    annotate(
+                    model=F('app_device_type__model'), type=F('app_device_type__type'), icon=F('app_device_type__icon'),
+                    name=F('app_device_type__devicenamelanguage__name'),
+                    sort=F('app_device_type__devicenamelanguage__sort'),
+                    app_version_number_id=F('app_device_type__app_version_number_id')).order_by(
+                    'app_device_type__devicenamelanguage__sort').values('model', 'type', 'icon', 'name', 'sort',
+                                                                        'app_device_type__app_version_number_id')
+                for app_bundle in app_bundle_qs:
+                    app_bundle_list.append({
+                        'model': app_bundle['model'],
+                        'type': app_bundle['type'],
+                        'icon': app_bundle['icon'],
+                        'name': app_bundle['name'],
+                        'sort': app_bundle['sort'],
+                        'app_device_type__app_version_number_id': app_bundle['app_device_type__app_version_number_id'],
+                    })
+            dvr_list = [app_bundle for app_bundle in app_bundle_list if app_bundle['model'] == 1]
+            ipc_list = [app_bundle for app_bundle in app_bundle_list if app_bundle['model'] == 2]
             print(dvr_list, ipc_list)
             print(dvr_list, ipc_list)
             res = {
             res = {
                 'deviceDvr': dvr_list,
                 'deviceDvr': dvr_list,