|
@@ -57,7 +57,7 @@ from Object.UidTokenObject import UidTokenObject
|
|
from Service.CommonService import CommonService
|
|
from Service.CommonService import CommonService
|
|
from Object.m3u8generate import PlaylistGenerator
|
|
from Object.m3u8generate import PlaylistGenerator
|
|
from Object.WechatPayObject import WechatPayObject
|
|
from Object.WechatPayObject import WechatPayObject
|
|
-from django.db.models import Q, F, Count
|
|
|
|
|
|
+from django.db.models import Q, F, Count, Sum
|
|
from Controller.PaymentCycle import Paypal
|
|
from Controller.PaymentCycle import Paypal
|
|
from decimal import Decimal
|
|
from decimal import Decimal
|
|
from Ansjer.config import SERVER_TYPE
|
|
from Ansjer.config import SERVER_TYPE
|
|
@@ -115,7 +115,7 @@ class AiView(View):
|
|
return self.deleteInfo(userID, request_dict, response)
|
|
return self.deleteInfo(userID, request_dict, response)
|
|
elif operation == 'queryorderlist': # 查询订单
|
|
elif operation == 'queryorderlist': # 查询订单
|
|
return self.do_querylist(userID, request_dict, response)
|
|
return self.do_querylist(userID, request_dict, response)
|
|
- elif operation == 'getUsingPackage': # 获取设备当前使用的ai套餐
|
|
|
|
|
|
+ elif operation == 'getUsingPackage': # 获取当前使用的ai套餐
|
|
return self.getUsingPackage(request_dict, userID, response)
|
|
return self.getUsingPackage(request_dict, userID, response)
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
@@ -128,24 +128,19 @@ class AiView(View):
|
|
status = request_dict.get('status', None)
|
|
status = request_dict.get('status', None)
|
|
m_code = request_dict.get('m_code', None)
|
|
m_code = request_dict.get('m_code', None)
|
|
uid = request_dict.get('uid', None)
|
|
uid = request_dict.get('uid', None)
|
|
- # 设备语言
|
|
|
|
lang = request_dict.get('lang', 'en')
|
|
lang = request_dict.get('lang', 'en')
|
|
tz = request_dict.get('tz', '0')
|
|
tz = request_dict.get('tz', '0')
|
|
- # 消息提醒功能新增
|
|
|
|
-
|
|
|
|
- # 如果传空上来,就默认为0
|
|
|
|
- if tz == '':
|
|
|
|
- tz = 0
|
|
|
|
- else:
|
|
|
|
- tz = tz.replace("GMT", "")
|
|
|
|
detect_group = request_dict.get('detect_group', None)
|
|
detect_group = request_dict.get('detect_group', None)
|
|
interval = request_dict.get('interval', None)
|
|
interval = request_dict.get('interval', None)
|
|
|
|
+
|
|
if not status:
|
|
if not status:
|
|
return response.json(444, 'status')
|
|
return response.json(444, 'status')
|
|
# 关闭推送
|
|
# 关闭推送
|
|
if not all([appBundleId, app_type, token_val, uid, m_code]):
|
|
if not all([appBundleId, app_type, token_val, uid, m_code]):
|
|
return response.json(444, 'appBundleId,app_type,token_val,uid,m_code')
|
|
return response.json(444, 'appBundleId,app_type,token_val,uid,m_code')
|
|
|
|
|
|
|
|
+ # 如果传空上来,就默认为0
|
|
|
|
+ tz = 0 if tz == '' else tz.replace("GMT", "")
|
|
# 判断推送类型对应key是否存在
|
|
# 判断推送类型对应key是否存在
|
|
if push_type == '0':
|
|
if push_type == '0':
|
|
if appBundleId not in APNS_CONFIG.keys():
|
|
if appBundleId not in APNS_CONFIG.keys():
|
|
@@ -160,11 +155,11 @@ class AiView(View):
|
|
return response.json(173)
|
|
return response.json(173)
|
|
|
|
|
|
try:
|
|
try:
|
|
- hasAiService = AiService.objects.filter(uid=uid, use_status=1)
|
|
|
|
- if not hasAiService.exists():
|
|
|
|
|
|
+ ai_service_qs = AiService.objects.filter(uid=uid, use_status=1)
|
|
|
|
+ if not ai_service_qs.exists():
|
|
return response.json(10053)
|
|
return response.json(10053)
|
|
nowTime = int(time.time())
|
|
nowTime = int(time.time())
|
|
- endTime = hasAiService.values('endTime')[0]['endTime']
|
|
|
|
|
|
+ endTime = ai_service_qs.values('endTime')[0]['endTime']
|
|
if nowTime > endTime:
|
|
if nowTime > endTime:
|
|
return response.json(10054)
|
|
return response.json(10054)
|
|
|
|
|
|
@@ -198,9 +193,10 @@ class AiView(View):
|
|
uid_set_qs = UidSetModel.objects.create(**qs_data)
|
|
uid_set_qs = UidSetModel.objects.create(**qs_data)
|
|
uid_set_id = uid_set_qs.id
|
|
uid_set_id = uid_set_qs.id
|
|
|
|
|
|
|
|
+ qs_data['detect_status'] = status # ai开关状态
|
|
|
|
+ ai_service_qs.update(**qs_data)
|
|
topic_name = 'ansjer/generic/{}'.format(uid)
|
|
topic_name = 'ansjer/generic/{}'.format(uid)
|
|
if status == 0: # 关闭
|
|
if status == 0: # 关闭
|
|
- hasAiService.update(**qs_data)
|
|
|
|
# mqtt通知设备关闭AI识别功能
|
|
# mqtt通知设备关闭AI识别功能
|
|
msg = {'commandType': 'AIDisable'}
|
|
msg = {'commandType': 'AIDisable'}
|
|
req_success = CommonService.req_publish_mqtt_msg(uid, topic_name, msg)
|
|
req_success = CommonService.req_publish_mqtt_msg(uid, topic_name, msg)
|
|
@@ -208,7 +204,6 @@ class AiView(View):
|
|
return response.json(10044)
|
|
return response.json(10044)
|
|
return response.json(0)
|
|
return response.json(0)
|
|
elif status == 1: # 开启
|
|
elif status == 1: # 开启
|
|
- hasAiService.update(**qs_data)
|
|
|
|
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=userID, m_code=m_code, uid_set__uid=uid)
|
|
|
|
|
|
if uid_push_qs.exists():
|
|
if uid_push_qs.exists():
|
|
@@ -223,7 +218,6 @@ class AiView(View):
|
|
}
|
|
}
|
|
uid_push_qs.update(**uid_push_update_dict)
|
|
uid_push_qs.update(**uid_push_update_dict)
|
|
else:
|
|
else:
|
|
- # uid_set_id = uid_set_qs[0].id
|
|
|
|
uid_push_create_dict = {
|
|
uid_push_create_dict = {
|
|
'uid_set_id': uid_set_id,
|
|
'uid_set_id': uid_set_id,
|
|
'userID_id': userID,
|
|
'userID_id': userID,
|
|
@@ -268,7 +262,7 @@ class AiView(View):
|
|
if not uid:
|
|
if not uid:
|
|
return response.json(444)
|
|
return response.json(444)
|
|
try:
|
|
try:
|
|
- ai_server_qs = AiService.objects.filter(uid=uid).values('detect_status', 'detect_group')
|
|
|
|
|
|
+ ai_server_qs = AiService.objects.filter(uid=uid, use_status=1).values('detect_status', 'detect_group')
|
|
if not ai_server_qs.exists():
|
|
if not ai_server_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
res = {
|
|
res = {
|
|
@@ -282,30 +276,32 @@ class AiView(View):
|
|
def do_commodity_list(self, userID, request_dict, response):
|
|
def do_commodity_list(self, userID, request_dict, response):
|
|
uid = request_dict.get('uid', None)
|
|
uid = request_dict.get('uid', None)
|
|
lang = request_dict.get('lang', 'en')
|
|
lang = request_dict.get('lang', 'en')
|
|
- nowTime = int(time.time())
|
|
|
|
- # DVR/NVR设备暂不返回套餐列表
|
|
|
|
- device_info_qs = Device_Info.objects.filter(Q(UID=uid), Q(Type__lte=4) | Q(Type=10001))
|
|
|
|
- if device_info_qs.exists():
|
|
|
|
- return response.json(0)
|
|
|
|
|
|
|
|
- qs = AiStoreMeal.objects
|
|
|
|
|
|
+ try:
|
|
|
|
+ # DVR/NVR设备暂不返回套餐列表
|
|
|
|
+ device_info_qs = Device_Info.objects.filter(Q(UID=uid), Q(Type__lte=4) | Q(Type=10001))
|
|
|
|
+ if device_info_qs.exists():
|
|
|
|
+ return response.json(0)
|
|
|
|
|
|
- qs = qs.filter(is_show=1) # 过滤隐藏套餐
|
|
|
|
- qs = qs.annotate(ai_meal_id=F('id'))
|
|
|
|
- qs = qs.values("ai_meal_id", "title", "content", "price", "effective_day", "currency",
|
|
|
|
- "virtual_price", "symbol")
|
|
|
|
- if not qs.exists():
|
|
|
|
- return response.json(0)
|
|
|
|
|
|
+ # 查询套餐数据
|
|
|
|
+ ai_meal_qs = AiStoreMeal.objects.filter(is_show=1, lang__lang=lang).\
|
|
|
|
+ annotate(ai_meal_id=F('id'), title=F('lang__title'), content=F('lang__content')).\
|
|
|
|
+ values("ai_meal_id", "title", "content", "price", "effective_day", "currency", "virtual_price", "symbol")
|
|
|
|
+ if not ai_meal_qs.exists():
|
|
|
|
+ return response.json(0)
|
|
|
|
|
|
- # 查询每种套餐的所有支付方式
|
|
|
|
- ai_meal_list = list(qs)
|
|
|
|
- for ai_meal in ai_meal_list:
|
|
|
|
- pay_type_qs = Pay_Type.objects.filter(aistoremeal=ai_meal['ai_meal_id']).values('id', 'payment')
|
|
|
|
- ai_meal['pay_type'] = list(pay_type_qs)
|
|
|
|
- result = {
|
|
|
|
- 'meals': ai_meal_list,
|
|
|
|
- }
|
|
|
|
- return response.json(0, result)
|
|
|
|
|
|
+ # 查询每种套餐的所有支付方式
|
|
|
|
+ ai_meal_list = list(ai_meal_qs)
|
|
|
|
+ for ai_meal in ai_meal_list:
|
|
|
|
+ pay_type_qs = Pay_Type.objects.filter(aistoremeal=ai_meal['ai_meal_id']).values('id', 'payment')
|
|
|
|
+ ai_meal['pay_type'] = list(pay_type_qs)
|
|
|
|
+ result = {
|
|
|
|
+ 'meals': ai_meal_list,
|
|
|
|
+ }
|
|
|
|
+ return response.json(0, result)
|
|
|
|
+ except Exception as e:
|
|
|
|
+ print(e)
|
|
|
|
+ return response.json(500, repr(e))
|
|
|
|
|
|
def do_querylist(self, userID, request_dict, response):
|
|
def do_querylist(self, userID, request_dict, response):
|
|
page = request_dict.get('page', None)
|
|
page = request_dict.get('page', None)
|
|
@@ -314,57 +310,71 @@ class AiView(View):
|
|
lang = request_dict.get('lang', 'en')
|
|
lang = request_dict.get('lang', 'en')
|
|
if not page or not line:
|
|
if not page or not line:
|
|
return response.json(444, 'page,line')
|
|
return response.json(444, 'page,line')
|
|
- page = int(page)
|
|
|
|
- line = int(line)
|
|
|
|
- omqs = Order_Model.objects.filter(userID_id=userID, status=1, order_type=1)
|
|
|
|
- # 筛选指定设备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__title'), rank__content=F('ai_rank__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})
|
|
|
|
-
|
|
|
|
- # 获取设备当前使用的ai套餐
|
|
|
|
|
|
+
|
|
|
|
+ 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):
|
|
def getUsingPackage(self, request_dict, userID, response):
|
|
uid = request_dict.get('uid', None)
|
|
uid = request_dict.get('uid', None)
|
|
lang = request_dict.get('lang', 'en')
|
|
lang = request_dict.get('lang', 'en')
|
|
# dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1, vodPrimaryUserID=userID)
|
|
# dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1, vodPrimaryUserID=userID)
|
|
# if not dv_qs.exists():
|
|
# if not dv_qs.exists():
|
|
# return response.json(12)
|
|
# return response.json(12)
|
|
- ai_service_qs = AiService.objects.filter(uid=uid, use_status=1)
|
|
|
|
- if not ai_service_qs.exists():
|
|
|
|
- return response.json(0, [])
|
|
|
|
- ai_service_qs = ai_service_qs.order_by('addTime').annotate(bucket__content=F('orders__ai_rank__title')).\
|
|
|
|
- values('uid', 'use_status', 'endTime', 'bucket__content')
|
|
|
|
- return response.json(0, [ai_service_qs[0]])
|
|
|
|
|
|
+ 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
|
|
|
|
+ return response.json(0, [ai_service_data])
|
|
|
|
+ except Exception as e:
|
|
|
|
+ print(e)
|
|
|
|
+ return response.json(500, repr(e))
|
|
|
|
|
|
def do_create_pay_order(self, request_dict, request, userID, response):
|
|
def do_create_pay_order(self, request_dict, request, userID, response):
|
|
uid = request_dict.get('uid', None)
|
|
uid = request_dict.get('uid', None)
|