Jelajahi Sumber

购买运存附送云盘服务

peng 2 tahun lalu
induk
melakukan
34ce10eb16

+ 55 - 10
Controller/CloudStorage.py

@@ -28,7 +28,7 @@ from Controller.PaymentCycle import Paypal
 from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, UID_Bucket, StsCrdModel, \
     ExperienceContextModel, Pay_Type, CDKcontextModel, Device_User, SysMsgModel, Unused_Uid_Meal, PromotionRuleModel, \
     VideoPlaybackTimeModel, CouponModel, VodBucketModel, VodHlsSummary, AiService, UidSetModel, UidPushModel, \
-    VodHlsTagType
+    VodHlsTagType, ICloudStoreMeal, IcloudUseDetails, IcloudService
 from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.AWS.S3Email import S3Email
 from Object.AliPayObject import AliPayObject
@@ -843,13 +843,13 @@ class CloudStorageView(View):
                         if not req_success:
                             return response.json(10044)
                         return response.json(0, {'uidTkUrl': uid_tk_url, 'storeHlsUrl': store_hls_url,
-                                                 'aiIdentificationUrl': aiIdentificationUrl, 'endTime': end_time, 'etk': etk})
+                                                 'aiIdentificationUrl': aiIdentificationUrl, 'endTime': end_time,
+                                                 'etk': etk})
 
                 return response.json(0, {'uidTkUrl': uid_tk_url, 'storeHlsUrl': store_hls_url})
         except Exception as e:
             return response.json(500, repr(e))
 
-
     @staticmethod
     def do_pay_error():
         response = HttpResponse()
@@ -917,13 +917,20 @@ class CloudStorageView(View):
                 rank = order_list[0]['rank']
 
                 store_qs = Store_Meal.objects.filter(id=rank).values("day", "bucket_id", "bucket__storeDay", "expire",
-                                                                     'is_ai')
-                bucket_id = store_qs[0]['bucket_id']
+                                                                     'is_ai', 'icloud_store_meal_id')
                 if not store_qs.exists():
                     return response.json(173)
+                bucket_id = store_qs[0]['bucket_id']
                 uiu_bucket_qs = UID_Bucket.objects.filter(uid=uid).values("id", "bucket_id", "bucket__storeDay",
                                                                           "bucket__region", "endTime", "use_status")
                 expire = store_qs[0]['expire']
+                icloud_store_meal_id = store_qs[0]['icloud_store_meal_id']
+                icloud_meal_qs = ICloudStoreMeal.objects.filter(id=icloud_store_meal_id).values('size')
+                if not icloud_meal_qs.exists():
+                    return response.json(173)
+                size = icloud_meal_qs[0]['size']
+                icloud_use_qs = IcloudUseDetails.objects.filter(user_id=userid).values('id')
+                use_details_id = icloud_use_qs[0]['id']
                 if order_list[0]['isSelectDiscounts'] == 1:
                     expire = store_qs[0]['expire'] * 2
                 # 是否有促销
@@ -992,6 +999,9 @@ class CloudStorageView(View):
                                 'endTime': end_time
                             }
                             AiService.objects.create(**ai_service_dict)
+                    # 开通云盘服务
+                    IcloudService.objects.create(orders_id=order_id, add_time=now_time, upd_time=now_time, type=1,
+                                                 size=size, end_time=end_time, use_details_id=use_details_id)
                     # 如果存在序列号,消息提示用序列号
                     device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
                     serial_number = device_info_qs[0]['serial_number']
@@ -1088,13 +1098,20 @@ class CloudStorageView(View):
             channel = order_list[0]['channel']
             rank = order_list[0]['rank']
             store_qs = Store_Meal.objects.filter(id=rank).values("day", "bucket_id", "bucket__storeDay", "expire",
-                                                                 'is_ai')
-            bucket_id = store_qs[0]['bucket_id']
+                                                                 'is_ai', 'icloud_store_meal_id')
             if not store_qs.exists():
                 return response.json(173)
+            bucket_id = store_qs[0]['bucket_id']
             uid_bucket_qs = UID_Bucket.objects.filter(uid=uid).values("id", "bucket_id", "bucket__storeDay",
                                                                       "bucket__region", "endTime", "use_status")
             expire = store_qs[0]['expire']
