|
@@ -476,6 +476,10 @@ class AiView(View):
|
|
orderID = request_dict.get('orderID', None)
|
|
orderID = request_dict.get('orderID', None)
|
|
lang = request_dict.get('lang', 'en')
|
|
lang = request_dict.get('lang', 'en')
|
|
|
|
|
|
|
|
+ if not orderID:
|
|
|
|
+ pay_failed_url = CommonService.get_payment_status_url(lang, 'fail')
|
|
|
|
+ return HttpResponseRedirect(pay_failed_url)
|
|
|
|
+
|
|
logger.info("paymentID={paymentId},payerID={PayerID}".format(paymentId=paymentId, PayerID=PayerID))
|
|
logger.info("paymentID={paymentId},payerID={PayerID}".format(paymentId=paymentId, PayerID=PayerID))
|
|
|
|
|
|
# redis加锁,防止订单重复
|
|
# redis加锁,防止订单重复
|
|
@@ -486,9 +490,8 @@ class AiView(View):
|
|
return response.json(5)
|
|
return response.json(5)
|
|
try:
|
|
try:
|
|
order_qs = Order_Model.objects.filter(orderID=orderID, status=0)
|
|
order_qs = Order_Model.objects.filter(orderID=orderID, status=0)
|
|
- if not orderID:
|
|
|
|
- pay_failed_url = CommonService.get_payment_status_url(lang, 'fail')
|
|
|
|
- return HttpResponseRedirect(pay_failed_url)
|
|
|
|
|
|
+ if not order_qs.exists():
|
|
|
|
+ return response.json(173)
|
|
|
|
|
|
paypalrestsdk.configure(PAYPAL_CRD)
|
|
paypalrestsdk.configure(PAYPAL_CRD)
|
|
payment = paypalrestsdk.Payment.find(paymentId)
|
|
payment = paypalrestsdk.Payment.find(paymentId)
|
|
@@ -503,36 +506,42 @@ class AiView(View):
|
|
return HttpResponseRedirect(pay_failed_url)
|
|
return HttpResponseRedirect(pay_failed_url)
|
|
|
|
|
|
nowTime = int(time.time())
|
|
nowTime = int(time.time())
|
|
- order_list = order_qs.values("UID", "channel", "commodity_code", "ai_rank", "isSelectDiscounts",
|
|
|
|
|
|
+ order_list = order_qs.values("UID", "channel", "commodity_code", "ai_rank__effective_day", "isSelectDiscounts",
|
|
"userID__userID", "userID__username", "coupon_id")
|
|
"userID__userID", "userID__username", "coupon_id")
|
|
userid = order_list[0]['userID__userID']
|
|
userid = order_list[0]['userID__userID']
|
|
username = order_list[0]['userID__username']
|
|
username = order_list[0]['userID__username']
|
|
UID = order_list[0]['UID']
|
|
UID = order_list[0]['UID']
|
|
channel = order_list[0]['channel']
|
|
channel = order_list[0]['channel']
|
|
- ai_rank = order_list[0]['ai_rank']
|
|
|
|
-
|
|
|
|
- # 套餐时间
|
|
|
|
- ai_sm_qs = AiStoreMeal.objects.filter(id=ai_rank).values('effective_day')
|
|
|
|
- if not ai_sm_qs.exists():
|
|
|
|
- return response.json(173)
|
|
|
|
|
|
+ effective_day = order_list[0]['ai_rank__effective_day']
|
|
|
|
+
|
|
|
|
+ ai_service_qs = AiService.objects.filter(Q(uid=UID), Q(channel=channel), Q(use_status=1))
|
|
|
|
+ ai_service_dict = {'orders_id': orderID,
|
|
|
|
+ 'uid': UID,
|
|
|
|
+ 'channel': channel,
|
|
|
|
+ 'detect_status': 1,
|
|
|
|
+ 'addTime': nowTime,
|
|
|
|
+ 'updTime': nowTime,
|
|
|
|
+ 'detect_group': '1'
|
|
|
|
+ }
|
|
|
|
+ if ai_service_qs.exists(): # 存在正在使用的套餐
|
|
|
|
+ ai_service_dict['endTime'] = effective_day * 24 * 60 * 60
|
|
|
|
+ else:
|
|
|
|
+ ai_service_dict['use_status'] = 1
|
|
|
|
+ ai_service_dict['endTime'] = nowTime + effective_day * 24 * 60 * 60
|
|
with transaction.atomic():
|
|
with transaction.atomic():
|
|
# 更新设备主用户
|
|
# 更新设备主用户
|
|
- dvq = Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='')
|
|
|
|
- if dvq.exists():
|
|
|
|
- dvq_set_update_dict = {
|
|
|
|
- 'vodPrimaryUserID': userid,
|
|
|
|
- 'vodPrimaryMaster': username
|
|
|
|
- }
|
|
|
|
- dvq.update(**dvq_set_update_dict)
|
|
|
|
-
|
|
|
|
|
|
+ Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='').\
|
|
|
|
+ update(vodPrimaryUserID=userid, vodPrimaryMaster=username)
|
|
# 更新订单数据,返回支付成功url
|
|
# 更新订单数据,返回支付成功url
|
|
order_qs.update(status=1, updTime=nowTime)
|
|
order_qs.update(status=1, updTime=nowTime)
|
|
- pay_success_url = CommonService.get_payment_status_url(lang, 'fail')
|
|
|
|
- redisObj.del_data(key=orderID + 'do_notify')
|
|
|
|
- return HttpResponseRedirect(pay_success_url)
|
|
|
|
|
|
+ # 创建AiService数据
|
|
|
|
+ AiService.objects.create(**ai_service_dict)
|
|
|
|
+
|
|
|
|
+ pay_success_url = CommonService.get_payment_status_url(lang, 'fail')
|
|
|
|
+ redisObj.del_data(key=orderID + 'do_notify')
|
|
|
|
+ return HttpResponseRedirect(pay_success_url)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
- if order_qs:
|
|
|
|
- order_qs.update(status=10)
|
|
|
|
|
|
+ order_qs.update(status=10)
|
|
pay_failed_url = CommonService.get_payment_status_url(lang, 'fail')
|
|
pay_failed_url = CommonService.get_payment_status_url(lang, 'fail')
|
|
redisObj.del_data(key=orderID + 'do_notify')
|
|
redisObj.del_data(key=orderID + 'do_notify')
|
|
return HttpResponseRedirect(pay_failed_url)
|
|
return HttpResponseRedirect(pay_failed_url)
|