Browse Source

云存转移云盘

peng 2 years ago
parent
commit
716fb19079
2 changed files with 18 additions and 17 deletions
  1. 15 14
      Controller/IcloudService/IcloudService.py
  2. 3 3
      Model/models.py

+ 15 - 14
Controller/IcloudService/IcloudService.py

@@ -68,15 +68,15 @@ class IcloudServiceView(View):
         if not use_details_qs.exists():
             return response.json(173)
         use_details_id = use_details_qs[0]['id']
-        bucket_id = use_details_qs[0]['bucket_id']
+        target_bucket_id = use_details_qs[0]['bucket_id']
         use_size = use_details_qs[0]['use_size']
         now_time = int(time.time())
         nickname = device_qs[0]['NickName']
         # 判断云盘是否还有容量
         all_size = IcloudService.objects.filter(Q(use_details_id=use_details_id), Q(use_status=0),
                                                 Q(end_time__gt=now_time) | Q(end_time=0)).values(
-            'size').aggregate(total_size=Sum('count'))['total_size']
-        all_size = all_size if all_size else 0
+            'size').aggregate(total_size=Sum('size'))['total_size']
+        all_size = all_size * 1024 if all_size else 0
         if use_size > all_size:
             return response.json(910)
         split_vod_hls_obj = SplitVodHlsObject()
@@ -85,12 +85,12 @@ class IcloudServiceView(View):
         if not vod_hls.exists():
             return response.json(173)
         source_bucket_id = vod_hls[0]['bucket_id']
-        fg = vod_hls[0]['fg']
+        fg = int(vod_hls[0]['fg'])
         sec = vod_hls[0]['sec']
-        bucket_qs = VodBucketModel.objects.filter(id=bucket_id).values('bucket')
-        if not bucket_qs.exists():
+        target_bucket_qs = VodBucketModel.objects.filter(id=target_bucket_id).values('bucket')
+        if not target_bucket_qs.exists():
             return response.json(173)
-        to_bucket_name = bucket_qs[0]['bucket']
+        target_bucket_name = target_bucket_qs[0]['bucket']
 
         source_bucket_qs = VodBucketModel.objects.filter(id=source_bucket_id).values('bucket', 'region', 'mold')
         if not source_bucket_qs.exists():
@@ -113,17 +113,18 @@ class IcloudServiceView(View):
                     ts_file = '{uid}/vod{channel}/{time}/ts{i}.ts'.format(uid=uid, channel=channel, time=start_time,
                                                                           i=i)
                     ts_list.append(ts_file)
-                    ts_size += s3_obj.get_object_size(source_bucket_name, ts_file)
-            temp_size = ts_size + use_size
+                    ts_size += s3_obj.get_object_size(source_bucket_name, ts_file)  # 获取存储对象字节,单位B
+            ts_size = ts_size/1024/1024
+            temp_size = round(ts_size + use_size, 2)
             if temp_size > all_size:
                 return response.json(910)
-            for item in ts_list:
-                key_name = '{user_id}/ts_file/'.format(user_id=user_id) + item
-                s3_obj.copy_single_obj(source_bucket_name, item, to_bucket_name, key_name)
+            for source_key in ts_list:
+                target_key = '{user_id}/ts_file/'.format(user_id=user_id) + source_key
+                s3_obj.copy_single_obj(source_bucket_name, source_key, target_bucket_name, target_key)
             IcloudStorageRecord.objects.create(user_id=user_id, uid=uid, channel=channel, time_stamp=start_time,
                                                nickname=nickname,
-                                               sec=sec, bucket_id=bucket_id, fg=fg, size=ts_size, store_type=1)
-            use_details_qs.update(size=temp_size)
+                                               sec=sec, bucket_id=target_bucket_id, fg=fg, size=ts_size, store_type=1)
+            use_details_qs.update(use_size=temp_size)
             return response.json(0)
         except Exception as e:
             print(e)

+ 3 - 3
Model/models.py

@@ -3562,7 +3562,7 @@ class ICloudStoreMeal(models.Model):
     is_show = models.SmallIntegerField(default=0, verbose_name=u'是否隐藏 [0=隐藏,1展示]')
     is_delete = models.SmallIntegerField(default=0, verbose_name=u'是否删除 [0=否,1=是]')
     lang = models.ManyToManyField(to='Lang', verbose_name='套餐语言', db_table='icloud_store_meal_lang')
-    size = models.IntegerField(null=True, default=0, verbose_name='云盘容量大小')  # 单位G
+    size = models.IntegerField(null=True, default=0, verbose_name='云盘容量大小')  # 单位GB
     bucket_id = models.SmallIntegerField(default=0, verbose_name='关联存储桶id')
     sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序,越小越靠前')
 
@@ -3578,7 +3578,7 @@ class ICloudStoreMeal(models.Model):
 
 class IcloudUseDetails(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    use_size = models.IntegerField(default=0, verbose_name='已使用容量大小')  # 单位G
+    use_size = models.DecimalField(default=0, max_digits=10, decimal_places=2, verbose_name='已使用容量大小')  # 单位MB
     add_time = models.IntegerField(verbose_name='添加时间', default=0)
     upd_time = models.BigIntegerField(verbose_name='更新时间', default=0)
     detect_status = models.SmallIntegerField(default=0, verbose_name='开关状态')  # 0:关闭, 1:开启
@@ -3594,7 +3594,7 @@ class IcloudUseDetails(models.Model):
 
 class IcloudService(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    size = models.IntegerField(default=0, verbose_name='容量大小')  # 单位G
+    size = models.IntegerField(default=0, verbose_name='容量大小')  # 单位GB
     end_time = models.IntegerField(verbose_name='套餐结束时间', db_index=True, default=0)
     add_time = models.IntegerField(verbose_name='添加时间', default=0)
     upd_time = models.IntegerField(verbose_name='更新时间', default=0)