parent
28e47abe07
commit
7f005cc298
10 changed files with 425 additions and 23 deletions
@ -0,0 +1,23 @@ |
|||||||
|
# Generated by Django 4.2.7 on 2023-12-22 03:37 |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('mock', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='zzmockmodel', |
||||||
|
name='auditSessionCode', |
||||||
|
field=models.CharField(help_text='需要审核的过场场次编码', max_length=20, null=True, verbose_name='需要审核的过场场次编码'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='zzmockmodel', |
||||||
|
name='auditStatus', |
||||||
|
field=models.CharField(help_text='需要审核的过场场次状态', max_length=3, null=True, verbose_name='需要审核的过场场次状态'), |
||||||
|
), |
||||||
|
] |
@ -0,0 +1,142 @@ |
|||||||
|
import pymysql |
||||||
|
from pymysql.cursors import DictCursor |
||||||
|
|
||||||
|
|
||||||
|
def get(): |
||||||
|
mock_data = { |
||||||
|
'message': '操作成功', |
||||||
|
'data': |
||||||
|
{ |
||||||
|
'filmList': |
||||||
|
[ |
||||||
|
{ |
||||||
|
'filmCode': '001299992022', |
||||||
|
'duration': 90, |
||||||
|
'aliasName': None, |
||||||
|
'keyEndtime': '2050-12-31', |
||||||
|
'keyStarttime': '2022-01-01', |
||||||
|
'reshowFlag': False, |
||||||
|
'publishDate': '2023-01-01', |
||||||
|
'filmName': 'Mock测试影片(不要排片!)', |
||||||
|
'producer': '无', |
||||||
|
'publisher': '暂空', |
||||||
|
'language': None, |
||||||
|
'version': '0' |
||||||
|
} |
||||||
|
], |
||||||
|
'pageable': |
||||||
|
{ |
||||||
|
'size': 20, |
||||||
|
'totalPages': 1, |
||||||
|
'page': 1 |
||||||
|
} |
||||||
|
}, |
||||||
|
'code': '200', |
||||||
|
'status': 'success' |
||||||
|
} |
||||||
|
return mock_data |
||||||
|
|
||||||
|
|
||||||
|
""" |
||||||
|
国家编码(3)+ 发行版本编码(1)+ 当年流水编码(4)+ 年份(4) |
||||||
|
例如 001d12342023 |
||||||
|
|
||||||
|
国家编码: |
||||||
|
001 中国 |
||||||
|
002 中国香港 |
||||||
|
003 中国台湾 |
||||||
|
011 朝鲜 |
||||||
|
012 日本 |
||||||
|
013 越南 |
||||||
|
014 泰国 |
||||||
|
015 缅甸 |
||||||
|
016 新加坡 |
||||||
|
017 印尼 |
||||||
|
018 斯里兰卡 |
||||||
|
019 印度 |
||||||
|
020 巴基斯坦 |
||||||
|
021 蒙古 |
||||||
|
022 伊拉克 |
||||||
|
023 黎巴嫩 |
||||||
|
024 土尔其 |
||||||
|
025 菲律宾 |
||||||
|
026 尼泊尔 |
||||||
|
027 叙利亚 |
||||||
|
035 澳大利亚 |
||||||
|
036 新西兰 |
||||||
|
041 埃及 |
||||||
|
042 阿尔及利亚 |
||||||
|
043 突尼斯 |
||||||
|
044 摩洛哥 |
||||||
|
051 美国 |
||||||
|
052 墨西哥 |
||||||
|
053 委内瑞拉 |
||||||
|
054 古巴 |
||||||
|
055 哥伦比亚 |
||||||
|
056 玻利维亚 |
||||||
|
058 阿根廷 |
||||||
|
059 加拿大 |
||||||
|
060 巴西 |
||||||
|
073 丹麦 |
||||||
|
076 荷兰 |
||||||
|
077 西班牙 |
||||||
|
078 意大利 |
||||||
|
079 西德 |
||||||
|
080 东德 |
||||||
|
081 瑞士 |
||||||
|
082 奥地利 |
||||||
|
083 波兰 |
||||||
|
084 捷克 |
||||||
|
085 匈牙利 |
||||||
|
086 罗马尼亚 |
||||||
|
087 保加利亚 |
||||||
|
088 南斯拉夫 |
||||||
|
089 阿尔巴尼亚 |
||||||
|
090 希腊 |
||||||
|
091 俄罗斯 |
||||||
|
092 比利时 |
||||||
|
093 瑞典 |
||||||
|
其他未列出的三位编码由《影片编码原则》保留。 |
||||||
|
|
||||||
|
发行版本: |
||||||
|
0、故事片观摩影片 |
||||||
|
1、故事片普通 |
||||||
|
2、故事片普通立体 |
||||||
|
3、故事片IMAX |
||||||
|
4、故事片IMAX立体 |
||||||
|
5、故事片胶片(进口) |
||||||
|
6、故事片其他特种电影 |
||||||
|
7、故事片其他 |
||||||
|
8、故事片中国巨幕 |
||||||
|
9、故事片中国巨幕立体 |
||||||
|
a、动画片观摩影片 |
||||||
|
b、动画片普通 |
||||||
|
o、动画片普通立体 |
||||||
|
d、动画片IMAX |
||||||
|
e、动画片IMAX立体 |
||||||
|
f、动画片胶片(进口) |
||||||
|
g、动画片其他特种电影 |
||||||
|
h、动画片其他 |
||||||
|
i、动画片中国巨幕 |
||||||
|
j、动画片中国巨幕立体 |
||||||
|
k、纪录片观摩影片 |
||||||
|
l、纪录片普通 |
||||||
|
m、纪录片普通立体 |
||||||
|
n、纪录片IMAX |
||||||
|
o、纪录片IMAX立体 |
||||||
|
p、纪录片胶片(进口) |
||||||
|
q、纪录片其他特种电影 |
||||||
|
r、纪录片其他 |
||||||
|
s、纪录片中国巨幕 |
||||||
|
t、纪录片中国巨幕立体 |
||||||
|
u、科教片观摩影片 |
||||||
|
v、科教片普逋 |
||||||
|
w、科教片普通立体 |
||||||
|
x、科教片IMAX |
||||||
|
y、科教片IMAX立体 |
||||||
|
z、科教片胶片(进口) |
||||||
|
A、科教片其他特种电影 |
||||||
|
B、科教片其他 |
||||||
|
C、科教片中国巨幕 |
||||||
|
D、科教片中国巨幕立体 |
||||||
|
""" |
@ -0,0 +1,125 @@ |
|||||||
|
import pymysql |
||||||
|
from pymysql.cursors import DictCursor |
||||||
|
from mock.models import ZZMockModel |
||||||
|
|
||||||
|
|
||||||
|
# 转换sessionCode为show_id |
||||||
|
def handle_session_code(session_code): |
||||||
|
while session_code.startswith('0'): |
||||||
|
session_code = session_code[1:] |
||||||
|
return session_code |
||||||
|
|
||||||
|
|
||||||
|
def get(cinema_data, request): |
||||||
|
# 审核状态映射 |
||||||
|
# 退票状态 1-未提交 2-审核中 3-审核通过 4-审核失败 |
||||||
|
# 售票状态 1-已审核 2-已驳回 3-审核中 4-已补登 5-未提交 6-提交失败 |
||||||
|
# 专资接口 # operation 1售票 2退票 # status 0不通过 1通过 2待审核 99待提交 |
||||||
|
refund_status_dict = { |
||||||
|
'3': '1', |
||||||
|
'4': '0' |
||||||
|
} |
||||||
|
sell_status_dict = { |
||||||
|
'1': '1', |
||||||
|
'2': '0', |
||||||
|
'4': '1', |
||||||
|
} |
||||||
|
|
||||||
|
# 定义影院数据库 |
||||||
|
db_config = { |
||||||
|
'host': cinema_data.ip, |
||||||
|
'user': cinema_data.db_user, |
||||||
|
'password': cinema_data.db_pwd, |
||||||
|
'database': 'cine', |
||||||
|
'connect_timeout': 5, |
||||||
|
} |
||||||
|
|
||||||
|
# 获取审核状态 |
||||||
|
audit_config = ZZMockModel.objects.filter(ip=cinema_data.ip).first() |
||||||
|
target_show_id = audit_config.auditShowId |
||||||
|
target_status = audit_config.auditStatus |
||||||
|
|
||||||
|
# 获取请求数据 |
||||||
|
session_code = request.query_params.get('sessionCode') |
||||||
|
overtime_type = request.query_params.get('overtimeType') |
||||||
|
|
||||||
|
# session_code装show_id |
||||||
|
request_show_id = handle_session_code(session_code) |
||||||
|
|
||||||
|
# 如果不是要测试的场次直接返回None, 从而执行bypass |
||||||
|
if request_show_id != target_show_id: |
||||||
|
return None |
||||||
|
|
||||||
|
db_conn = pymysql.Connect(**db_config) |
||||||
|
db_cursor = db_conn.cursor(cursor=DictCursor) |
||||||
|
ticket_list = [] |
||||||
|
# 处理过场收票 |
||||||
|
|
||||||
|
if overtime_type == '0': |
||||||
|
# zz_audit_status 专资审核状态 1-已审核 2-已驳回 3-审核中 4-已补登 5-未提交 6-提交失败 |
||||||
|
# cinema_sell_add_status 补登状态 1-已审核 2-已驳回 3-审核中, |
||||||
|
sell_sql = """ |
||||||
|
SELECT csad.id, |
||||||
|
csad.ticket_no AS ticket_no, |
||||||
|
csa.cinema_sell_add_status AS add_status, |
||||||
|
csa.zz_audit_status AS audit_status, |
||||||
|
csa.cinema_sell_add_showid AS show_id |
||||||
|
FROM cinema_sell_add_detail csad |
||||||
|
LEFT JOIN cinema_sell_add csa ON csad.cinema_sell_add_id = csa.cinema_sell_add_id |
||||||
|
WHERE csad.ticket_no <> '' |
||||||
|
AND csa.cinema_sell_add_showid = %s |
||||||
|
ORDER BY csad.id DESC; |
||||||
|
""" |
||||||
|
db_cursor.execute(sell_sql, (target_show_id,)) |
||||||
|
sell_tickets = db_cursor.fetchall() |
||||||
|
for ticket in sell_tickets: |
||||||
|
sell_status = str(ticket['audit_status']) |
||||||
|
if sell_status in ('5', '6'): |
||||||
|
continue |
||||||
|
elif sell_status == '3': |
||||||
|
ticket_list.append({ |
||||||
|
'ticketNo': ticket['ticket_no'], |
||||||
|
'operation': 2, |
||||||
|
'status': target_status |
||||||
|
}) |
||||||
|
else: |
||||||
|
ticket_list.append({ |
||||||
|
'ticketNo': ticket['ticket_no'], |
||||||
|
'operation': 2, |
||||||
|
'status': sell_status_dict[sell_status] |
||||||
|
}) |
||||||
|
# 处理过场退票 |
||||||
|
if overtime_type == '1': |
||||||
|
# cinema_refund_order_detail |
||||||
|
refund_sql = """ |
||||||
|
SELECT crod.id, crod.cinema_sell_id, crod.refund_status, cslei.ticket_no |
||||||
|
FROM cinema_refund_order_detail crod |
||||||
|
LEFT JOIN cinema_sell_log_ext_info cslei ON crod.cinema_sell_id = cslei.cinema_sell_id |
||||||
|
WHERE refund_order_id IN (SELECT cinema_refund_order.refund_order_id FROM cinema_refund_order WHERE show_id = %s) |
||||||
|
ORDER BY id DESC; |
||||||
|
""" |
||||||
|
db_cursor.execute(refund_sql, (target_show_id,)) |
||||||
|
refund_tickets = db_cursor.fetchall() |
||||||
|
|
||||||
|
for ticket in refund_tickets: |
||||||
|
refund_status = str(ticket['refund_status']) |
||||||
|
if refund_status == '1': |
||||||
|
continue |
||||||
|
elif refund_status == '2': |
||||||
|
ticket_list.append({ |
||||||
|
'ticketNo': ticket['ticket_no'], |
||||||
|
'operation': 2, |
||||||
|
'status': target_status |
||||||
|
}) |
||||||
|
else: |
||||||
|
ticket_list.append({ |
||||||
|
'ticketNo': ticket['ticket_no'], |
||||||
|
'operation': 2, |
||||||
|
'status': refund_status_dict[refund_status] |
||||||
|
}) |
||||||
|
print(ticket_list) |
||||||
|
mock_data = {'message': '操作成功', |
||||||
|
'data': {'ticketList': ticket_list}, |
||||||
|
'code': '200', |
||||||
|
'status': 'success'} |
||||||
|
return mock_data |
@ -0,0 +1,3 @@ |
|||||||
|
def get(): |
||||||
|
mock_data = {'message': '操作成功', 'data': [], 'code': '200', 'status': 'success'} |
||||||
|
return mock_data |
Loading…
Reference in new issue