Browse Source

云盘后台管理重置云盘

peng 2 years ago
parent
commit
33a5a29f3e

+ 90 - 9
AdminController/IcloudManagementController.py

@@ -2,14 +2,17 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 import time
 import time
 
 
-from django.db.models import F
+from django.db.models import F, Q, Sum
 from django.views.generic.base import View
 from django.views.generic.base import View
 
 
 from Model.models import Lang, ICloudStoreMeal, AiService, Order_Model, Device_User, CountryModel, UidSetModel, \
 from Model.models import Lang, ICloudStoreMeal, AiService, Order_Model, Device_User, CountryModel, UidSetModel, \
-    Device_Info, VodBucketModel
+    Device_Info, VodBucketModel, IcloudUseDetails, IcloudService, IcloudStorageRecord
+from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
+from Ansjer.config import ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME, SERVER_DOMAIN, AWS_ACCESS_KEY_ID, \
+    AWS_SECRET_ACCESS_KEY, SERVER_DOMAIN_SSL, OAUTH_ACCESS_TOKEN_SECRET
 
 
 
 
 class IcloudServeView(View):
 class IcloudServeView(View):
@@ -48,11 +51,11 @@ class IcloudServeView(View):
                 return self.add_or_edit_lang(request_dict, response)
                 return self.add_or_edit_lang(request_dict, response)
             elif operation == 'deleteMeal':
             elif operation == 'deleteMeal':
                 return self.delete_meal(request_dict, response)
                 return self.delete_meal(request_dict, response)
-            elif operation == 'deleteAiMealLanguage':
-                return self.deleteAiMealLanguage(request_dict, response)
+            elif operation == 'getUserIcloudInfo':
+                return self.get_user_icloud_info(request_dict, response)
             # 设备ai套餐相关
             # 设备ai套餐相关
-            elif operation == 'getDeviceAiMealList':
-                return self.getDeviceAiMealList(request_dict, response)
+            elif operation == 'resetIcloud':
+                return self.reset_icloud(request_dict, response)
             # ai用户信息相关
             # ai用户信息相关
             elif operation == 'getAiUserList':
             elif operation == 'getAiUserList':
                 return self.getAiUserList(request_dict, response)
                 return self.getAiUserList(request_dict, response)
@@ -82,7 +85,8 @@ class IcloudServeView(View):
             icloud_meal_list = []
             icloud_meal_list = []
             for icloud_meal in icloud_meals:
             for icloud_meal in icloud_meals:
                 # 获取支付方式列表
                 # 获取支付方式列表
-                pay_type_list = list(ICloudStoreMeal.objects.filter(id=icloud_meal['id']).values('pay_type__payment'))
+                pay_type_list = list(
+                    ICloudStoreMeal.objects.filter(id=icloud_meal['id']).values('pay_type__id', 'pay_type__payment'))
                 # 获取存储桶信息
                 # 获取存储桶信息
                 vod_bucket_qs = VodBucketModel.objects.filter(id=icloud_meal['bucket_id']).values('bucket')
                 vod_bucket_qs = VodBucketModel.objects.filter(id=icloud_meal['bucket_id']).values('bucket')
                 # 组织响应数据
                 # 组织响应数据
@@ -150,8 +154,9 @@ class IcloudServeView(View):
         if not meal_id:
         if not meal_id:
             return response.json(444)
             return response.json(444)
         icloud_meal_qs = ICloudStoreMeal.objects.filter(id=meal_id).values('lang__id')
         icloud_meal_qs = ICloudStoreMeal.objects.filter(id=meal_id).values('lang__id')
-        icloud_meal_qs.lang.remove(*icloud_meal_qs)
-        Lang.objects.filter(id=icloud_meal_qs[0]['lang__id']).delete()
+        lang = Lang.objects.filter(id=icloud_meal_qs[0]['lang__id'])
+        icloud_meal_qs = ICloudStoreMeal.objects.get(id=meal_id)
+        icloud_meal_qs.lang.remove(*lang)
         icloud_meal_qs.delete()
         icloud_meal_qs.delete()
         return response.json(0)
         return response.json(0)
 
 
@@ -192,3 +197,79 @@ class IcloudServeView(View):
         except Exception as e:
         except Exception as e:
             return response.json(500)
             return response.json(500)
 
 
