|
@@ -53,24 +53,24 @@ class AiView(View):
|
|
|
response.lang = tko.lang
|
|
|
if tko.code != 0:
|
|
|
return response.json(tko.code)
|
|
|
- userID = tko.userID
|
|
|
+ user_id = tko.userID
|
|
|
|
|
|
# 套餐相关接口
|
|
|
- if operation == 'commoditylist': # 查询套餐列表
|
|
|
+ if operation == 'commoditylist': # 查询套餐列表
|
|
|
return self.do_commodity_list(request_dict, response)
|
|
|
- elif operation == 'experienceOrder': # 体验套餐
|
|
|
- return self.experience_order(request_dict, userID, response)
|
|
|
- elif operation == 'createpayorder': # 创建支付订单
|
|
|
- return self.do_create_pay_order(request_dict, request, userID, response)
|
|
|
- elif operation == 'queryorderlist': # 查询订单列表
|
|
|
- return self.do_querylist(userID, request_dict, response)
|
|
|
- elif operation == 'getUsingPackage': # 获取当前使用套餐
|
|
|
- return self.getUsingPackage(request_dict, userID, response)
|
|
|
+ elif operation == 'experienceOrder': # 体验套餐
|
|
|
+ return self.experience_order(request_dict, user_id, response)
|
|
|
+ elif operation == 'createpayorder': # 创建支付订单
|
|
|
+ return self.do_create_pay_order(request_dict, request, user_id, response)
|
|
|
+ elif operation == 'queryorderlist': # 查询订单列表
|
|
|
+ return self.query_order_list(request_dict, user_id, response)
|
|
|
+ elif operation == 'getUsingPackage': # 获取当前使用套餐
|
|
|
+ return self.get_using_package(request_dict, response)
|
|
|
# 开关相关接口
|
|
|
- elif operation == 'getAiStatus': # 获取开关状态
|
|
|
+ elif operation == 'getAiStatus': # 获取开关状态
|
|
|
return self.get_ai_status(request_dict, response)
|
|
|
- elif operation == 'changeaistatus': # 修改开关状态
|
|
|
- return self.do_change_ai_status(userID, request_dict, response)
|
|
|
+ elif operation == 'changeaistatus': # 修改开关状态
|
|
|
+ return self.do_change_ai_status(request_dict, user_id, response)
|
|
|
else:
|
|
|
return response.json(414)
|
|
|
|
|
@@ -121,7 +121,7 @@ class AiView(View):
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@staticmethod
|
|
|
- def experience_order(request_dict, userID, response):
|
|
|
+ def experience_order(request_dict, user_id, response):
|
|
|
"""
|
|
|
体验套餐
|
|
|
@param request_dict: 请求数据
|
|
@@ -131,7 +131,7 @@ class AiView(View):
|
|
|
@request_dict rank: 套餐id
|
|
|
@request_dict cdk: 兑换码
|
|
|
@request_dict lang: 语言
|
|
|
- @param userID: 用户id
|
|
|
+ @param user_id: 用户id
|
|
|
@param response: 响应
|
|
|
@return: response
|
|
|
"""
|
|
@@ -173,13 +173,13 @@ class AiView(View):
|
|
|
# 判断是否为主用户操作
|
|
|
device_info_qs = Device_Info.objects.filter(Q(UID=uid) & ~Q(vodPrimaryUserID='')).values('vodPrimaryUserID')
|
|
|
if device_info_qs.exists():
|
|
|
- if device_info_qs[0]['vodPrimaryUserID'] != userID:
|
|
|
+ if device_info_qs[0]['vodPrimaryUserID'] != user_id:
|
|
|
if pay_type == 10:
|
|
|
return response.json(10035)
|
|
|
if pay_type == 11:
|
|
|
return response.json(10036)
|
|
|
|
|
|
- dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1)
|
|
|
+ dv_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid, isShare=False, isExist=1)
|
|
|
if not dv_qs.exists():
|
|
|
return response.json(12)
|
|
|
|
|
@@ -203,7 +203,7 @@ class AiView(View):
|
|
|
|
|
|
with transaction.atomic():
|
|
|
# 订单表创建数据
|
|
|
- Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
|
|
|
+ Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=user_id,
|
|
|
desc=ai_store_meal_qs[0]['lang__content'], payType=pay_type, payTime=nowTime,
|
|
|
price=ai_store_meal_qs[0]['price'], currency=ai_store_meal_qs[0]['currency'],
|
|
|
addTime=nowTime, updTime=nowTime, pay_url='AI体验',
|
|
@@ -230,7 +230,7 @@ class AiView(View):
|
|
|
redisObj.del_data(key=redis_key)
|
|
|
return response.json(474)
|
|
|
|
|
|
- def do_create_pay_order(self, request_dict, request, userID, response):
|
|
|
+ def do_create_pay_order(self, request_dict, request, user_id, response):
|
|
|
"""
|
|
|
创建支付订单
|
|
|
@param request_dict: 请求数据
|
|
@@ -240,7 +240,7 @@ class AiView(View):
|
|
|
@request_dict pay_type: 支付类型
|
|
|
@request_dict rank: 套餐id
|
|
|
@request_dict lang: 语言
|
|
|
- @param userID: 用户id
|
|
|
+ @param user_id: 用户id
|
|
|
@param response: 响应
|
|
|
@return: response
|
|
|
"""
|
|
@@ -279,7 +279,7 @@ class AiView(View):
|
|
|
'orderID': orderID,
|
|
|
'UID': uid,
|
|
|
'channel': channel,
|
|
|
- 'userID_id': userID,
|
|
|
+ 'userID_id': user_id,
|
|
|
'desc': content,
|
|
|
'payType': pay_type,
|
|
|
'payTime': nowTime,
|
|
@@ -313,6 +313,108 @@ class AiView(View):
|
|
|
except Exception as e:
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def query_order_list(request_dict, user_id, response):
|
|
|
+ """
|
|
|
+ 查询订单列表
|
|
|
+ @param request_dict: 请求数据
|
|
|
+ @param user_id: 用户id
|
|
|
+ @request_dict page: 页数
|
|
|
+ @request_dict line: 条数
|
|
|
+ @request_dict uid: uid
|
|
|
+ @request_dict lang: 语言
|
|
|
+ @param response: 响应
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ page = request_dict.get('page', None)
|
|
|
+ line = request_dict.get('line', None)
|
|
|
+ uid = request_dict.get('uid', None)
|
|
|
+ lang = request_dict.get('lang', 'en')
|
|
|
+
|
|
|
+ if not all([page, line]):
|
|
|
+ return response.json(444, 'page,line')
|
|
|
+
|
|
|
+ page, line = int(page), int(line)
|
|
|
+
|
|
|
+ try:
|
|
|
+ order_qs = Order_Model.objects.filter(userID_id=user_id, status=1, order_type=1, ai_rank__lang__lang=lang)
|
|
|
+
|
|
|
+ if uid: # 查询指定设备订单
|
|
|
+ order_qs.filter(UID=uid)
|
|
|
+ if not order_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+
|
|
|
+ count = order_qs.count()
|
|
|
+ order_qs = order_qs.annotate(rank__title=F('ai_rank__lang__title'),
|
|
|
+ rank__content=F('ai_rank__lang__content'),
|
|
|
+ rank__day=F('ai_rank__effective_day'), rank__price=F('ai_rank__price'),
|
|
|
+ rank__expire=F('ai_rank__effective_day'), rank__id=F('ai_rank_id'),
|
|
|
+ rank__currency=F('ai_rank__currency'))
|
|
|
+ order_qs = order_qs[(page - 1) * line:page * line].values('orderID', 'UID', 'channel', 'desc', 'price',
|
|
|
+ 'currency', 'addTime', 'updTime', 'paypal',
|
|
|
+ 'rank__day', 'payType', 'rank__price', 'status',
|
|
|
+ 'rank__content', 'rank__title', 'rank__currency',
|
|
|
+ 'rank__expire', 'ai_rank_id')
|
|
|
+ order_list = list(order_qs)
|
|
|
+ data = []
|
|
|
+ now_time = int(time.time())
|
|
|
+ uid_list = [order['UID'] for order in order_list]
|
|
|
+ device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID__in=uid_list).values('id', 'UID', 'Type')
|
|
|
+ for order in order_list:
|
|
|
+ if order['status'] == 0:
|
|
|
+ if order['addTime'] + 3600 < now_time:
|
|
|
+ order['status'] = 3
|
|
|
+ for did in device_info_qs:
|
|
|
+ if order['UID'] == did['UID']:
|
|
|
+ order['did'] = did['id']
|
|
|
+ order['Type'] = did['Type']
|
|
|
+ data.append(order)
|
|
|
+ return response.json(0, {'data': data, 'count': count})
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_using_package(request_dict, response):
|
|
|
+ """
|
|
|
+ 获取当前使用套餐
|
|
|
+ @param request_dict: 请求数据
|
|
|
+ @request_dict uid: uid
|
|
|
+ @request_dict lang: 语言
|
|
|
+ @param response: 响应
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ uid = request_dict.get('uid', None)
|
|
|
+ lang = request_dict.get('lang', 'en')
|
|
|
+
|
|
|
+ if not uid:
|
|
|
+ return response.json(444, 'uid')
|
|
|
+
|
|
|
+ try:
|
|
|
+ ai_service_qs = AiService.objects.filter(uid=uid, use_status=1, orders__ai_rank__lang__lang=lang)
|
|
|
+ if not ai_service_qs.exists():
|
|
|
+ return response.json(0, [])
|
|
|
+
|
|
|
+ # 计算套餐过期时间
|
|
|
+ sum_end_time = AiService.objects.filter(Q(uid=uid), ~Q(use_status=2)).aggregate(Sum('endTime'))[
|
|
|
+ 'endTime__sum']
|
|
|
+ ai_service_qs = ai_service_qs.order_by('addTime').annotate(
|
|
|
+ bucket__content=F('orders__ai_rank__lang__title')). \
|
|
|
+ values('uid', 'use_status', 'bucket__content')
|
|
|
+
|
|
|
+ ai_service_data = ai_service_qs[0]
|
|
|
+ ai_service_data['endTime'] = sum_end_time
|
|
|
+
|
|
|
+ # 如果存在序列号返回完整序列号
|
|
|
+ device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
|
|
|
+ serial_number = device_info_qs[0]['serial_number']
|
|
|
+ device_type = device_info_qs[0]['Type']
|
|
|
+ if serial_number:
|
|
|
+ ai_service_data['serial_number'] = CommonService.get_full_serial_number(uid, serial_number, device_type)
|
|
|
+
|
|
|
+ return response.json(0, [ai_service_data])
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
@staticmethod
|
|
|
def get_ai_status(request_dict, response):
|
|
|
"""
|
|
@@ -338,10 +440,9 @@ class AiView(View):
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@staticmethod
|
|
|
- def do_change_ai_status(userID, request_dict, response):
|
|
|
+ def do_change_ai_status(request_dict, user_id, response):
|
|
|
"""
|
|
|
修改AI开关状态
|
|
|
- @param userID: 用户id
|
|
|
@param request_dict: 请求数据
|
|
|
@request_dict token_val: 设备验证令牌
|
|
|
@request_dict appBundleId: app包id
|
|
@@ -354,6 +455,7 @@ class AiView(View):
|
|
|
@request_dict tz: 时区
|
|
|
@request_dict detect_group: 检测类型
|
|
|
@request_dict interval: 推送间隔
|
|
|
+ @param user_id: 用户id
|
|
|
@param response: 响应
|
|
|
@return: response
|
|
|
"""
|
|
@@ -385,7 +487,7 @@ class AiView(View):
|
|
|
return response.json(10054)
|
|
|
|
|
|
# 查询设备是否属于该用户
|
|
|
- device_info_qs = Device_Info.objects.filter(userID_id=userID, UID=uid)
|
|
|
+ device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid)
|
|
|
if not device_info_qs.exists():
|
|
|
return response.json(14)
|
|
|
status = int(status)
|
|
@@ -430,7 +532,7 @@ class AiView(View):
|
|
|
return response.json(0)
|
|
|
elif status == 1: # 开启
|
|
|
# 更新或创建uid_push数据
|
|
|
- uid_push_qs = UidPushModel.objects.filter(userID_id=userID, m_code=m_code, uid_set__uid=uid)
|
|
|
+ uid_push_qs = UidPushModel.objects.filter(userID_id=user_id, m_code=m_code, uid_set__uid=uid)
|
|
|
uid_push_data = {
|
|
|
'appBundleId': appBundleId,
|
|
|
'app_type': app_type,
|
|
@@ -445,7 +547,7 @@ class AiView(View):
|
|
|
uid_push_qs.update(**uid_push_data)
|
|
|
else:
|
|
|
uid_push_data['uid_set_id'] = uid_set_id
|
|
|
- uid_push_data['userID_id'] = userID
|
|
|
+ uid_push_data['userID_id'] = user_id
|
|
|
uid_push_data['m_code'] = m_code
|
|
|
uid_push_data['addTime'] = nowTime
|
|
|
UidPushModel.objects.create(**uid_push_data)
|
|
@@ -470,91 +572,6 @@ class AiView(View):
|
|
|
except Exception as e:
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
- def do_querylist(self, userID, request_dict, response):
|
|
|
- page = request_dict.get('page', None)
|
|
|
- line = request_dict.get('line', None)
|
|
|
- uid = request_dict.get('uid', None)
|
|
|
- lang = request_dict.get('lang', 'en')
|
|
|
- if not page or not line:
|
|
|
- return response.json(444, 'page,line')
|
|
|
-
|
|
|
- try:
|
|
|
- page = int(page)
|
|
|
- line = int(line)
|
|
|
- omqs = Order_Model.objects.filter(userID_id=userID, status=1, order_type=1, ai_rank__lang__lang=lang)
|
|
|
- # 筛选指定设备id的订单
|
|
|
- if uid:
|
|
|
- omqs.filter(UID=uid)
|
|
|
- if not omqs.exists():
|
|
|
- return response.json(173)
|
|
|
- count = omqs.count()
|
|
|
- omqs = omqs.annotate(rank__title=F('ai_rank__lang__title'), rank__content=F('ai_rank__lang__content'),
|
|
|
- rank__day=F('ai_rank__effective_day'), rank__price=F('ai_rank__price'),
|
|
|
- rank__expire=F('ai_rank__effective_day'), rank__id=F('ai_rank_id'),
|
|
|
- rank__currency=F('ai_rank__currency'))
|
|
|
- order_ql = omqs[(page - 1) * line:page * line].values("orderID", "UID", "channel", "desc", "price",
|
|
|
- "currency",
|
|
|
- "addTime",
|
|
|
- "updTime", "paypal", "rank__day", "payType",
|
|
|
- "rank__price", "status",
|
|
|
- "rank__content", "rank__title", "rank__currency",
|
|
|
- "rank__expire", "ai_rank_id")
|
|
|
- order_list = list(order_ql)
|
|
|
- data = []
|
|
|
- nowTime = int(time.time())
|
|
|
- # 这里需要进行优化
|
|
|
- uid_list = []
|
|
|
- for od in order_list:
|
|
|
- uid_list.append(od['UID'])
|
|
|
- didqs = Device_Info.objects.filter(userID_id=userID, UID__in=uid_list).values('id', 'UID', 'Type')
|
|
|
- for d in order_list:
|
|
|
- if d['status'] == 0:
|
|
|
- if d['addTime'] + 3600 < nowTime:
|
|
|
- d['status'] = 3
|
|
|
- for did in didqs:
|
|
|
- if d['UID'] == did['UID']:
|
|
|
- d['did'] = did['id']
|
|
|
- d['Type'] = did['Type']
|
|
|
- data.append(d)
|
|
|
- # d['rank__lang__content'] = '月' if lang == 'cn' else 'month'
|
|
|
- return response.json(0, {'data': data, 'count': count})
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
- return response.json(500, repr(e))
|
|
|
-
|
|
|
- # 获取当前使用的ai套餐
|
|
|
- def getUsingPackage(self, request_dict, userID, response):
|
|
|
- uid = request_dict.get('uid', None)
|
|
|
- lang = request_dict.get('lang', 'en')
|
|
|
- # dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1, vodPrimaryUserID=userID)
|
|
|
- # if not dv_qs.exists():
|
|
|
- # return response.json(12)
|
|
|
- try:
|
|
|
- ai_service_qs = AiService.objects.filter(uid=uid, use_status=1, orders__ai_rank__lang__lang=lang)
|
|
|
- if not ai_service_qs.exists():
|
|
|
- return response.json(0, [])
|
|
|
-
|
|
|
- # 计算套餐过期时间
|
|
|
- sum_end_time = AiService.objects.filter(Q(uid=uid), ~Q(use_status=2)).aggregate(Sum('endTime'))[
|
|
|
- 'endTime__sum']
|
|
|
- ai_service_qs = ai_service_qs.order_by('addTime').annotate(
|
|
|
- bucket__content=F('orders__ai_rank__lang__title')). \
|
|
|
- values('uid', 'use_status', 'bucket__content')
|
|
|
-
|
|
|
- ai_service_data = ai_service_qs[0]
|
|
|
- # 如果存在序列号返回完整序列号
|
|
|
- device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
|
|
|
- serial_number = device_info_qs[0]['serial_number']
|
|
|
- device_type = device_info_qs[0]['Type']
|
|
|
- if serial_number:
|
|
|
- ai_service_data['serial_number'] = CommonService.get_full_serial_number(uid, serial_number, device_type)
|
|
|
-
|
|
|
- ai_service_data['endTime'] = sum_end_time
|
|
|
- return response.json(0, [ai_service_data])
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
- return response.json(500, repr(e))
|
|
|
-
|
|
|
@staticmethod
|
|
|
def create_paypal_payment(lang, orderID, price, currency, content, response):
|
|
|
cancel_url = CommonService.get_payment_status_url(lang, 'fail')
|