dingxin_toolbox
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

104 lines
4.1 KiB

from django.http import JsonResponse
from django.db.models import Q
from django.views.decorators.csrf import csrf_exempt
import json
from ai.models import *
from ai.utils.show_process import show_main_process
from ai.utils.show_func import get_cinema_show_result_func
from ai.utils.basic_func import *
# 手动触发ai排片
@csrf_exempt
def manual_general_show(request):
zz_code = request.GET.dict().get('cinema_code')
result = show_main_process(zz_code)
result_dict = {
'status': 'success' if result else 'fail',
'message': '生成成功' if result else '生成失败',
}
return JsonResponse(result_dict, json_dumps_params={'ensure_ascii': False})
# 更新指定日期的排片
@csrf_exempt
def get_cinema_show_result(request):
zz_code = request.GET.dict().get('cinema_code')
show_date = request.GET.dict().get('show_date')
print(zz_code, show_date)
show, income = get_cinema_show_result_func(zz_code, show_date)
result_dict = {
'status': 'success',
'message': '生成成功',
'show': show,
'income': income,
}
return JsonResponse(result_dict, json_dumps_params={'ensure_ascii': False})
# 清除redis锁
@csrf_exempt
def clear_lock(request):
clear_lock_func()
result_dict = {
'status': 'success',
'message': '完成',
}
return JsonResponse(result_dict, json_dumps_params={'ensure_ascii': False})
@csrf_exempt
def report(request):
zz_code = request.GET.dict().get('cinema_code')
show_date = request.GET.dict().get('show_date')
force = request.GET.dict().get('force')
print(zz_code, show_date)
cinema = TestCinema.objects.filter(zz_code=zz_code).first()
# 获取真实排片和销售数据
check_point = datetime.datetime.strftime(
datetime.datetime.strptime(show_date, '%Y-%m-%d') + datetime.timedelta(hours=30), '%Y-%m-%d %H:%M:%S')
last_real_data = AiShow.objects.filter(Q(is_ai_show=False) &
Q(zz_code=zz_code) &
Q(show_date=show_date) &
Q(updated_at__gt=check_point)).order_by('-id').first()
if (not last_real_data) or (force == '1'):
get_cinema_show_result_func(zz_code, show_date)
last_ai_data = AiShow.objects.filter(Q(is_ai_show=True) &
Q(zz_code=zz_code) &
Q(show_date=show_date)).order_by('-id').first()
if not last_ai_data:
result_dict = {
'status': 'Failure',
'message': '没有查询到有效的智能排片数据,请调整日期和影院后再试!'}
return JsonResponse(result_dict, json_dumps_params={'ensure_ascii': False})
last_real_data = AiShow.objects.filter(Q(is_ai_show=False) &
Q(zz_code=zz_code) &
Q(show_date=show_date)).order_by('-id').first()
ai_dict = csv_to_obj(last_ai_data.show)
real_dict = csv_to_obj(last_real_data.show)
temp_dict = csv_to_obj(last_ai_data.template)
print(ai_dict, real_dict, temp_dict)
output_list_ai_real, output_csv_ai_real = format_show_data(zz_code, show_date, ai_dict, real_dict)
output_list_ai_temp, output_csv_ai_temp = format_show_data(zz_code, show_date, ai_dict, temp_dict)
# 返回
result_dict = {
'status': 'success',
'message': '成功',
'data': {
'cinema_name': last_ai_data.cinema,
'zz_code': last_ai_data.zz_code,
'real_sales': last_real_data.sales,
'ai_sales': last_ai_data.sales,
'take_times': last_ai_data.take_times,
'take_tokens': json.loads(last_ai_data.take_tokens)['total_tokens'],
'csv': list_to_csv(output_csv_ai_real),
'real_obj': output_list_ai_real,
'template_obj': output_list_ai_temp,
'template_date':last_ai_data.temp_date,
'prompt': last_ai_data.prompt,
'result': last_ai_data.result,
}
}
print(result_dict)
return JsonResponse(result_dict, json_dumps_params={'ensure_ascii': False})