Browse Source

支持批量删除云盘上传记录

peng 2 years ago
parent
commit
cc43f5a154

+ 16 - 6
AdminController/IcloudManagementController.py

@@ -39,21 +39,23 @@ class IcloudServeView(View):
                 return response.json(tko.code)
             response.lang = tko.lang
             user_id = tko.userID
-            # ai套餐信息相关
+            # icloud套餐信息相关
             if operation == 'getIcloudStoreMealList':
                 return self.get_icloud_store_meal_list(request_dict, response)
             elif operation == 'addOrEditIcloudStoreMeal':
                 return self.add_or_edit_icloud_store_meal(request_dict, response)
+            elif operation == 'deleteMeal':
+                return self.delete_meal(request_dict, response)
+            # icloud套餐语言相关
             elif operation == 'getMealLang':
                 return self.get_meal_lang(request_dict, response)
-            # ai套餐语言相关
             elif operation == 'addOrEditLang':
                 return self.add_or_edit_lang(request_dict, response)
-            elif operation == 'deleteMeal':
-                return self.delete_meal(request_dict, response)
+            elif operation == 'deleteLang':
+                return self.delete_lang(request_dict, response)
+            # 用户云盘信息
             elif operation == 'getUserIcloudInfo':
                 return self.get_user_icloud_info(request_dict, response)
-            # 设备ai套餐相关
             elif operation == 'resetIcloud':
                 return self.reset_icloud(request_dict, response)
             # ai用户信息相关
@@ -185,14 +187,22 @@ class IcloudServeView(View):
     @staticmethod
     def add_or_edit_lang(request_dict, response):
         lang_id = request_dict.get('lang_id', None)
+        meal_id = request_dict.get('meal_id', None)
         lang = request_dict.get('lang', 'en')
         title = request_dict.get('title', None)
         content = request_dict.get('content', None)
         try:
+            icloud_meal_qs = ICloudStoreMeal.objects.get(id=meal_id)
+            if not icloud_meal_qs:
+                return response.json(173)
             if lang_id:
                 Lang.objects.filter(id=lang_id).update(lang=lang, title=title, content=content)
             else:
-                Lang.objects.create(lang=lang, title=title, content=content, type=3)
+                lang = Lang.objects.filter(lang=lang, title=title, content=content, type=3)
+                if not lang.exists():
+                    Lang.objects.create(lang=lang, title=title, content=content, type=3)
+                    lang = Lang.objects.filter(lang=lang, title=title, content=content, type=3)
+                icloud_meal_qs.lang.set(*lang)
             return response.json(0)
         except Exception as e:
             return response.json(500)

+ 32 - 31
Controller/IcloudService/IcloudService.py

@@ -321,25 +321,20 @@ class IcloudServiceView(View):
         @return: response
         """
         LOGGER.info('删除云盘记录')
-        time_stamp = request_dict.get('time_stamp', None)
-        file_type = request_dict.get('file_type', None)
-        uid = request_dict.get('uid', None)
-        channel = request_dict.get('channel', None)
-        if not all([time_stamp, uid, channel]):
-            return response.json(444, {'error param': 'time_stamp,channel,uid'})
+        record_ids = request_dict.get('record_ids', None)
+        if not all([record_ids]):
+            return response.json(444, {'error param': 'record_id'})
+        record_id_list = record_ids.split(',')
         # 查询是否开通云盘
         use_details_qs = IcloudUseDetails.objects.filter(user_id=user_id).values('use_size', 'bucket_id')
         if not use_details_qs.exists():
             return response.json(173)
         use_size = float(use_details_qs[0]['use_size'])
         bucket_id = use_details_qs[0]['bucket_id']
-        icloud_record_qs = IcloudStorageRecord.objects.filter(user_id=user_id, uid=uid, channel=channel,
-                                                              time_stamp=time_stamp,
-                                                              bucket_id=bucket_id, file_type=file_type)
+        icloud_record_qs = IcloudStorageRecord.objects.filter(user_id=user_id, id__in=record_id_list)
         if not icloud_record_qs.exists():
             return response.json(173)
-        record_qs = icloud_record_qs.values('size')
-        size = float(record_qs[0]['size'])
+        record_qs = icloud_record_qs.values('size', 'uid', 'channel', 'time_stamp', 'file_type')
         bucket_qs = VodBucketModel.objects.filter(id=bucket_id).values('bucket', 'region', 'mold')
         if not bucket_qs.exists():
             return response.json(173)
@@ -352,27 +347,33 @@ class IcloudServiceView(View):
                 AWS_SECRET_ACCESS_KEY[mold],
                 bucket_region
             )
-            new_size = round(use_size - size, 2)
-            new_size = new_size if new_size > 0 else 0
-            if file_type == '0':  # 图片
-                key_name = '{user_id}/image_file/{uid}/channel{channel}/{time}'.format(user_id=user_id, uid=uid,
-                                                                                       channel=channel,
-                                                                                       time=time_stamp)
-            elif file_type == '1':  # ts文件
-                key_name = '{user_id}/ts_file/{uid}/channel{channel}/{time}'.format(user_id=user_id, uid=uid,
-                                                                                    channel=channel,
-                                                                                    time=time_stamp)
-            elif file_type == '2':  # mp4文件
-                key_name = '{user_id}/mp4_file/{uid}/channel{channel}/{time}'.format(user_id=user_id, uid=uid,
-                                                                                     channel=channel,
-                                                                                     time=time_stamp)
-            else:
-                return response.json(444, {'error param': 'file_type'})
-            object_list = s3_obj.get_object_list(bucket_name, key_name)
-            for item in object_list:
-                s3_obj.delete_obj(bucket_name, item['Key'])
+            for item in record_qs:
+                size = float(item['size'])
+                uid = item['uid']
+                channel = item['channel']
+                time_stamp = item['time_stamp']
+                file_type = item['file_type']
+                use_size = round(use_size - size, 2)
+                if file_type == 0:  # 图片
+                    key_name = '{user_id}/image_file/{uid}/channel{channel}/{time}'.format(user_id=user_id, uid=uid,
+                                                                                           channel=channel,
+                                                                                           time=time_stamp)
+                elif file_type == 1:  # ts文件
+                    key_name = '{user_id}/ts_file/{uid}/channel{channel}/{time}'.format(user_id=user_id, uid=uid,
+                                                                                        channel=channel,
+                                                                                        time=time_stamp)
+                elif file_type == 2:  # mp4文件
+                    key_name = '{user_id}/mp4_file/{uid}/channel{channel}/{time}'.format(user_id=user_id, uid=uid,
+                                                                                         channel=channel,
+                                                                                         time=time_stamp)
+                else:
+                    return response.json(444, {'error param': 'file_type'})
+                object_list = s3_obj.get_object_list(bucket_name, key_name)
+                for obj in object_list:
+                    s3_obj.delete_obj(bucket_name, obj['Key'])
+            use_size = use_size if use_size > 0 else 0
             icloud_record_qs.delete()
-            use_details_qs.update(use_size=new_size)
+            use_details_qs.update(use_size=use_size)
             return response.json(0)
         except Exception as e:
             LOGGER.info('删除云盘记录异常:{}'.format(repr(e)))