Parcourir la source

PC获取最新版本V2

lhq il y a 4 ans
Parent
commit
9f709ea8dc
2 fichiers modifiés avec 60 ajouts et 4 suppressions
  1. 59 4
      Controller/PcInfo.py
  2. 1 0
      Model/models.py

+ 59 - 4
Controller/PcInfo.py

@@ -53,6 +53,8 @@ class PcInfo(View):
                 return self.s3delete(request_dict, response)
             elif operation == 'getnewversion':   # 获取当前软件的最新版本
                 return self.getnewversion(request_dict, response)
+            elif operation == 'getnewversionV2':   # 获取当前软件的最新版本
+                return self.getnewversionV2(request_dict, response)
             elif operation == 'queryall':   # 后台查询
                 return self.queryall(request_dict, response)
             elif operation == 'addandupload':   # 上传到服务器
@@ -102,6 +104,52 @@ class PcInfo(View):
                    'response_url': response_url}
             return response.json(0, res)
 
+    def getnewversionV2(self, request_dict, response):
+        pc_name = request_dict.get('pc_name', None)
+        bundle_version = request_dict.get('bundle_version', None)
+        pc_test = request_dict.get('pc_test', None)
+        param_flag = CommonService.get_param_flag(
+            data=[pc_name, bundle_version, pc_test])
+        if param_flag is not True:
+            return response.json(444)
+        file = Pc_Info.objects.filter(pc_name=pc_name, bundle_version=bundle_version, pc_test=pc_test)
+        if not file.exists():
+            return response.json(173)
+        aws_s3_guonei = boto3.client(
+            's3',
+            aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+            aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
+            config=botocore.client.Config(signature_version='s3v4'),
+            region_name='cn-northwest-1')
+        version_list = []
+        for i in range(2):
+            app_list = Pc_Info.objects.filter(pc_name=pc_name, bundle_version=bundle_version, pc_test=pc_test, is_update=i)
+            if not app_list.exists():
+                res = {'pc_name': '',
+                       'new_version': '',
+                       'is_update': i,
+                       'path': '',
+                       'response_url': ''}
+                version_list.append(res)
+                continue
+            all_version = app_list.values('pc_version')
+            v = []
+            for i in all_version:
+                v.append(i['pc_version'])
+            new_version = max(v)
+            path = app_list.filter(pc_version=new_version).values('download_link')[0]['download_link']
+            print('path', path)
+            response_url = aws_s3_guonei.generate_presigned_url(
+                ClientMethod='get_object',
+                Params={'Bucket': 'pc-package', 'Key': path}, ExpiresIn=3600)
+            res = {'pc_name': pc_name,
+                   'new_version': new_version,
+                   'is_update': app_list.filter(pc_version=new_version).values('is_update')[0]['is_update'],
+                   'path': path,
+                   'response_url': response_url}
+            version_list.append(res)
+        return response.json(0, version_list)
+
     def query(self, request_dict, response):
         pc_name = request_dict.get('pc_name', None)
         package = request_dict.get('package', None)
@@ -143,10 +191,11 @@ class PcInfo(View):
         file_type = request_dict.get('file_type', None)
         package = request_dict.get('package', None)
         explain = request_dict.get('explain', '')
+        is_update = request_dict.get('is_update', None)
         logger.info('文件名字:')
         logger.info(file_name)
         param_flag = CommonService.get_param_flag(
-            data=[pc_name, bundle_version, pc_version, pc_test, lang, file_name, file_type, package])
+            data=[pc_name, bundle_version, pc_version, pc_test, lang, file_name, file_type, package, is_update])
         if param_flag is not True:
             return response.json(444)
         else:
@@ -190,7 +239,8 @@ class PcInfo(View):
                     'update_time': add_time,
                     'file_type': file_type,
                     'package': package,
-                    'explain': explain
+                    'explain': explain,
+                    'is_update': is_update
                 }
                 pc_Info = Pc_Info(**create_dict)
                 pc_Info.save()
@@ -211,7 +261,8 @@ class PcInfo(View):
                            'update_time': pc_Info.update_time,
                            'file_type': pc_Info.file_type,
                            'package': pc_Info.package,
-                           'explain': pc_Info.explain
+                           'explain': pc_Info.explain,
+                           'is_update': pc_Info.is_update
                            }
                     return response.json(0, res)
                 else:
@@ -268,7 +319,11 @@ class PcInfo(View):
         elif id and package is None:
             file = Pc_Info.objects.filter(id=id)
         elif package and id is None:
-            file = Pc_Info.objects.filter(package=package)
+            try:
+                package = int(package)
+                file = Pc_Info.objects.filter(package=package)
+            except Exception as e:
+                return response.json(176)
         if not file.exists():
             return response.json(173)
         try:

+ 1 - 0
Model/models.py

@@ -1582,6 +1582,7 @@ class Pc_Info(models.Model):
     file_type = models.CharField(blank=True, max_length=32, verbose_name=u'文件类型')
     package = models.CharField(blank=True, max_length=32, verbose_name=u'整合包id')
     explain = models.TextField(blank=True, default='', verbose_name=u'更新内容')
+    is_update = models.SmallIntegerField(blank=True, default=0, verbose_name='强制更新。0:否,1:是')
 
     class Meta:
         db_table = 'pc_info'