|
@@ -3,7 +3,6 @@ import pytz
|
|
|
import json
|
|
|
from datetime import datetime
|
|
|
from datetime import time as Time
|
|
|
-import csv
|
|
|
|
|
|
from Model.models import AppAdvertiseCampaign, DeviceTypeModel, CountryModel, Device_User, OpenScreenCampaign
|
|
|
from Ansjer.config import AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, SERVER_TYPE
|
|
@@ -408,14 +407,14 @@ class AppCampaignView(View):
|
|
|
|
|
|
# 日期范围
|
|
|
campaigns_start_date = datetime.fromtimestamp(campaign.campaign_start_date, pytz.utc).astimezone(
|
|
|
- timezone).replace(hour=0, minute=0, second=0, microsecond=0).timestamp() # 时间戳版本
|
|
|
+ timezone).replace(hour=0, minute=0, second=0, microsecond=0).timestamp() # 时间戳版本
|
|
|
campaign_end_date = datetime.fromtimestamp(campaign.campaign_end_date, pytz.utc).astimezone(
|
|
|
timezone).replace(hour=0, minute=0, second=0, microsecond=0).timestamp() # 时间戳版本
|
|
|
|
|
|
# 时间范围
|
|
|
campaign_start_firstday = sum(int(x) * 60 ** i for i, x in enumerate(reversed(
|
|
|
datetime.utcfromtimestamp(campaign.campaign_start_date + campaign.campaign_show_stime).replace(
|
|
|
- tzinfo=pytz.utc).astimezone(timezone).strftime('%H:%M').split(':')))) * 60 # 秒数版本
|
|
|
+ tzinfo=pytz.utc).astimezone(timezone).strftime('%H:%M').split(':')))) * 60 # 秒数版本
|
|
|
campaign_end_firstday = sum(int(x) * 60 ** i for i, x in enumerate(reversed(
|
|
|
datetime.utcfromtimestamp(campaign.campaign_start_date + campaign.campaign_show_etime).replace(
|
|
|
tzinfo=pytz.utc).astimezone(timezone).strftime('%H:%M').split(':')))) * 60 # 秒数版本
|
|
@@ -505,45 +504,27 @@ class AppCampaignView(View):
|
|
|
return response.json(0)
|
|
|
|
|
|
def get_user_behavior_log(self, request_dict, response):
|
|
|
- status = request_dict.get('status', None)
|
|
|
- user_id = request_dict.get('user_id', None)
|
|
|
- behavior_stime = request_dict.get('start_time', None)
|
|
|
- behavior_etime = request_dict.get('end_time', None)
|
|
|
- page = request_dict.get('page', 1) # 默认为第一页
|
|
|
- page_size = request_dict.get('page_size', 10) # 默认每页显示10条记录
|
|
|
- behavior_log_list = []
|
|
|
-
|
|
|
- open_screen_campaigns = OpenScreenCampaign.objects.all()
|
|
|
- if user_id is not None:
|
|
|
- open_screen_campaigns = open_screen_campaigns.filter(user_id=user_id)
|
|
|
- if status is not None:
|
|
|
- open_screen_campaigns = open_screen_campaigns.filter(status=status)
|
|
|
- # 时间过滤
|
|
|
- if behavior_stime is not None and behavior_etime is not None:
|
|
|
- open_screen_campaigns = open_screen_campaigns.filter(update_time__range=[behavior_stime, behavior_etime])
|
|
|
- elif behavior_stime is not None:
|
|
|
- open_screen_campaigns = open_screen_campaigns.filter(update_time__gte=behavior_stime)
|
|
|
- elif behavior_etime is not None:
|
|
|
- open_screen_campaigns = open_screen_campaigns.filter(update_time__lte=behavior_etime)
|
|
|
-
|
|
|
- if not open_screen_campaigns.exists():
|
|
|
- return response.json(0, {"behavior_log_list": [], "total": 0})
|
|
|
- # 分页
|
|
|
- open_screen_campaigns = open_screen_campaigns.order_by('id')
|
|
|
- paginator = Paginator(open_screen_campaigns, page_size)
|
|
|
- open_screen_campaigns_page = paginator.page(page)
|
|
|
-
|
|
|
- for campaign in open_screen_campaigns_page:
|
|
|
- campaign_name = campaign.campaign_id.campaign_name if campaign.campaign_id else '广告不存在'
|
|
|
- behavior_log_list.append({
|
|
|
- "campaign_name": campaign_name,
|
|
|
- "user_id": campaign.user_id,
|
|
|
- "status": campaign.status,
|
|
|
- "behavior_time": campaign.update_time
|
|
|
- })
|
|
|
-
|
|
|
- return response.json(0, {"behavior_log_list": behavior_log_list,
|
|
|
- "total": paginator.count})
|
|
|
+ campaign_ids = request_dict.get('campaign_ids', None)
|
|
|
+ start_time = request_dict.get('start_time', None)
|
|
|
+ end_time = request_dict.get('end_time', None)
|
|
|
+ if not all([start_time, end_time]):
|
|
|
+ return response.json(444)
|
|
|
+ open_screen_campaign_qs = OpenScreenCampaign.objects.filter(update_time__range=[int(start_time), int(end_time)])
|
|
|
+
|
|
|
+ if campaign_ids is not None:
|
|
|
+ open_screen_campaign_qs = open_screen_campaign_qs.filter(
|
|
|
+ Q(campaign_id_id__isnull=True) | Q(campaign_id_id__in=json.loads(campaign_ids)))
|
|
|
+
|
|
|
+ open_screen_campaign_qs = open_screen_campaign_qs.select_related('campaign_id').annotate(
|
|
|
+ campaign_name=F('campaign_id__campaign_name'),
|
|
|
+ campaign_type=F('campaign_id__campaign_type'),
|
|
|
+ campaign_status=F('campaign_id__status')
|
|
|
+ ).values('id', 'user_id', 'status', 'update_time', 'create_time', 'campaign_name', 'campaign_type',
|
|
|
+ 'campaign_status')
|
|
|
+ if not open_screen_campaign_qs.exists():
|
|
|
+ return response.json(0, {'list': []})
|
|
|
+ campaigns_list = list(open_screen_campaign_qs)
|
|
|
+ return response.json(0, {'list': campaigns_list})
|
|
|
|
|
|
def get_country_list(self, response):
|
|
|
try:
|
|
@@ -554,7 +535,7 @@ class AppCampaignView(View):
|
|
|
elif SERVER_TYPE == 'Ansjer.cn_config.formal_settings':
|
|
|
region_api = 'https://www.zositechc.cn/'
|
|
|
else:
|
|
|
- region_api= 'https://test.zositechc.cn/'
|
|
|
+ region_api = 'https://test.zositechc.cn/'
|
|
|
country_qs = CountryModel.objects.filter(region__api=region_api).values('country_name')
|
|
|
if not country_qs.exists():
|
|
|
return response.json(173)
|