|
@@ -2,14 +2,17 @@
|
|
|
# -*- coding: utf-8 -*-
|
|
|
import time
|
|
|
|
|
|
-from django.db.models import F
|
|
|
+from django.db.models import F, Q, Sum
|
|
|
from django.views.generic.base import View
|
|
|
|
|
|
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.TokenObject import TokenObject
|
|
|
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):
|
|
@@ -48,11 +51,11 @@ class IcloudServeView(View):
|
|
|
return self.add_or_edit_lang(request_dict, response)
|
|
|
elif operation == 'deleteMeal':
|
|
|
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套餐相关
|
|
|
- elif operation == 'getDeviceAiMealList':
|
|
|
- return self.getDeviceAiMealList(request_dict, response)
|
|
|
+ elif operation == 'resetIcloud':
|
|
|
+ return self.reset_icloud(request_dict, response)
|
|
|
# ai用户信息相关
|
|
|
elif operation == 'getAiUserList':
|
|
|
return self.getAiUserList(request_dict, response)
|
|
@@ -82,7 +85,8 @@ class IcloudServeView(View):
|
|
|
icloud_meal_list = []
|
|
|
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')
|
|
|
# 组织响应数据
|
|
@@ -150,8 +154,9 @@ class IcloudServeView(View):
|
|
|
if not meal_id:
|
|
|
return response.json(444)
|
|
|
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()
|
|
|
return response.json(0)
|
|
|
|
|
@@ -192,3 +197,79 @@ class IcloudServeView(View):
|
|
|
except Exception as e:
|
|
|
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)
|