|
@@ -11,6 +11,7 @@ import logging
|
|
|
import math
|
|
|
import time
|
|
|
from datetime import datetime, timedelta
|
|
|
+from urllib.parse import urlparse
|
|
|
|
|
|
from django.db.models import F, Value, CharField, Sum
|
|
|
from django.views.generic.base import View
|
|
@@ -24,6 +25,7 @@ from Object.RedisObject import RedisObject
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Object.utils import LocalDateTimeUtil
|
|
|
+from Ansjer.config import DETECT_PUSH_DOMAINS
|
|
|
|
|
|
LOGGER = logging.getLogger('info')
|
|
|
|
|
@@ -61,6 +63,8 @@ class AlgorithmShopView(View):
|
|
|
return self.get_scenario_algorithm_list(request_dict, response)
|
|
|
elif operation == 'getPassengerFlowList': # 获取客流统计列表
|
|
|
return self.get_passenger_flow_list(request_dict, response)
|
|
|
+ elif operation == 'getNotifyDomain':
|
|
|
+ return self.get_notify_domain(response)
|
|
|
else:
|
|
|
return response.json(0)
|
|
|
|
|
@@ -461,6 +465,7 @@ class AlgorithmShopView(View):
|
|
|
now_time = request_dict.get('nowTime')
|
|
|
flow_type = request_dict.get('flowType')
|
|
|
query_type = request_dict.get('queryType')
|
|
|
+ channel = int(request_dict.get('channel', '1'))
|
|
|
if not all([now_time, flow_type, query_type]):
|
|
|
return response.json(444)
|
|
|
query_type = int(query_type)
|
|
@@ -473,11 +478,11 @@ class AlgorithmShopView(View):
|
|
|
if passenger_flow_json:
|
|
|
return response.json(0, json.loads(passenger_flow_json))
|
|
|
if query_type == 1:
|
|
|
- passenger_flow_list = cls.get_passenger_flow_by_day(uid, int(now_time), flow_type)
|
|
|
+ passenger_flow_list = cls.get_passenger_flow_by_day(uid, int(now_time), flow_type, channel)
|
|
|
elif query_type == 2:
|
|
|
- passenger_flow_list = cls.get_passenger_flow_by_month(uid, int(now_time), flow_type)
|
|
|
+ passenger_flow_list = cls.get_passenger_flow_by_month(uid, int(now_time), flow_type, channel)
|
|
|
elif query_type == 3:
|
|
|
- passenger_flow_list = cls.get_passenger_flow_by_year(uid, int(now_time), flow_type)
|
|
|
+ passenger_flow_list = cls.get_passenger_flow_by_year(uid, int(now_time), flow_type, channel)
|
|
|
else:
|
|
|
return response.json(0, passenger_flow_list)
|
|
|
if passenger_flow_list:
|
|
@@ -489,7 +494,7 @@ class AlgorithmShopView(View):
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@staticmethod
|
|
|
- def get_passenger_flow_by_day(uid, now_time, flow_type):
|
|
|
+ def get_passenger_flow_by_day(uid, now_time, flow_type, channel):
|
|
|
"""
|
|
|
按天获取客流统计
|
|
|
"""
|
|
@@ -501,7 +506,8 @@ class AlgorithmShopView(View):
|
|
|
device_time__gte=t_list[23],
|
|
|
device_time__lte=t_list[0] + 60,
|
|
|
type=int(flow_type),
|
|
|
- uid=uid
|
|
|
+ uid=uid,
|
|
|
+ channel=channel
|
|
|
).order_by('device_time')
|
|
|
if not pf_qs.exists():
|
|
|
return passenger_flow_list
|
|
@@ -535,7 +541,7 @@ class AlgorithmShopView(View):
|
|
|
return passenger_flow_list
|
|
|
|
|
|
@staticmethod
|
|
|
- def get_passenger_flow_by_month(uid, now_time, flow_type):
|
|
|
+ def get_passenger_flow_by_month(uid, now_time, flow_type, channel):
|
|
|
"""
|
|
|
按月获取客流统计
|
|
|
"""
|
|
@@ -549,7 +555,8 @@ class AlgorithmShopView(View):
|
|
|
pf_qs = DeviceAlgorithmPassengerFlow.objects.filter(
|
|
|
device_time__range=(s_time, now_time),
|
|
|
type=int(flow_type),
|
|
|
- uid=uid
|
|
|
+ uid=uid,
|
|
|
+ channel=channel
|
|
|
).order_by('device_time')
|
|
|
|
|
|
passenger_flow_list = []
|
|
@@ -588,7 +595,7 @@ class AlgorithmShopView(View):
|
|
|
return passenger_flow_list
|
|
|
|
|
|
@staticmethod
|
|
|
- def get_passenger_flow_by_year(uid, now_time, flow_type):
|
|
|
+ def get_passenger_flow_by_year(uid, now_time, flow_type, channel):
|
|
|
"""
|
|
|
按年获取客流统计
|
|
|
"""
|
|
@@ -597,7 +604,7 @@ class AlgorithmShopView(View):
|
|
|
for i in range(12):
|
|
|
if i == 0:
|
|
|
month_time = LocalDateTimeUtil.get_current_month_first_day(now_time)
|
|
|
- df_qs = DeviceAlgorithmPassengerFlow.objects.filter(type=flow_type, uid=uid)
|
|
|
+ df_qs = DeviceAlgorithmPassengerFlow.objects.filter(type=flow_type, uid=uid, channel=channel)
|
|
|
if i == 0:
|
|
|
df_qs = df_qs.filter(device_time__range=(month_time, now_time))
|
|
|
data_qs = df_qs.first()
|
|
@@ -615,3 +622,9 @@ class AlgorithmShopView(View):
|
|
|
'time': month_time
|
|
|
})
|
|
|
return passenger_flow_list
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_notify_domain(response):
|
|
|
+ parsed_url = urlparse(DETECT_PUSH_DOMAINS)
|
|
|
+ domain = parsed_url.netloc
|
|
|
+ return response.json(0, {'domain': domain})
|