|
@@ -18,6 +18,7 @@ import urllib
|
|
|
import boto3
|
|
|
import oss2
|
|
|
import paypalrestsdk
|
|
|
+import threading
|
|
|
from aliyunsdkcore import client
|
|
|
from aliyunsdksts.request.v20150401 import AssumeRoleRequest
|
|
|
from boto3.session import Session
|
|
@@ -33,6 +34,7 @@ from Object.TokenObject import TokenObject
|
|
|
from Object.UidTokenObject import UidTokenObject
|
|
|
from Service.CommonService import CommonService
|
|
|
from Object.m3u8generate import PlaylistGenerator
|
|
|
+from Object.WechatPayObject import WechatPayObject
|
|
|
|
|
|
SERVER_DOMAIN = 'http://test.dvema.com/'
|
|
|
|
|
@@ -218,8 +220,7 @@ class CloudStorageView(View):
|
|
|
now_time = int(time.time())
|
|
|
vh_qs = VodHlsModel.objects.filter(uid=uid, channel=channel, time=storeTime, endTime__gte=now_time). \
|
|
|
values("sec", "fg", "bucket__bucket", "bucket__endpoint", "bucket__region", "bucket__mold")
|
|
|
- if not vh_qs.exists():
|
|
|
- return response.json(11,'不存在.')
|
|
|
+ if not vh_qs.exists(): return response.json(11,'不存在.')
|
|
|
sec = vh_qs[0]['sec']
|
|
|
fg = vh_qs[0]['fg']
|
|
|
bucket__region = vh_qs[0]['bucket__region']
|
|
@@ -448,11 +449,16 @@ class CloudStorageView(View):
|
|
|
dv_qs = Device_Info.objects.filter(UID=uid, userID_id=userID, isShare=False)
|
|
|
if not dv_qs.exists():
|
|
|
return response.json(12)
|
|
|
+ # bv_qs = UID_Bucket.objects.filter(UID=uid,channel=channel)
|
|
|
now_time = int(time.time())
|
|
|
vh_qs = VodHlsModel.objects.filter \
|
|
|
( uid=uid, channel=channel, time__range=(startTime, endTime), endTime__gte=now_time). \
|
|
|
values("time", "sec", "bucket__bucket", "fg", "bucket__endpoint", "bucket__region", "bucket__mold")
|
|
|
vod_play_list = []
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
print(int(time.time()))
|
|
|
for vod in vh_qs:
|
|
|
bucket__mold = vod["bucket__mold"]
|
|
@@ -484,6 +490,7 @@ class CloudStorageView(View):
|
|
|
# region_name=bucket__region
|
|
|
# )
|
|
|
# conn = session.client('s3')
|
|
|
+
|
|
|
# thumbspng = '{uid}/vod{channel}/{time}/Thumb.jpeg'. \
|
|
|
# format(uid=uid, channel=channel, time=vod['time'])
|
|
|
# response_url = conn.generate_presigned_url(
|
|
@@ -495,6 +502,7 @@ class CloudStorageView(View):
|
|
|
# ExpiresIn=3600
|
|
|
# )
|
|
|
# thumb_url = response_url
|
|
|
+ # format(uid=uid, channel=channel, time=vod['time'])
|
|
|
|
|
|
vod_url = '{server_domain}/cloudstorage/signplaym3u8?' \
|
|
|
'uid={uid}&channel={channel}&time={time}&sign=tktktktk'. \
|
|
@@ -960,7 +968,7 @@ class CloudStorageView(View):
|
|
|
commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
|
|
|
return response.json(0, {"redirectUrl": approval_url, "orderID": orderID})
|
|
|
return response.json(10, 'generate_order_false')
|
|
|
- else:
|
|
|
+ elif pay_type == 1:
|
|
|
try:
|
|
|
aliPayObj = AliPayObject()
|
|
|
alipay = aliPayObj.conf()
|
|
@@ -994,120 +1002,178 @@ class CloudStorageView(View):
|
|
|
else:
|
|
|
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)
|
|
|
+ elif pay_type == 2:
|
|
|
+ # 调用统一支付接口
|
|
|
+ # 订单id
|
|
|
+ # 描述信息
|
|
|
+ body = 'zosi云存支付'
|
|
|
+ # 价格
|
|
|
+ total_fee = '50'
|
|
|
+ # 调用微信支付API的机器IP
|
|
|
+ # spbill_create_ip = '127.0.0.1'
|
|
|
+ spbill_create_ip = '120.237.157.184'
|
|
|
+ pay = WechatPayObject()
|
|
|
+ notify_url="{SERVER_DOMAIN_SSL}cloudstorage/dowxcallback".format(
|
|
|
+ SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL)
|
|
|
+ # 获取参数
|
|
|
+ parameter_dict = pay.get_parameter(orderID, body, total_fee, spbill_create_ip, notify_url)
|
|
|
+ print('parameter_dict', parameter_dict)
|
|
|
+ # parameter_dict 参数中获取MWEB_URL 调转页面在路径后面添加redirect_url
|
|
|
+ # 统一调用接口
|
|
|
+ response = pay.re_finall()
|
|
|
+ print(response)
|
|
|
+ # 回调函数
|
|
|
+ return JsonResponse(status=200, data={'result_code': 0, 'reason': 'success',
|
|
|
+ 'result': response,
|
|
|
+ 'orderId': orderID,
|
|
|
+ 'error_code': 0})
|
|
|
+ # 调起支付接口
|
|
|
|
|
|
- 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)
|
|
|
+def deleteVodHls(request):
|
|
|
+ UID = 'DSXG7481JVA2JM94111A'
|
|
|
+ channel = 1
|
|
|
+ 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
|
|
|
+ print(new_starTime)
|
|
|
+ exit()
|
|
|
|
|
|
- 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)
|
|
|
+ ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
|
|
|
+ endTime=new_starTime + addTime)
|
|
|
+ uid_bucket_id = ub_cqs.id
|
|
|
+ exit()
|
|
|
|
|
|
- # return response.json(0)
|
|
|
- red_url = "{SERVER_DOMAIN}cloudstorage/payOK".format(SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
- return HttpResponseRedirect(red_url)
|
|
|
+ response = ResponseObject()
|
|
|
+ i = int(request.GET.get('i', 5))
|
|
|
+ nowTime = int(time.time())
|
|
|
+ for i in range(i):
|
|
|
+ vh_qs = VodHlsModel.objects.filter(endTime__lte=str(nowTime))[0:10000]
|
|
|
+ id_list = vh_qs.values_list("id", flat=True)
|
|
|
+ print(id_list)
|
|
|
+ VodHlsModel.objects.filter(id__in=list(id_list)).delete()
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+# 生成体验订单
|
|
|
+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:
|
|
|
- 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)
|
|
|
+ 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)
|
|
|
|
|
|
- if not order_qs.exists():
|
|
|
- return response.json(404)
|
|
|
+ # 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)
|
|
|
|
|
|
- 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})
|
|
|
+ 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})
|