|
@@ -26,7 +26,7 @@ from django.views.generic.base import View
|
|
|
|
|
|
from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \
|
|
from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \
|
|
SERVER_DOMAIN_SSL
|
|
SERVER_DOMAIN_SSL
|
|
-from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel
|
|
|
|
|
|
+from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, Device_User, ExperienceContextModel
|
|
from Object.AliPayObject import AliPayObject
|
|
from Object.AliPayObject import AliPayObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
@@ -103,6 +103,8 @@ class CloudStorageView(View):
|
|
return self.do_commodity_list(request_dict, userID, response)
|
|
return self.do_commodity_list(request_dict, userID, response)
|
|
elif operation == 'queryorder':
|
|
elif operation == 'queryorder':
|
|
return self.do_query_order(request_dict, userID, response)
|
|
return self.do_query_order(request_dict, userID, response)
|
|
|
|
+ elif operation == 'do_experience_order':
|
|
|
|
+ return self.do_query_order(request_dict, userID, response)
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
|
|
|
|
@@ -169,15 +171,25 @@ class CloudStorageView(View):
|
|
|
|
|
|
def do_commodity_list(self, request_dict, userID, response):
|
|
def do_commodity_list(self, request_dict, userID, response):
|
|
mold = request_dict.get('mold', None)
|
|
mold = request_dict.get('mold', None)
|
|
|
|
+ uid = request_dict.get('uid', None)
|
|
qs = Store_Meal.objects
|
|
qs = Store_Meal.objects
|
|
|
|
+ eq = ExperienceContextModel.objects.filter(uid=uid,experience_type=1).values();
|
|
|
|
+ # userqs = Device_User.objects.filter(userID=userID).values('is_experience')
|
|
|
|
+
|
|
if mold:
|
|
if mold:
|
|
qs = qs.filter(bucket__mold=mold)
|
|
qs = qs.filter(bucket__mold=mold)
|
|
else:
|
|
else:
|
|
qs = qs.all()
|
|
qs = qs.all()
|
|
|
|
+
|
|
|
|
+ if eq:
|
|
|
|
+ qs.exclude(price=0.00)
|
|
|
|
+
|
|
qs = qs.values("id", "title", "content", "price",
|
|
qs = qs.values("id", "title", "content", "price",
|
|
"day", "currency", "bucket__storeDay",
|
|
"day", "currency", "bucket__storeDay",
|
|
"bucket__bucket", "bucket__area", "type",
|
|
"bucket__bucket", "bucket__area", "type",
|
|
- "commodity_code", "commodity_type")
|
|
|
|
|
|
+ "commodity_code", "commodity_type")
|
|
|
|
+
|
|
|
|
+
|
|
if qs.exists():
|
|
if qs.exists():
|
|
ql = list(qs)
|
|
ql = list(qs)
|
|
from operator import itemgetter
|
|
from operator import itemgetter
|
|
@@ -981,3 +993,121 @@ class CloudStorageView(View):
|
|
'error_code': 0})
|
|
'error_code': 0})
|
|
else:
|
|
else:
|
|
return response.json(10, '生成订单错误.')
|
|
return response.json(10, '生成订单错误.')
|
|
|
|
+
|
|
|
|
+ # 生成体验订单
|
|
|
|
+ def do_experience_order(self, request_dict, userID, response):
|
|
|
|
+ uid = request_dict.get('uid', None)
|
|
|
|
+ channel = request_dict.get('channel', None)
|
|
|
|
+ commodity_code = request_dict.get('commodity_code', None)
|
|
|
|
+ pay_type = int(request_dict.get('pay_type', None))
|
|
|
|
+ rank = request_dict.get('rank', None)
|
|
|
|
+
|
|
|
|
+ if uid == None or channel == None or commodity_code == None or pay_type == None or rank == None:
|
|
|
|
+ return response.json(13, '参数有误.')
|
|
|
|
+ dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1)
|
|
|
|
+ if not dv_qs.exists():
|
|
|
|
+ return response.json(12)
|
|
|
|
+ smqs = Store_Meal.objects.filter(commodity_code=commodity_code, type=pay_type). \
|
|
|
|
+ values('currency', 'price', 'content', 'day', 'commodity_type', 'title', 'content')
|
|
|
|
+ if not smqs.exists():
|
|
|
|
+ return response.json(10, '套餐不存在')
|
|
|
|
+ currency = smqs[0]['currency']
|
|
|
|
+ price = smqs[0]['price']
|
|
|
|
+ content = smqs[0]['content']
|
|
|
|
+ day = smqs[0]['day']
|
|
|
|
+ commodity_type = smqs[0]['commodity_type']
|
|
|
|
+ # ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=nowTime). \
|
|
|
|
+ # values("bucket__storeDay", "bucket__region", "endTime")
|
|
|
|
+ # if ubqs.exists():
|
|
|
|
+ # ubqs_count = ubqs.count()
|
|
|
|
+ # ubq = ubqs[ubqs_count - 1, ubqs_count]
|
|
|
|
+ # new_starTime = ubq['endTime'] + 1
|
|
|
|
+ nowTime = int(time.time())
|
|
|
|
+ orderID = CommonService.createOrderID()
|
|
|
|
+ if pay_type == 0:
|
|
|
|
+ Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
|
|
|
|
+ desc=content, payType=pay_type, payTime=nowTime,
|
|
|
|
+ price=price, currency=currency, addTime=nowTime, updTime=nowTime,
|
|
|
|
+ endTime=(nowTime + int(day) * 3600 * 24), pay_url="体验版",
|
|
|
|
+ commodity_code=commodity_code, commodity_type=commodity_type,
|
|
|
|
+ rank_id=rank)
|
|
|
|
+
|
|
|
|
+ order_qs = Order_Model.objects.filter(orderID=orderID)
|
|
|
|
+ nowTime = int(time.time())
|
|
|
|
+ order_list = order_qs.values("UID", "channel", "commodity_code")
|
|
|
|
+ UID = order_list[0]['UID']
|
|
|
|
+ channel = order_list[0]['channel']
|
|
|
|
+ commodity_code = order_list[0]['commodity_code']
|
|
|
|
+ smqs = Store_Meal.objects.filter(commodity_code=commodity_code). \
|
|
|
|
+ values("day", "bucket_id", "bucket__storeDay")
|
|
|
|
+ bucketId = smqs[0]['bucket_id']
|
|
|
|
+ if not smqs.exists():
|
|
|
|
+ return response.json(0, '套餐已删除')
|
|
|
|
+ addTime = int(smqs[0]["day"]) * 24 * 3600
|
|
|
|
+ # ##
|
|
|
|
+ ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel, endTime__gte=nowTime). \
|
|
|
|
+ values("bucket__storeDay", "bucket__region", "endTime")
|
|
|
|
+ if ubqs.exists():
|
|
|
|
+ ubqs_count = ubqs.count()
|
|
|
|
+ print(ubqs_count)
|
|
|
|
+ ubq = ubqs[ubqs_count - 1]
|
|
|
|
+ print(ubq)
|
|
|
|
+ new_starTime = ubq['endTime'] + 1
|
|
|
|
+ ub_cqs = UID_Bucket.objects.create \
|
|
|
|
+ (uid=UID, channel=channel, bucket_id=bucketId,
|
|
|
|
+ endTime=new_starTime + addTime)
|
|
|
|
+ uid_bucket_id = ub_cqs.id
|
|
|
|
+ else:
|
|
|
|
+ ub_cqs = UID_Bucket.objects.create \
|
|
|
|
+ (uid=UID, channel=channel, bucket_id=bucketId, endTime=nowTime + addTime)
|
|
|
|
+ uid_bucket_id = ub_cqs.id
|
|
|
|
+ order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
|
|
|
|
+
|
|
|
|
+ # return response.json(0)
|
|
|
|
+ red_url = "{SERVER_DOMAIN}cloudstorage/payOK".format(SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
|
+ return HttpResponseRedirect(red_url)
|
|
|
|
+ else:
|
|
|
|
+ Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
|
|
|
|
+ desc=content, payType=pay_type, payTime=nowTime,
|
|
|
|
+ price=price, currency=currency, addTime=nowTime, updTime=nowTime,
|
|
|
|
+ endTime=(nowTime + int(day) * 3600 * 24), pay_url="体验版",
|
|
|
|
+ commodity_code=commodity_code, commodity_type=commodity_type,
|
|
|
|
+ rank_id=rank)
|
|
|
|
+ order_qs = Order_Model.objects.filter(orderID=orderID, status=0)
|
|
|
|
+
|
|
|
|
+ if not order_qs.exists():
|
|
|
|
+ return response.json(404)
|
|
|
|
+
|
|
|
|
+ nowTime = int(time.time())
|
|
|
|
+ order_list = order_qs.values("UID", "commodity_code", "channel")
|
|
|
|
+ UID = order_list[0]['UID']
|
|
|
|
+ channel = order_list[0]['channel']
|
|
|
|
+ commodity_code = order_list[0]['commodity_code']
|
|
|
|
+ order_qs.update(status=1, updTime=nowTime)
|
|
|
|
+ smqs = Store_Meal.objects.filter(commodity_code=commodity_code). \
|
|
|
|
+ values("day", "bucket_id", "bucket__storeDay")
|
|
|
|
+ bucketId = smqs[0]['bucket_id']
|
|
|
|
+ if not smqs.exists():
|
|
|
|
+ return response.json(0, '套餐已删除')
|
|
|
|
+ addTime = int(smqs[0]["day"]) * 24 * 3600
|
|
|
|
+ ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel). \
|
|
|
|
+ values("bucket_id", "endTime", "bucket__storeDay")
|
|
|
|
+ nowTime = int(time.time())
|
|
|
|
+ if ubqs.exists():
|
|
|
|
+ ubqs_count = ubqs.count()
|
|
|
|
+ ubq = ubqs[ubqs_count - 1, ubqs_count]
|
|
|
|
+ new_starTime = ubq['endTime'] + 1
|
|
|
|
+ ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
|
|
|
|
+ endTime=new_starTime + addTime)
|
|
|
|
+ uid_bucket_id = ub_cqs.id
|
|
|
|
+ else:
|
|
|
|
+ ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
|
|
|
|
+ endTime=nowTime + addTime)
|
|
|
|
+ uid_bucket_id = ub_cqs.id
|
|
|
|
+ order_qs.update \
|
|
|
|
+ (payTime=nowTime, status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
|
|
|
|
+ red_url = "{SERVER_DOMAIN}cloudstorage/payOK".format(SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
|
+ return HttpResponseRedirect(red_url)
|
|
|
|
+ # return JsonResponse(status=200, data={'result_code': 0, 'reason': 'success',
|
|
|
|
+ # 'result': {"redirectUrl": "体验版", "orderID": orderID},
|
|
|
|
+ # 'error_code': 0})
|