+            icloud_store_meal_id = store_qs[0]['icloud_store_meal_id']
+            icloud_meal_qs = ICloudStoreMeal.objects.filter(id=icloud_store_meal_id).values('size')
+            if not icloud_meal_qs.exists():
+                return response.json(173)
+            size = icloud_meal_qs[0]['size']
+            icloud_use_qs = IcloudUseDetails.objects.filter(user_id=userid).values('id')
+            use_details_id = icloud_use_qs[0]['id']
 
             if order_list[0]['isSelectDiscounts'] == 1:
                 expire = store_qs[0]['expire'] * 2
@@ -1163,6 +1180,9 @@ class CloudStorageView(View):
                             'endTime': end_time
                         }
                         AiService.objects.create(**ai_service_dict)
+                # 开通云盘服务
+                IcloudService.objects.create(orders_id=order_id, add_time=now_time, upd_time=now_time, type=1,
+                                             size=size, end_time=end_time, use_details_id=use_details_id)
                 # 如果存在序列号,消息提示用序列号
                 device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
                 serial_number = device_info_qs[0]['serial_number']
@@ -1241,13 +1261,20 @@ class CloudStorageView(View):
                 channel = order_list[0]['channel']
                 rank = order_list[0]['rank']
                 store_qs = Store_Meal.objects.filter(id=rank).values("day", "bucket_id", "bucket__storeDay", "expire",
-                                                                     'is_ai')
-                bucket_id = store_qs[0]['bucket_id']
+                                                                     'is_ai', 'icloud_store_meal_id')
                 if not store_qs.exists():
                     return HttpResponse(pay.xml_to_dict({'return_code': 'FAIL', 'return_msg': '套餐不存在'}))
+                bucket_id = store_qs[0]['bucket_id']
                 uid_bucket_qs = UID_Bucket.objects.filter(uid=uid).values("id", "bucket_id", "bucket__storeDay",
                                                                           "bucket__region", "endTime", "use_status")
                 expire = store_qs[0]['expire']
+                icloud_store_meal_id = store_qs[0]['icloud_store_meal_id']
+                icloud_meal_qs = ICloudStoreMeal.objects.filter(id=icloud_store_meal_id).values('size')
+                if not icloud_meal_qs.exists():
+                    return response.json(173)
+                size = icloud_meal_qs[0]['size']
+                icloud_use_qs = IcloudUseDetails.objects.filter(user_id=userid).values('id')
+                use_details_id = icloud_use_qs[0]['id']
                 if order_list[0]['isSelectDiscounts'] == 1:
                     expire = store_qs[0]['expire'] * 2
                 # 是否有促销
@@ -1316,6 +1343,9 @@ class CloudStorageView(View):
                                 'endTime': end_time
                             }
                             AiService.objects.create(**ai_service_dict)
+                    # 开通云盘服务
+                    IcloudService.objects.create(orders_id=order_id, add_time=now_time, upd_time=now_time, type=1,
+                                                 size=size, end_time=end_time, use_details_id=use_details_id)
                     # 如果存在序列号,消息提示用序列号
                     device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
                     serial_number = device_info_qs[0]['serial_number']
@@ -1374,6 +1404,9 @@ class CloudStorageView(View):
         if not all([uid, channel, pay_type, rank]):
             return response.json(444)
         pay_type = int(pay_type)
+        icloud_use_qs = IcloudUseDetails.objects.filter(user_id=user_id)
+        if not icloud_use_qs.exists():
+            return response.json(911)
         device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid, isShare=False, isExist=1).values(
             'vodPrimaryUserID',
             'vodPrimaryMaster')
@@ -1625,13 +1658,21 @@ class CloudStorageView(View):
         store_qs = Store_Meal.objects.filter(id=rank, lang__lang=lang, is_show=0).values("day", "bucket_id", 'is_ai',
                                                                                          "bucket__storeDay", "expire",
                                                                                          'lang__content', 'price',
-                                                                                         'currency', 'commodity_type')
+                                                                                         'currency', 'commodity_type',
+                                                                                         'icloud_store_meal_id')
         if not store_qs.exists():
             return response.json(173)
         bucket_id = store_qs[0]['bucket_id']
         uid_bucket_qs = UID_Bucket.objects.filter(uid=uid).values("id", "bucket_id", "bucket__storeDay",
                                                                   "bucket__region", "endTime", "use_status")
         expire = store_qs[0]['expire']