+    @staticmethod
+    def delete_lang(request_dict, response):
+        lang_id = request_dict.get('lang_id', None)
+        meal_id = request_dict.get('meal_id', None)
+        if not all([lang_id, meal_id]):
+            return response.json(444)
+        try:
+            lang = Lang.objects.filter(id=lang_id)
+            icloud_meal_qs = ICloudStoreMeal.objects.get(id=meal_id)
+            icloud_meal_qs.lang.remove(*lang)
+            lang.delete()
+            return response.json(0)
+        except Exception as e:
+            return response.json(500)
+
+    @staticmethod
+    def get_user_icloud_info(request_dict, response):
+        user_id = request_dict.get('user_id', None)
+        page = request_dict.get('pageNo', None)
+        line = request_dict.get('pageSize', None)
+        if not all([page, line]):
+            return response.json(444)
+        now_time = int(time.time())
+        try:
+            icloud_user_qs = IcloudUseDetails.objects.all()
+            if user_id:
+                icloud_user_qs = icloud_user_qs.filter(user_id=user_id)
+            icloud_user_qs = icloud_user_qs.values('use_size', 'user_id', 'detect_status', 'bucket_id',
+                                                   'id')
+            for item in icloud_user_qs:
+                use_details_id = item['id']
+                user_id = item['user_id']
+                bucket_id = item['bucket_id']
+                user_qs = Device_User.objects.filter(userID=user_id).values('NickName')
+                item['username'] = user_qs[0]['NickName']
+                bucket_qs = VodBucketModel.objects.filter(id=bucket_id).values('bucket')
+                item['bucket_name'] = bucket_qs[0]['bucket']
+                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('size'))['total_size']
+                item['all_size'] = float(all_size * 1024) if all_size else 0  # 转换单位为MB
+
+            return response.json(0, list(icloud_user_qs))
+        except Exception as e:
+            return response.json(500)
+
+    @staticmethod
+    def reset_icloud(request_dict, response):
+        use_details_id = request_dict.get('id', None)
+        if not all([use_details_id]):
+            return response.json(444)
+        try:
+            icloud_use_qs = IcloudUseDetails.objects.filter(id=use_details_id).values('user_id')
+            user_id = icloud_use_qs[0]['user_id']
+            icloud_record = IcloudStorageRecord.objects.filter(user_id=user_id).values('bucket_id',)
+            bucket_id = icloud_record[0]['bucket_id']
+            bucket_qs = VodBucketModel.objects.filter(id=bucket_id).values('bucket', 'region', 'mold')
+            if not bucket_qs.exists():
+                return response.json(173)
+            bucket_name = bucket_qs[0]['bucket']
+            bucket_region = bucket_qs[0]['region']
+            mold = bucket_qs[0]['mold']
+            s3_obj = AmazonS3Util(
+                AWS_ACCESS_KEY_ID[mold],
+                AWS_SECRET_ACCESS_KEY[mold],
+                bucket_region
+            )
+            key_name = '{user_id}'.format(user_id=user_id)
+            object_list = s3_obj.get_object_list(bucket_name, key_name)
+            for obj in object_list:
+                s3_obj.delete_obj(bucket_name, obj['Key'])
+            icloud_record.delete()
+            icloud_use_qs.update(use_size=0)
+            return response.json(0)
+        except Exception as e:
+            return response.json(500)

+ 10 - 12
Controller/IcloudService/IcloudService.py

@@ -355,22 +355,20 @@ class IcloudServiceView(View):
             new_size = round(use_size - size, 2)
             new_size = round(use_size - size, 2)
             new_size = new_size if new_size > 0 else 0
             new_size = new_size if new_size > 0 else 0
             if file_type == '0':  # 图片
             if file_type == '0':  # 图片
-                key_name = '{user_id}/image_file/{uid}/vod{channel}/{time}'.format(user_id=user_id, uid=uid,
-                                                                                   channel=channel,
-                                                                                   time=time_stamp)
-                object_list = s3_obj.get_object_list(bucket_name, key_name)
+                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文件
             elif file_type == '1':  # ts文件
-                key_name = '{user_id}/ts_file/{uid}/vod{channel}/{time}'.format(user_id=user_id, uid=uid,
-                                                                                channel=channel,
-                                                                                time=time_stamp)
-                object_list = s3_obj.get_object_list(bucket_name, key_name)
+                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文件
             elif file_type == '2':  # mp4文件
-                key_name = '{user_id}/mp4_file/{uid}/vod{channel}/{time}'.format(user_id=user_id, uid=uid,
-                                                                                 channel=channel,
-                                                                                 time=time_stamp)
-                object_list = s3_obj.get_object_list(bucket_name, key_name)
+                key_name = '{user_id}/mp4_file/{uid}/channel{channel}/{time}'.format(user_id=user_id, uid=uid,
+                                                                                     channel=channel,
+                                                                                     time=time_stamp)
             else:
             else:
                 return response.json(444, {'error param': 'file_type'})
                 return response.json(444, {'error param': 'file_type'})
+            object_list = s3_obj.get_object_list(bucket_name, key_name)
             for item in object_list:
             for item in object_list:
                 s3_obj.delete_obj(bucket_name, item['Key'])
                 s3_obj.delete_obj(bucket_name, item['Key'])
             icloud_record_qs.delete()
             icloud_record_qs.delete()