Browse Source

版本号大小对比

guanhailong 2 years ago
parent
commit
aa7134e2c8
2 changed files with 21 additions and 6 deletions
  1. 3 6
      AdminController/DeviceManagementController.py
  2. 18 0
      Service/CommonService.py

+ 3 - 6
AdminController/DeviceManagementController.py

@@ -696,19 +696,16 @@ class DeviceManagement(View):
         if not all([lang, app_bundle_id, version_number]):
             return response.json(444)
         try:
-            version_number = list(map(int, version_number.split('.')))
             app_bundle_qs = AppBundle.objects.filter(app_bundle_id=app_bundle_id).values(
                 'app_device_type__app_version_number_id').distinct().order_by('app_device_type__app_version_number_id')
             #  判断版本是否存在, 不存在则获取输入版本范围内最接近的输入版本
             version_number_list = []
             app_bundle_list = []
             for version in app_bundle_qs:
-                version = version['app_device_type__app_version_number_id']
-                version_parts = list(map(int, version.split('.')))
-                if version_parts <= version_number:
-                    version_number_list.append(version)
+                version_number_list.append(version['app_device_type__app_version_number_id'])
+            new_version_number = CommonService.compare_version_number(version_number, version_number_list)
             # 版本号对应的设备信息图标
-            for version_number in version_number_list:
+            for version_number in new_version_number:
                 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). \

+ 18 - 0
Service/CommonService.py

@@ -5,6 +5,7 @@ import time
 from base64 import encodebytes
 from pathlib import Path
 from random import Random
+from distutils.version import LooseVersion
 
 import OpenSSL.crypto as ct
 import requests
@@ -768,3 +769,20 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
         @param 返回True or False
         """
         return constant_time_compare(password1, password2)
+
+    @staticmethod
+    def compare_version_number(version_number, version_number_list):
+        """
+        比对版本号大小
+        @param version_number: 版本号
+        @param version_number_list: 版本号列表
+        """
+        version_list = []
+        input_version = LooseVersion(version_number)
+        for version in version_number_list:
+            version = LooseVersion(version)
+            if input_version >= version:
+                version_list.append(version)
+            else:
+                continue
+        return version_list