|
@@ -41,6 +41,8 @@ from Object.m3u8generate import PlaylistGenerator
|
|
|
from Object.WechatPayObject import WechatPayObject
|
|
|
from django.db.models import Q
|
|
|
|
|
|
+from Service.ModelService import ModelService
|
|
|
+
|
|
|
SERVER_DOMAIN = 'http://test.dvema.com/'
|
|
|
|
|
|
'''
|
|
@@ -208,7 +210,7 @@ class CloudStorageView(View):
|
|
|
qs = qs.values("id", "title", "content", "price","day", "currency", "bucket__storeDay",
|
|
|
"bucket__bucket", "bucket__area","commodity_code",
|
|
|
"commodity_type", "is_discounts", "virtual_price", "expire",
|
|
|
- "discount_price", "discount_content","symbol")
|
|
|
+ "discount_price", "discount_content")
|
|
|
|
|
|
if qs.exists():
|
|
|
ql = list(qs)
|
|
@@ -324,8 +326,8 @@ class CloudStorageView(View):
|
|
|
print(uid)
|
|
|
now_time = int(time.time())
|
|
|
ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time). \
|
|
|
- values("bucket__mold", "bucket__bucket", "bucket__endpoint",
|
|
|
- "bucket__region", "endTime").order_by('endTime')[:1]
|
|
|
+ values("bucket__mold", "bucket__bucket", "bucket__endpoint",
|
|
|
+ "bucket__region", "endTime").order_by('endTime')[:1]
|
|
|
if ubqs.exists():
|
|
|
if ubqs[0]["bucket__mold"] == 0:
|
|
|
# 阿里云 oss sts
|
|
@@ -478,7 +480,7 @@ class CloudStorageView(View):
|
|
|
now_time = int(time.time())
|
|
|
bv_qs = UID_Bucket.objects.filter(uid=uid,channel=channel, endTime__gte=now_time).order_by('endTime')
|
|
|
if not bv_qs.exists():
|
|
|
- return response.json(10014)
|
|
|
+ return response.json(103,'未购买')
|
|
|
vh_qs = VodHlsModel.objects.filter \
|
|
|
( uid=uid, channel=channel, time__range=(startTime, endTime), endTime__gte=now_time). \
|
|
|
values("id", "time", "sec", "bucket__bucket", "fg", "bucket__endpoint", "bucket__region", "bucket__mold")
|
|
@@ -562,8 +564,8 @@ class CloudStorageView(View):
|
|
|
print(channel)
|
|
|
now_time = int(time.time())
|
|
|
ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel, endTime__gte=now_time). \
|
|
|
- values("bucket__mold", "bucket__bucket", "bucket__endpoint",
|
|
|
- "bucket__region", "status", "bucket__storeDay", "bucket__id").order_by('endTime')[:1]
|
|
|
+ values("bucket__mold", "bucket__bucket", "bucket__endpoint",
|
|
|
+ "bucket__region", "status", "bucket__storeDay", "bucket__id").order_by('endTime')[:1]
|
|
|
if ubqs.exists():
|
|
|
ub_qs_data = ubqs[0]
|
|
|
store_day = ub_qs_data['bucket__storeDay']
|
|
@@ -656,10 +658,10 @@ class CloudStorageView(View):
|
|
|
return response.json(12)
|
|
|
ubqs = UID_Bucket.objects.filter(channel=channel, uid=uid).order_by('endTime')
|
|
|
if not ubqs.exists():
|
|
|
- return response.json(10014)
|
|
|
+ return response.json(10, '未购买')
|
|
|
now_time = int(time.time())
|
|
|
if now_time > ubqs[0].endTime:
|
|
|
- return response.json(10015)
|
|
|
+ return response.json(102,'已过期')
|
|
|
ubqs.update(status=status)
|
|
|
if status == 0:
|
|
|
return response.json(0)
|
|
@@ -840,8 +842,13 @@ class CloudStorageView(View):
|
|
|
return response
|
|
|
|
|
|
def do_pay_by_ali_callback(self, request):
|
|
|
+
|
|
|
+ print("进来了,阿里支付成功回调")
|
|
|
response = ResponseObject()
|
|
|
data = request.POST.dict()
|
|
|
+ asy = threading.Thread(target=ModelService.add_log,
|
|
|
+ args=(CommonService.get_ip_address(request),data['out_trade_no'], '进来了,阿里支付成功回调'))
|
|
|
+ asy.start()
|
|
|
signature = data["sign"]
|
|
|
data.pop('sign')
|
|
|
orderID = data['out_trade_no']
|
|
@@ -859,34 +866,38 @@ class CloudStorageView(View):
|
|
|
success = alipay.verify(data, signature)
|
|
|
if success and data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"):
|
|
|
print("trade succeed")
|
|
|
+ order_qs = Order_Model.objects.filter(orderID=orderID)
|
|
|
nowTime = int(time.time())
|
|
|
- order_list = order_qs.values("UID", "commodity_code", "channel")
|
|
|
+ order_list = order_qs.values("UID", "channel", "commodity_code", "rank", "isSelectDiscounts")
|
|
|
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")
|
|
|
+ rank = order_list[0]['rank']
|
|
|
+ smqs = Store_Meal.objects.filter(id=rank). \
|
|
|
+ values("day", "bucket_id", "bucket__storeDay", "expire")
|
|
|
bucketId = smqs[0]['bucket_id']
|
|
|
if not smqs.exists():
|
|
|
- return response.json(173)
|
|
|
- addTime = int(smqs[0]["day"]) * 24 * 3600
|
|
|
- ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel). \
|
|
|
- values("bucket_id", "endTime", "bucket__storeDay")
|
|
|
+ return response.json(0, '套餐已删除')
|
|
|
+ ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
|
|
|
+ values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
|
|
|
nowTime = int(time.time())
|
|
|
+
|
|
|
+ expire = smqs[0]['expire']
|
|
|
+ if order_list[0]['isSelectDiscounts'] == 1:
|
|
|
+ expire = smqs[0]['expire'] * 2
|
|
|
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
|
|
|
+ ubq = ubqs[0]
|
|
|
+ endTime = CommonService.calcMonthLater(expire, ubq['endTime'])
|
|
|
+ ub_cqs = UID_Bucket.objects.filter(id=ubq['id']).update \
|
|
|
+ (uid=UID, channel=channel, bucket_id=bucketId,
|
|
|
+ endTime=endTime)
|
|
|
+ uid_bucket_id = ubq['id']
|
|
|
else:
|
|
|
- ub_cqs = UID_Bucket.objects.create(uid=UID, channel=channel, bucket_id=bucketId,
|
|
|
- endTime=nowTime + addTime)
|
|
|
+ endTime = CommonService.calcMonthLater(expire)
|
|
|
+ ub_cqs = UID_Bucket.objects.create \
|
|
|
+ (uid=UID, channel=channel, bucket_id=bucketId, endTime=endTime)
|
|
|
uid_bucket_id = ub_cqs.id
|
|
|
- order_qs.update \
|
|
|
- (payTime=nowTime, status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
|
|
|
+
|
|
|
+ order_qs.update(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 response.json(0, signature)
|
|
@@ -917,10 +928,10 @@ class CloudStorageView(View):
|
|
|
values("day", "bucket_id", "bucket__storeDay", "expire")
|
|
|
bucketId = smqs[0]['bucket_id']
|
|
|
if not smqs.exists():
|
|
|
- return response.json(173)
|
|
|
+ return response.json(0, '套餐已删除')
|
|
|
# ##
|
|
|
ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
|
|
|
- values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
|
|
|
+ values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
|
|
|
expire = smqs[0]['expire']
|
|
|
if order_list[0]['isSelectDiscounts'] == 1:
|
|
|
expire = smqs[0]['expire'] * 2
|
|
@@ -964,7 +975,7 @@ class CloudStorageView(View):
|
|
|
return HttpResponse(WechatPayObject.xml_to_dict({'return_code':'FAIL', 'return_msg':'套餐不存在'}))
|
|
|
# ##
|
|
|
ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
|
|
|
- values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
|
|
|
+ values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('endTime')[:1]
|
|
|
expire = smqs[0]['expire']
|
|
|
if order_list[0]['isSelectDiscounts'] == 1:
|
|
|
expire = smqs[0]['expire'] * 2
|
|
@@ -991,16 +1002,16 @@ class CloudStorageView(View):
|
|
|
rank = request_dict.get('rank', None)
|
|
|
is_select_discount = request_dict.get('is_select_discount', 0)
|
|
|
if not uid or not channel or not pay_type or not rank:
|
|
|
- return response.json(444)
|
|
|
+ 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(173)
|
|
|
+ return response.json(12)
|
|
|
smqs = Store_Meal.objects.filter(id=rank, pay_type=pay_type). \
|
|
|
values('currency', 'price', 'content', 'day',
|
|
|
'commodity_type', 'title', 'content',
|
|
|
'expire', 'commodity_code', 'discount_price')
|
|
|
if not smqs.exists():
|
|
|
- return response.json(10016)
|
|
|
+ return response.json(10, '套餐不存在')
|
|
|
currency = smqs[0]['currency']
|
|
|
price = smqs[0]['price']
|
|
|
if is_select_discount == '1':
|
|
@@ -1082,7 +1093,7 @@ class CloudStorageView(View):
|
|
|
'result': {"redirectUrl": redirectUrl, "orderID": orderID},
|
|
|
'error_code': 0})
|
|
|
else:
|
|
|
- return response.json(800)
|
|
|
+ return response.json(10, '生成订单错误.')
|
|
|
|
|
|
elif pay_type == 3:
|
|
|
pay = WechatPayObject()
|
|
@@ -1096,7 +1107,7 @@ class CloudStorageView(View):
|
|
|
# 统一调用接口
|
|
|
response = pay.re_finall()
|
|
|
if not response:
|
|
|
- return response.json(800)
|
|
|
+ return response.json(10, '生成订单错误.')
|
|
|
# 回调函数
|
|
|
Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
|
|
|
desc=content, payType=pay_type, payTime=nowTime,
|
|
@@ -1240,21 +1251,21 @@ class CloudStorageView(View):
|
|
|
VodHlsModel.objects.filter(uid=uid).delete()
|
|
|
else:
|
|
|
if type(vod_id_list).__name__ != 'list':
|
|
|
- return response.json(444)
|
|
|
+ return response.json(424, 'vod_id_list格式错误')
|
|
|
VodHlsModel.objects.filter(id__in=vod_id_list).delete()
|
|
|
except Exception as e:
|
|
|
return response.json(424, repr(e))
|
|
|
else:
|
|
|
- return response.json(0)
|
|
|
+ return response.json(0, '删除成功.')
|
|
|
|
|
|
#设备关联套餐列表
|
|
|
def device_commodity(self, request_dict, response):
|
|
|
uid = request_dict.get('uid',None)
|
|
|
now_time = int(time.time())
|
|
|
uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid", "endTime",
|
|
|
- "bucket__content").order_by('endTime')
|
|
|
+ "bucket__content").order_by('endTime')
|
|
|
if not uid_bucket.exists():
|
|
|
- return response.json(10014)
|
|
|
+ return response.json(404,'该设备未购买云存套餐.')
|
|
|
for index, value in enumerate(uid_bucket):
|
|
|
value['is_use'] = 0
|
|
|
if index == 0:
|
|
@@ -1268,20 +1279,20 @@ class CloudStorageView(View):
|
|
|
if switch_commodity_id:
|
|
|
#切换设备套餐关联
|
|
|
using_uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=int(time.time())).values("id", "uid", "endTime",
|
|
|
- "bucket__content").order_by('endTime')
|
|
|
+ "bucket__content").order_by('endTime')
|
|
|
|
|
|
if not using_uid_bucket.exists():
|
|
|
- return response.json(10014)
|
|
|
+ return response.json(404,'该设备未购买云存套餐.')
|
|
|
|
|
|
if int(using_uid_bucket[0]['id']) == int(switch_commodity_id):
|
|
|
- return response.json(10017)
|
|
|
+ return response.json(404,'切换的云存套餐ID不能与正在使用中的相同.')
|
|
|
|
|
|
# UID_Bucket.objects.filter(id=switch_commodity_id).update(is_use=1) #更新转移的云存套餐为使用中
|
|
|
UID_Bucket.objects.filter(id=using_uid_bucket[0]['id']).delete() #删除原来使用中的云存套餐
|
|
|
VodHlsModel.objects.filter(uid=uid).delete() #删除播放列表
|
|
|
StsCrdModel.objects.filter(uid=uid).delete() #删除sts记录
|
|
|
- return response.json(0)
|
|
|
- return response.json(444)
|
|
|
+ return response.json(0,'切换云存套餐成功')
|
|
|
+ return response.json(404,'切换的套餐ID不能为空')
|
|
|
|
|
|
#删除过期云存播放列表
|
|
|
def deleteVodHls(request):
|