|
@@ -1223,74 +1223,77 @@ class CloudStorageView(View):
|
|
ubqs = UID_Bucket.objects.filter(uid=uid).values("id", "bucket_id", "bucket__storeDay", "bucket__region",
|
|
ubqs = UID_Bucket.objects.filter(uid=uid).values("id", "bucket_id", "bucket__storeDay", "bucket__region",
|
|
"endTime", "use_status")
|
|
"endTime", "use_status")
|
|
expire = smqs[0]['expire']
|
|
expire = smqs[0]['expire']
|
|
- with transaction.atomic():
|
|
|
|
- if ubqs.exists():
|
|
|
|
- ubq = ubqs[0]
|
|
|
|
- if ubq['use_status'] == 1 and ubq['bucket_id'] == bucketId: #套餐使用中并且相同套餐叠加过期时间
|
|
|
|
- endTime = CommonService.calcMonthLater(expire, ubq['endTime'])
|
|
|
|
- UID_Bucket.objects.filter(id=ubq['id']).update \
|
|
|
|
- (uid=uid, channel=channel, bucket_id=bucketId,
|
|
|
|
- endTime=endTime, updateTime=nowTime)
|
|
|
|
- else: #已过期或者不相同的套餐加入未使用的关联套餐表
|
|
|
|
- has_unused = Unused_Uid_Meal.objects.filter(uid=uid, bucket_id=bucketId).values("id")
|
|
|
|
- nums = 2 if order_list[0]['isSelectDiscounts'] == 1 else 1
|
|
|
|
- if has_unused.exists():
|
|
|
|
- Unused_Uid_Meal.objects.filter(id=has_unused[0]['id']).update(num=F('num') + nums)
|
|
|
|
- else:
|
|
|
|
- Unused_Uid_Meal.objects.create(uid=uid,channel=channel,addTime=nowTime,num=nums,
|
|
|
|
- expire=smqs[0]['expire'],bucket_id=bucketId)
|
|
|
|
- UID_Bucket.objects.filter(id=ubq['id']).update(has_unused=1)
|
|
|
|
- uid_bucket_id = ubq['id']
|
|
|
|
- else:
|
|
|
|
- endTime = CommonService.calcMonthLater(expire)
|
|
|
|
- ub_cqs = UID_Bucket.objects.create \
|
|
|
|
- (uid=uid, channel=channel, bucket_id=bucketId, endTime=endTime, addTime=nowTime,
|
|
|
|
- updateTime=nowTime,use_status=1)
|
|
|
|
- uid_bucket_id = ub_cqs.id
|
|
|
|
- Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
|
|
|
|
- desc=smqs[0]['lang__content'], payType=pay_type, payTime=nowTime,
|
|
|
|
- price=smqs[0]['price'], currency=smqs[0]['currency'], addTime=nowTime,
|
|
|
|
- updTime=nowTime,
|
|
|
|
- pay_url="体验版",
|
|
|
|
- commodity_code=commodity_code, commodity_type=smqs[0]['commodity_type'],
|
|
|
|
- rank_id=rank, status=1, uid_bucket_id=uid_bucket_id)
|
|
|
|
|
|
+ try:
|
|
|
|
+ with transaction.atomic():
|
|
|
|
+ if ubqs.exists():
|
|
|
|
+ ubq = ubqs[0]
|
|
|
|
+ if ubq['use_status'] == 1 and ubq['bucket_id'] == bucketId: #套餐使用中并且相同套餐叠加过期时间
|
|
|
|
+ endTime = CommonService.calcMonthLater(expire, ubq['endTime'])
|
|
|
|
+ UID_Bucket.objects.filter(id=ubq['id']).update \
|
|
|
|
+ (uid=uid, channel=channel, bucket_id=bucketId,
|
|
|
|
+ endTime=endTime, updateTime=nowTime)
|
|
|
|
+ else: #已过期或者不相同的套餐加入未使用的关联套餐表
|
|
|
|
+ has_unused = Unused_Uid_Meal.objects.filter(uid=uid, bucket_id=bucketId).values("id")
|
|
|
|
+ nums = 2 if order_list[0]['isSelectDiscounts'] == 1 else 1
|
|
|
|
+ if has_unused.exists():
|
|
|
|
+ Unused_Uid_Meal.objects.filter(id=has_unused[0]['id']).update(num=F('num') + nums)
|
|
|
|
+ else:
|
|
|
|
+ Unused_Uid_Meal.objects.create(uid=uid,channel=channel,addTime=nowTime,num=nums,
|
|
|
|
+ expire=smqs[0]['expire'],bucket_id=bucketId)
|
|
|
|
+ UID_Bucket.objects.filter(id=ubq['id']).update(has_unused=1)
|
|
|
|
+ uid_bucket_id = ubq['id']
|
|
|
|
+ else:
|
|
|
|
+ endTime = CommonService.calcMonthLater(expire)
|
|
|
|
+ ub_cqs = UID_Bucket.objects.create \
|
|
|
|
+ (uid=uid, channel=channel, bucket_id=bucketId, endTime=endTime, addTime=nowTime,
|
|
|
|
+ updateTime=nowTime,use_status=1)
|
|
|
|
+ uid_bucket_id = ub_cqs.id
|
|
|
|
+ Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
|
|
|
|
+ desc=smqs[0]['lang__content'], payType=pay_type, payTime=nowTime,
|
|
|
|
+ price=smqs[0]['price'], currency=smqs[0]['currency'], addTime=nowTime,
|
|
|
|
+ updTime=nowTime,
|
|
|
|
+ pay_url="体验版",
|
|
|
|
+ commodity_code=commodity_code, commodity_type=smqs[0]['commodity_type'],
|
|
|
|
+ rank_id=rank, status=1, uid_bucket_id=uid_bucket_id)
|
|
|
|
|
|
- duq = Device_User.objects.filter(userID=userID).values('username')
|
|
|
|
- dvq = Device_Info.objects.filter(UID=uid, vodPrimaryUserID='', vodPrimaryMaster='')
|
|
|
|
|
|
+ duq = Device_User.objects.filter(userID=userID).values('username')
|
|
|
|
+ dvq = Device_Info.objects.filter(UID=uid, vodPrimaryUserID='', vodPrimaryMaster='')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- if dvq.exists():
|
|
|
|
- dvq_set_update_dict = {
|
|
|
|
- 'vodPrimaryUserID': userID,
|
|
|
|
- 'vodPrimaryMaster': duq[0]['username']
|
|
|
|
- }
|
|
|
|
- dvq.update(**dvq_set_update_dict)
|
|
|
|
-
|
|
|
|
- sys_msg_text_list = ['成功购买云存', 'Successful purchase of cloud storage']
|
|
|
|
- # return response.json(0)
|
|
|
|
- returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
|
|
|
|
- if pay_type == 10:
|
|
|
|
- ExperienceContextModel.objects.create(
|
|
|
|
- experience_type=0,
|
|
|
|
- uid=uid,
|
|
|
|
- do_time=nowTime
|
|
|
|
- )
|
|
|
|
- returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=10&lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
|
|
|
|
- sys_msg_text_list = ['成功体验云存', 'Successful experience of cloud storage']
|
|
|
|
|
|
+ if dvq.exists():
|
|
|
|
+ dvq_set_update_dict = {
|
|
|
|
+ 'vodPrimaryUserID': userID,
|
|
|
|
+ 'vodPrimaryMaster': duq[0]['username']
|
|
|
|
+ }
|
|
|
|
+ dvq.update(**dvq_set_update_dict)
|
|
|
|
+
|
|
|
|
+ sys_msg_text_list = ['成功购买云存', 'Successful purchase of cloud storage']
|
|
|
|
+ # return response.json(0)
|
|
|
|
+ returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
|
|
|
|
+ if pay_type == 10:
|
|
|
|
+ ExperienceContextModel.objects.create(
|
|
|
|
+ experience_type=0,
|
|
|
|
+ uid=uid,
|
|
|
|
+ do_time=nowTime
|
|
|
|
+ )
|
|
|
|
+ returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=10&lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
|
|
|
|
+ sys_msg_text_list = ['成功体验云存', 'Successful experience of cloud storage']
|
|
|
|
|
|
- if pay_type == 11:
|
|
|
|
- update_dict = {}
|
|
|
|
- update_dict['is_activate'] = 1
|
|
|
|
- update_dict['order'] = orderID
|
|
|
|
- CDKcontextModel.objects.filter(cdk=cdk).update(**update_dict)
|
|
|
|
- returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=11&lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
|
|
|
|
- sys_msg_text_list = ['成功兑换云存', 'Successful exchange of cloud storage']
|
|
|
|
|
|
+ if pay_type == 11:
|
|
|
|
+ update_dict = {}
|
|
|
|
+ update_dict['is_activate'] = 1
|
|
|
|
+ update_dict['order'] = orderID
|
|
|
|
+ CDKcontextModel.objects.filter(cdk=cdk).update(**update_dict)
|
|
|
|
+ returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=11&lang={lang}".format(SERVER_DOMAIN=SERVER_DOMAIN,lang=lang)
|
|
|
|
+ sys_msg_text_list = ['成功兑换云存', 'Successful exchange of cloud storage']
|
|
|
|
|
|
|
|
|
|
- self.do_vod_msg_Notice(uid, channel, userID, lang, sys_msg_text_list)
|
|
|
|
- result = returnurl
|
|
|
|
- return response.json(0, result)
|
|
|
|
|
|
+ self.do_vod_msg_Notice(uid, channel, userID, lang, sys_msg_text_list)
|
|
|
|
+ result = returnurl
|
|
|
|
+ return response.json(0, result)
|
|
|
|
+ except Exception:
|
|
|
|
+ return response.json(474)
|
|
# red_url =
|
|
# red_url =
|
|
# return JsonResponse(status=200, data={'red_url': red_url})
|
|
# return JsonResponse(status=200, data={'red_url': red_url})
|
|
|
|
|
|
@@ -1340,41 +1343,44 @@ class CloudStorageView(View):
|
|
lang = request_dict.get('lang', None)
|
|
lang = request_dict.get('lang', None)
|
|
dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1) \
|
|
dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1) \
|
|
.values('vodPrimaryUserID')
|
|
.values('vodPrimaryUserID')
|
|
- if not dv_qs.exists() or dv_qs[0]['vodPrimaryUserID'] != userID:
|
|
|
|
- return response.json(12)
|
|
|
|
|
|
+ # if not dv_qs.exists() or dv_qs[0]['vodPrimaryUserID'] != userID:
|
|
|
|
+ # return response.json(12)
|
|
now_time = int(time.time())
|
|
now_time = int(time.time())
|
|
|
|
+ bucket_id_list = []
|
|
|
|
+ store_list = []
|
|
uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid","bucket__content",
|
|
uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid","bucket__content",
|
|
- "use_status","endTime","has_unused")
|
|
|
|
|
|
+ "use_status","endTime","has_unused","bucket__id")
|
|
if not uid_bucket:
|
|
if not uid_bucket:
|
|
return response.json(10030)
|
|
return response.json(10030)
|
|
- commodity_dict = {}
|
|
|
|
- if uid_bucket[0]['has_unused'] == 1:
|
|
|
|
- unused = Unused_Uid_Meal.objects.filter(uid=uid).annotate(unused_id=F('id'))\
|
|
|
|
- .values("unused_id","uid","bucket__content","num")
|
|
|
|
- commodity_dict['using'] = list(uid_bucket)
|
|
|
|
- commodity_dict['unused'] = list(unused)
|
|
|
|
- else:
|
|
|
|
- commodity_dict['using'] = [uid_bucket]
|
|
|
|
- return response.json(0, commodity_dict)
|
|
|
|
- uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid", "endTime",
|
|
|
|
- "bucket__content", "bucket__id").order_by(
|
|
|
|
- 'addTime')
|
|
|
|
- bclist = []
|
|
|
|
- for ub in uid_bucket:
|
|
|
|
- bclist.append(ub['bucket__id'])
|
|
|
|
-
|
|
|
|
- smqs = Store_Meal.objects.filter(bucket__id__in=bclist, lang__lang=lang).values('lang__lang','bucket__id','lang__title')
|
|
|
|
- for index, value in enumerate(uid_bucket):
|
|
|
|
- value['is_use'] = 0
|
|
|
|
- if index == 0:
|
|
|
|
- value['is_use'] = 1
|
|
|
|
-
|
|
|
|
|
|
+ uid_bucket[0]['storage'] = 0
|
|
|
|
+ has_unused = uid_bucket[0]['has_unused']
|
|
|
|
+ del uid_bucket[0]['has_unused']
|
|
|
|
+ store_list.append(uid_bucket[0])
|
|
|
|
+ bucket_id_list.append(uid_bucket[0]['bucket__id'])
|
|
|
|
+ if has_unused == 1:
|
|
|
|
+ unuseds = Unused_Uid_Meal.objects.filter(uid=uid).annotate(unused_id=F('id')) \
|
|
|
|
+ .values("unused_id","uid","bucket__content","num","bucket__id","expire")
|
|
|
|
+ for ub in unuseds:
|
|
|
|
+ storage_time = ub['num'] * ub['expire']
|
|
|
|
+ storage = "{storage_time}个月".format(storage_time=storage_time)
|
|
|
|
+ unused_dict = {
|
|
|
|
+ "id":ub['unused_id'],
|
|
|
|
+ "uid":ub['uid'],
|
|
|
|
+ "bucket__content":ub['bucket__content'],
|
|
|
|
+ "use_status":0,
|
|
|
|
+ "endTime":0,
|
|
|
|
+ "bucket__id":ub['bucket__id'],
|
|
|
|
+ "storage":storage,
|
|
|
|
+ }
|
|
|
|
+ store_list.append(unused_dict)
|
|
|
|
+ bucket_id_list.append(ub['bucket__id'])
|
|
|
|
+ smqs = Store_Meal.objects.filter(bucket__id__in=bucket_id_list, lang__lang=lang).values('lang__lang','bucket__id','lang__title')
|
|
|
|
+ for index, value in enumerate(store_list):
|
|
for sm in smqs:
|
|
for sm in smqs:
|
|
-
|
|
|
|
if value['bucket__id'] == sm['bucket__id']:
|
|
if value['bucket__id'] == sm['bucket__id']:
|
|
value['bucket__content'] = sm['lang__title']
|
|
value['bucket__content'] = sm['lang__title']
|
|
|
|
|
|
- return response.json(0, list(uid_bucket))
|
|
|
|
|
|
+ return response.json(0, list(store_list))
|
|
|
|
|
|
# 提前使用设备关联套餐
|
|
# 提前使用设备关联套餐
|
|
def switch_device_commodity(self, request_dict, userID, response):
|
|
def switch_device_commodity(self, request_dict, userID, response):
|