import requests from django.shortcuts import render from django.http.response import JsonResponse from mock.utils import mock_service from mock.models import ZZMockModel from update.models import Cinema from django.views.decorators.csrf import csrf_exempt from pymysql.cursors import DictCursor import pymysql from mock.mock_templates import * ZZ_URL = 'https://zzcs.yinghezhong.com' # 数据上报 # 1、票房数据上报接口 POST /report/reportTicket @csrf_exempt def report_ticket(request): ip = request.META.get('REMOTE_ADDR') mock_service_switch = ZZMockModel.objects.filter(ip=ip).first() if mock_service_switch.reportTicket is True: mock_service.bypass(request) return mock_service.mock(ip, 'reportTicket') else: return mock_service.bypass(request) # 2、排片数据上报接口 POST /report/reportFilmSchedule @csrf_exempt def report_film_schedule(request): ip = request.META.get('REMOTE_ADDR') mock_service_switch = ZZMockModel.objects.filter(ip=ip).first() if mock_service_switch.reportFilmSchedule is True: mock_service.bypass(request) return mock_service.mock(ip, 'reportFilmSchedule') else: return mock_service.bypass(request) # 3、座位信息上报接口 POST /report/uploadScreenSeatInfo @csrf_exempt def upload_screen_seat_info(request): ip = request.META.get('REMOTE_ADDR') mock_service_switch = ZZMockModel.objects.filter(ip=ip).first() if mock_service_switch.uploadScreenSeatInfo is True: mock_service.bypass(request) return mock_service.mock(ip, 'uploadScreenSeatInfo') else: return mock_service.bypass(request) # 数据下载 # 1、影片信息下载接口 GET /data/downloadFilmInfo def download_film_info(request): ip = request.META.get('REMOTE_ADDR') mock_service_switch = ZZMockModel.objects.filter(ip=ip).first() if mock_service_switch.downloadFilmInfo is True: return mock_service.mock(ip, 'downloadFilmInfo') else: return mock_service.bypass(request) # 2、影院信息下载接口 GET /data/getCinemaInfo def get_cinema_info(request): ip = request.META.get('REMOTE_ADDR') mock_service_switch = ZZMockModel.objects.filter(ip=ip).first() if mock_service_switch.getCinemaInfo is True: return mock_service.mock(ip, 'getCinemaInfo') else: return mock_service.bypass(request) # 3、影厅信息下载接口 GET /data/getScreenInfo def get_screen_info(request): ip = request.META.get('REMOTE_ADDR') mock_service_switch = ZZMockModel.objects.filter(ip=ip).first() if mock_service_switch.getScreenInfo is True: return mock_service.mock(ip, 'getScreenInfo') else: return mock_service.bypass(request) # 超时票务审批 # 1、超时票务受理情况查询接口 GET /data/getOvertimeTicketStatus # 参数 场次id 审核状态 0不通过 1通过 2待审核 99待提交 def get_overtime_ticket_status(request): ip = request.META.get('REMOTE_ADDR') mock_service_switch = ZZMockModel.objects.filter(ip=ip).first() if mock_service_switch.getOvertimeTicketStatus is True: return mock_service.mock(ip, 'getOvertimeTicketStatus', request=request) else: return mock_service.bypass(request) # 数据查询 # 2、数据清洗错误查询接口 POST /query/validError def valid_error(request): ip = request.META.get('REMOTE_ADDR') mock_service_switch = ZZMockModel.objects.filter(ip=ip).first() if mock_service_switch.validError is True: return mock_service.mock(ip, 'validError') else: return mock_service.bypass(request) # 获取过场信息 def get_overtime_show(request): query_params = request.query_params.dict() ip = query_params.get('ip') cinema_data = Cinema.objects.filter(ip=ip).first() db_config = { 'host': cinema_data.ip, 'user': cinema_data.db_user, 'password': cinema_data.db_pwd, 'database': 'cine', 'connect_timeout': 5, } # 获取过场售票 sql_str = ''' SELECT csa.cinema_sell_add_showid AS show_id, cms.cinema_movie_name AS name, cms.cinema_movie_show_start_time AS start_time, chi.cinema_hall_name AS hall_name FROM cinema_sell_add csa LEFT JOIN cinema_hall_info chi ON csa.cinema_sell_add_hall = chi.cinema_hall_id LEFT JOIN cinema_movie_show cms ON csa.cinema_sell_add_showid = cms.cinema_movie_show_id GROUP BY csa.cinema_sell_add_showid ORDER BY cms.cinema_movie_show_start_time DESC; ''' db_conn = pymysql.Connect(**db_config) db_cursor = db_conn.cursor(cursor=DictCursor) db_cursor.execute(sql_str) show_data = db_cursor.fetchall() sell_show_list = [] for show in show_data: sell_show_list.append({'id': show['show_id'], 'show': show['name'] + ' ' + show['start_time'] + ' ' + show[ 'hall_name'] if show['hall_name'] is not None else '' }) # 获取过场退票场次 sql_str = ''' SELECT csl.cinema_movie_show_id AS show_id, csl.cinema_movie_name AS name, csl.cinema_movie_show_start_time AS start_time, chi.cinema_hall_name AS hall_name FROM cinema_sell_log csl LEFT JOIN cinema_hall_info chi ON csl.cinema_hall_id = chi.cinema_hall_id WHERE csl.cinema_sell_id IN (SELECT cinema_sell_id FROM cinema_refund_order_detail) GROUP BY cinema_movie_id ORDER BY csl.cinema_movie_show_start_time DESC; ''' db_conn = pymysql.Connect(**db_config) db_cursor = db_conn.cursor(cursor=DictCursor) db_cursor.execute(sql_str) show_data = db_cursor.fetchall() refund_show_list = [] for show in show_data: refund_show_list.append({'id': show['show_id'], 'show': show['name'] + ' ' + show['start_time'] + ' ' + show[ 'hall_name'] if show['hall_name'] is not None else '' }) return JsonResponse({'sell': sell_show_list, 'refund': refund_show_list}, json_dumps_params={'ensure_ascii': False}) # 获取mock数据的json def get_response(request, _api): _ip = request.query_params.dict().get('ip') return mock_service.mock(_ip, _api)