Browse Source

完善app获取设备图标接口

guanhailong 2 years ago
parent
commit
a1dcc17b7c
1 changed files with 31 additions and 6 deletions
  1. 31 6
      AdminController/DeviceManagementController.py

+ 31 - 6
AdminController/DeviceManagementController.py

@@ -464,7 +464,7 @@ class DeviceManagement(View):
         if lang != 'cn':
             lang = 'en'
         if version_number >= '2.6.2.1':
-            return self.newAppVersion(response, app_bundle_id, lang)  # 获取2.6.2.1及以上版本设备信息图标
+            return self.newAppVersion(response, app_bundle_id, lang, version_number)  # 获取2.6.2.1及以上版本设备信息图标
         else:
             version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id,
                                                                 version_number=version_number)
@@ -513,18 +513,43 @@ class DeviceManagement(View):
                 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)  # 获取包
+    def newAppVersion(self, response, app_bundle_id, lang, version_number):
+        version_number_qs = AppVersionNumber.objects.filter(app_bundle__app_bundle_id=app_bundle_id).values(
+            'version_number')  # 获取包
         if not version_number_qs.exists():
             return response.json(173)
         # 获取版本号
         try:
             app_bundle_list = []
+            version_qs = version_number_qs.filter(version_number=version_number).values('version_number')
+            if version_qs.exists():
+                version_number = version_qs[0]['version_number']
+            else:
+                all_version_number_qs = version_number_qs.values('version_number')
+                test_list = [item[key] for item in all_version_number_qs for key in item]
+                if version_number > test_list[-1] or version_number < test_list[0]:
+                    version_qs = version_number_qs.filter().values('version_number').order_by('version_number')
+                    total_list = [item[key] for item in version_qs for key in item]
+                    version_number = 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_qs = AppVersionNumber.objects.filter(version_number=before).values('version_number')
+                    version_number = version_qs[0]['version_number']
+            all_version_list = [item[key] for item in version_number_qs for key in item]
+            # if version_number in all_version_list:
+            #     index = all_version_list.index(version_number)
+            # else:
+            index = all_version_list.index(version_number)  # 根据版本号获取设备信息图标
             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:]
+                version_number_qs = version_number_qs.values('version_number')[0:index + 1]
             else:
-                version_number_qs = version_number_qs.values('version_number')[1:]
-            for version_number in version_number_qs:
+                version_number_qs = version_number_qs.values('version_number')[1:index + 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(