+        icloud_store_meal_id = store_qs[0]['icloud_store_meal_id']
+        icloud_meal_qs = ICloudStoreMeal.objects.filter(id=icloud_store_meal_id).values('size')
+        if not icloud_meal_qs.exists():
+            return response.json(173)
+        size = icloud_meal_qs[0]['size']
+        icloud_use_qs = IcloudUseDetails.objects.filter(user_id=user_id).values('id')
+        use_details_id = icloud_use_qs[0]['id']
         try:
             with transaction.atomic():
                 if uid_bucket_qs.exists():
@@ -1657,6 +1698,7 @@ class CloudStorageView(View):
                                                            endTime=end_time, addTime=now_time, updateTime=now_time,
                                                            use_status=1)
                     uid_bucket_id = uid_bucket.id
+                #  开通AI体验
                 if store_qs[0]['is_ai']:
                     order_type = 1
                     ai_service_qs = AiService.objects.filter(uid=uid, channel=channel)
@@ -1665,6 +1707,9 @@ class CloudStorageView(View):
                     else:
                         AiService.objects.create(uid=uid, channel=channel, detect_status=1, endTime=end_time,
                                                  addTime=now_time, updTime=now_time, use_status=1)
+                #  开通云盘体验
+                IcloudService.objects.create(orders_id=order_id, add_time=now_time, upd_time=now_time, type=1,
+                                             size=size, end_time=end_time, use_details_id=use_details_id)
                 store_meal_qs = Store_Meal.objects.filter(id=rank, lang__lang='cn', is_show=0).values('lang__title',
                                                                                                       'lang__content')
                 if store_meal_qs.exists():

+ 5 - 9
Controller/IcloudService/IcloudMeal.py

@@ -111,6 +111,9 @@ class IcloudMeal(View):
         user_qs = Device_User.objects.filter(userID=user_id)
         if not user_qs.exists():
             return response.json(173)
+        icloud_use_qs = IcloudUseDetails.objects.filter(user_id=user_id)
+        if not icloud_use_qs.exists():
+            return response.json(911)
         meal_qs = ICloudStoreMeal.objects.filter(id=rank, is_show=1, is_delete=0, lang__lang=lang,
                                                  pay_type=pay_type).values('lang__title', 'lang__content', 'currency',
                                                                            'price', 'bucket_id')
@@ -334,9 +337,8 @@ class IcloudMeal(View):
         user_id = order_list[0]['userID__userID']
         rank_id = order_list[0]['unify_combo_id']
 
-        icloud_meal_qs = ICloudStoreMeal.objects.filter(rank=rank_id).values('size', 'bucket_id', 'expire')
+        icloud_meal_qs = ICloudStoreMeal.objects.filter(id=rank_id).values('size', 'expire')
         size = icloud_meal_qs[0]['size']
-        bucket_id = icloud_meal_qs[0]['bucket_id']
         expire = icloud_meal_qs[0]['expire']
         end_time = CommonService.calcMonthLater(expire)
         icloud_service_dict = {'orders_id': order_id,
@@ -347,13 +349,7 @@ class IcloudMeal(View):
                                'end_time': end_time
                                }
         icloud_use_qs = IcloudUseDetails.objects.filter(user_id=user_id).values('id')
-        if not icloud_use_qs.exists():
-            icloud_use_qs = IcloudUseDetails.objects.create(add_time=now_time, upd_time=now_time, detect_status=1,
-                                                            user_id=user_id,
-                                                            bucket_id=bucket_id)
-            icloud_service_dict['use_details_id'] = icloud_use_qs.id
-        else:
-            icloud_service_dict['use_details_id'] = icloud_use_qs[0]['id']
+        icloud_service_dict['use_details_id'] = icloud_use_qs[0]['id']
 
         with transaction.atomic():
             # 更新订单数据,返回支付成功url

+ 2 - 0
Object/ResponseObject.py

@@ -78,6 +78,7 @@ class ResponseObject(object):
             906: 'Cause of file operation error',
             907: 'The download file does not exist!',
             910: 'Icloud Insufficient capacity!',
+            911: 'No opened Icloud',
             10001: 'Customer number, customer confidentiality error',
             10002: 'Check your configuration: no customer number, customer confidentiality',
             10003: 'The authorization code does not exist. Please reauthorize',
@@ -195,6 +196,7 @@ class ResponseObject(object):
             906: '文件操作错误',
             907: '文件不存在!',
             910: '云盘容量不足!',
+            911: '未开通云盘!',
             10001: '客户编号,客户机密错误',
             10002: '检查您的配置:没有客户编号,客户机密',
             10003: '授权码不存在,请重新授权',