|
|
@ -1,3 +1,10 @@ |
|
|
|
|
|
|
|
from dspt_api.util.general.handle_float import f2 |
|
|
|
|
|
|
|
from dspt_api.util.general.handle_redis import get_data_from_redis, get_param_from_redis |
|
|
|
|
|
|
|
from dspt_api.util.general.handle_card import get_card_type |
|
|
|
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def general_seat_params(pay_type, data): |
|
|
|
""" |
|
|
|
""" |
|
|
|
说明: |
|
|
|
说明: |
|
|
|
支持现金、联名卡支付,电子券支付,扫码券支付 |
|
|
|
支持现金、联名卡支付,电子券支付,扫码券支付 |
|
|
@ -11,12 +18,6 @@ |
|
|
|
|
|
|
|
|
|
|
|
返回 结果, seat , ticket_cash, play_id, play_update_time, lock_flag, quan, timestamp |
|
|
|
返回 结果, seat , ticket_cash, play_id, play_update_time, lock_flag, quan, timestamp |
|
|
|
""" |
|
|
|
""" |
|
|
|
import random |
|
|
|
|
|
|
|
from dspt_api.util.general.handle_float import f2 |
|
|
|
|
|
|
|
from dspt_api.util.general.handle_redis import get_data_from_redis, get_param_from_redis |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def general_seat_params(pay_type, data): |
|
|
|
|
|
|
|
redis_key_prefix = f'dspt_api_{data["ip"]}_{data["env"]}_{data["member_type"]}_{data["pid"]}_{data["cid"]}' |
|
|
|
redis_key_prefix = f'dspt_api_{data["ip"]}_{data["env"]}_{data["member_type"]}_{data["pid"]}_{data["cid"]}' |
|
|
|
|
|
|
|
|
|
|
|
# 获取 area_info和partner_price |
|
|
|
# 获取 area_info和partner_price |
|
|
@ -24,6 +25,7 @@ def general_seat_params(pay_type, data): |
|
|
|
redis_key_api_lock = f'{redis_key_prefix}_{request_api_lock["path"]}' |
|
|
|
redis_key_api_lock = f'{redis_key_prefix}_{request_api_lock["path"]}' |
|
|
|
result_lock, _format_lock, seat_price_from_lock, _timestamp_lock = get_data_from_redis(redis_key_api_lock) |
|
|
|
result_lock, _format_lock, seat_price_from_lock, _timestamp_lock = get_data_from_redis(redis_key_api_lock) |
|
|
|
if not result_lock: |
|
|
|
if not result_lock: |
|
|
|
|
|
|
|
print('result_lock False') |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
area_info = seat_price_from_lock['areaInfo'] if len(seat_price_from_lock['areaInfo']) > 0 else False |
|
|
|
area_info = seat_price_from_lock['areaInfo'] if len(seat_price_from_lock['areaInfo']) > 0 else False |
|
|
|
lock_flag = seat_price_from_lock['lockFlag'] |
|
|
|
lock_flag = seat_price_from_lock['lockFlag'] |
|
|
@ -34,6 +36,7 @@ def general_seat_params(pay_type, data): |
|
|
|
redis_key_api_play = f'{redis_key_prefix}_{request_api_play["path"]}' |
|
|
|
redis_key_api_play = f'{redis_key_prefix}_{request_api_play["path"]}' |
|
|
|
result_play, _format_play, seat_price_from_play, _timestamp_play = get_data_from_redis(redis_key_api_play) |
|
|
|
result_play, _format_play, seat_price_from_play, _timestamp_play = get_data_from_redis(redis_key_api_play) |
|
|
|
if not result_play: |
|
|
|
if not result_play: |
|
|
|
|
|
|
|
print('result_play False') |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
market_price = seat_price_from_play['marketPrice'] |
|
|
|
market_price = seat_price_from_play['marketPrice'] |
|
|
|
play_id = seat_price_from_play['id'] |
|
|
|
play_id = seat_price_from_play['id'] |
|
|
@ -44,6 +47,7 @@ def general_seat_params(pay_type, data): |
|
|
|
redis_key_api_config = f'{redis_key_prefix}_{request_api_config["path"]}' |
|
|
|
redis_key_api_config = f'{redis_key_prefix}_{request_api_config["path"]}' |
|
|
|
result_config, _format_config, seat_price_from_config, _timestamp_config = get_data_from_redis(redis_key_api_config) |
|
|
|
result_config, _format_config, seat_price_from_config, _timestamp_config = get_data_from_redis(redis_key_api_config) |
|
|
|
if not result_config: |
|
|
|
if not result_config: |
|
|
|
|
|
|
|
print('result_config False') |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
handle_fee = seat_price_from_config['handleFee'] |
|
|
|
handle_fee = seat_price_from_config['handleFee'] |
|
|
|
partner_type = seat_price_from_config['partnerSubsidyType'] # 1:电商平台补贴;2:合作商补贴 |
|
|
|
partner_type = seat_price_from_config['partnerSubsidyType'] # 1:电商平台补贴;2:合作商补贴 |
|
|
@ -53,6 +57,7 @@ def general_seat_params(pay_type, data): |
|
|
|
redis_key_api_seat = f'{redis_key_prefix}_{request_api_seat["path"]}' |
|
|
|
redis_key_api_seat = f'{redis_key_prefix}_{request_api_seat["path"]}' |
|
|
|
result_seat, _format_seat, seat_price_from_seat, _timestamp_seat = get_data_from_redis(redis_key_api_seat) |
|
|
|
result_seat, _format_seat, seat_price_from_seat, _timestamp_seat = get_data_from_redis(redis_key_api_seat) |
|
|
|
if not result_seat: |
|
|
|
if not result_seat: |
|
|
|
|
|
|
|
print('result_seat False') |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
seat_id_list = [{'seat_id': seat['cineSeatId'], 'ticket_discount': seat.get('ticketDiscount', 0), |
|
|
|
seat_id_list = [{'seat_id': seat['cineSeatId'], 'ticket_discount': seat.get('ticketDiscount', 0), |
|
|
|
'service_discount': seat.get('serviceDiscount', 0)} for seat in seat_price_from_seat] |
|
|
|
'service_discount': seat.get('serviceDiscount', 0)} for seat in seat_price_from_seat] |
|
|
@ -147,6 +152,7 @@ def general_seat_params(pay_type, data): |
|
|
|
result_ecard, _format_ecard, seat_price_from_ecard, _timestamp_ecard = get_data_from_redis( |
|
|
|
result_ecard, _format_ecard, seat_price_from_ecard, _timestamp_ecard = get_data_from_redis( |
|
|
|
redis_key_api_ecard) |
|
|
|
redis_key_api_ecard) |
|
|
|
if not result_ecard: |
|
|
|
if not result_ecard: |
|
|
|
|
|
|
|
print('result_ecard False') |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
ecard_info = seat_price_from_ecard['seatPrices'] if len(seat_price_from_ecard['seatPrices']) > 0 else False |
|
|
|
ecard_info = seat_price_from_ecard['seatPrices'] if len(seat_price_from_ecard['seatPrices']) > 0 else False |
|
|
|
# 错误判断 |
|
|
|
# 错误判断 |
|
|
@ -195,6 +201,7 @@ def general_seat_params(pay_type, data): |
|
|
|
result_yushouquan, _format_yushouquan, seat_price_from_yushouquan, _timestamp_yushouquan = get_data_from_redis( |
|
|
|
result_yushouquan, _format_yushouquan, seat_price_from_yushouquan, _timestamp_yushouquan = get_data_from_redis( |
|
|
|
redis_key_api_yushouquan) |
|
|
|
redis_key_api_yushouquan) |
|
|
|
if not result_yushouquan: |
|
|
|
if not result_yushouquan: |
|
|
|
|
|
|
|
print('result_yushouquan False') |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
return False, None, None, None, None, None, None, None |
|
|
|
# 获取券码 |
|
|
|
# 获取券码 |
|
|
|
req_params = get_param_from_redis(redis_key_api_yushouquan) |
|
|
|
req_params = get_param_from_redis(redis_key_api_yushouquan) |
|
|
@ -229,3 +236,180 @@ def general_seat_params(pay_type, data): |
|
|
|
return True, ','.join(seat_list), ticket_cash, play_id, play_update_time, lock_flag, quan, last_timestamp |
|
|
|
return True, ','.join(seat_list), ticket_cash, play_id, play_update_time, lock_flag, quan, last_timestamp |
|
|
|
else: |
|
|
|
else: |
|
|
|
pass |
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def general_seat_params_member(pay_type, data, card): |
|
|
|
|
|
|
|
""" |
|
|
|
|
|
|
|
seat_id-handle_fee-price-ticket_type-is_discount-settlement_price-service_fee 组成的字符串,多个值(多个seat)组用半角逗号分隔。 |
|
|
|
|
|
|
|
seat_id: 要购买的座位号 |
|
|
|
|
|
|
|
handle_fee:手续费,如果下单传入了退票订单号,会将handle_fee字段视为改签手续费 |
|
|
|
|
|
|
|
price:(不包含手续费)会员卡支付金额,该字段值是否包含影厅座位服务费取决于字段is_split_service_fee |
|
|
|
|
|
|
|
ticket_type: 影票类型(《会员卡详细信息》接口的业务响应参数desc的值) |
|
|
|
|
|
|
|
is_discount: 0:普通票,1:会员票,2:全局会员票 |
|
|
|
|
|
|
|
settlement_price:座位结算价,用于计算座位补贴(补贴=结算价-支付价),该值不能低于场次最低票价。(只有当参数is_cinema_price=2时,该值才有效,平台请求影院购票接口时会将计算出的补贴金额传给影院,补贴金额会计入影城报表。 |
|
|
|
|
|
|
|
注:该字段值是否包含影厅座位服务费取决于字段is_split_service_fee) |
|
|
|
|
|
|
|
service_fee:影厅座位服务费(只有当参数is_cinema_price=2时,该值才有效) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
返回 结果, seat, play_id, play_update_time, lock_flag, seat_coupons, is_cinema_price, is_split_service_fee, cash_pay, timestamp |
|
|
|
|
|
|
|
""" |
|
|
|
|
|
|
|
# 获取卡类型 |
|
|
|
|
|
|
|
card_type = get_card_type(data["env"], data["pid"], data["cid"], card) |
|
|
|
|
|
|
|
if card_type is False: |
|
|
|
|
|
|
|
return_str = '此会员卡在该影院无法使用,请使用3.1.3 查询会员卡的详细信息接口查看卡信息' |
|
|
|
|
|
|
|
return False, return_str, return_str, return_str, return_str, return_str, '2', 'Y', None, int(time.time() * 1000) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 获取其他参数 |
|
|
|
|
|
|
|
redis_key_prefix = f'dspt_api_{data["ip"]}_{data["env"]}_{data["member_type"]}_{data["pid"]}_{data["cid"]}' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
seat_list = [] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# seat_id |
|
|
|
|
|
|
|
request_api_seat = {'name': '3.2.6 获取某场次座位状态', 'path': 'play/seat-status'} |
|
|
|
|
|
|
|
redis_key_api_seat = f'{redis_key_prefix}_{request_api_seat["path"]}' |
|
|
|
|
|
|
|
result_seat, _format_seat, seat_data, _timestamp_seat = get_data_from_redis(redis_key_api_seat) |
|
|
|
|
|
|
|
if not result_seat: |
|
|
|
|
|
|
|
return False, None, None, None, None, None, None, None, None, None |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 获取play_id 和 play_update_time |
|
|
|
|
|
|
|
request_api_play = {'name': '3.2.3 获取放映计划列表', 'path': 'cinema/plays'} |
|
|
|
|
|
|
|
redis_key_api_play = f'{redis_key_prefix}_{request_api_play["path"]}' |
|
|
|
|
|
|
|
result_play, _format_play, seat_price_from_play, _timestamp_play = get_data_from_redis(redis_key_api_play) |
|
|
|
|
|
|
|
if not result_play: |
|
|
|
|
|
|
|
return False, None, None, None, None, None, None, None, None, None |
|
|
|
|
|
|
|
play_id = seat_price_from_play['id'] |
|
|
|
|
|
|
|
play_update_time = seat_price_from_play['cineUpdateTime'] |
|
|
|
|
|
|
|
lowest_price = f2(seat_price_from_play['lowestPrice']) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 获取 lock_flag |
|
|
|
|
|
|
|
request_api_lock = {'name': '3.4.3 座位锁定', 'path': 'seat/lock'} |
|
|
|
|
|
|
|
redis_key_api_lock = f'{redis_key_prefix}_{request_api_lock["path"]}' |
|
|
|
|
|
|
|
result_lock, _format_lock, seat_price_from_lock, _timestamp_lock = get_data_from_redis(redis_key_api_lock) |
|
|
|
|
|
|
|
if not result_lock: |
|
|
|
|
|
|
|
return False, None, None, None, None, None, None, None, None, None |
|
|
|
|
|
|
|
lock_flag = seat_price_from_lock['lockFlag'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# cinema_price |
|
|
|
|
|
|
|
request_api_seat = {'name': '3.4.4 锁定座位后获取票价', 'path': 'seat/price'} |
|
|
|
|
|
|
|
redis_key_api_seat = f'{redis_key_prefix}_{request_api_seat["path"]}' |
|
|
|
|
|
|
|
result_seat_price, _format_seat_price, seat_data_price, _timestamp_seat_price = get_data_from_redis( |
|
|
|
|
|
|
|
redis_key_api_seat) |
|
|
|
|
|
|
|
if not result_seat_price: |
|
|
|
|
|
|
|
return False, None, None, None, None, None, None, None, None, None |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# handle_fee |
|
|
|
|
|
|
|
request_api_config = {'name': '3.2.2 获取单个影院配置信息', 'path': 'cinema/config'} |
|
|
|
|
|
|
|
redis_key_api_config = f'{redis_key_prefix}_{request_api_config["path"]}' |
|
|
|
|
|
|
|
result_config, _format_config, seat_price_from_config, _timestamp_config = get_data_from_redis(redis_key_api_config) |
|
|
|
|
|
|
|
if not result_config: |
|
|
|
|
|
|
|
return False, None, None, None, None, None, None, None, None, None |
|
|
|
|
|
|
|
handle_fee = f2(seat_price_from_config['handleFee']) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 计算最大时间戳 |
|
|
|
|
|
|
|
last_timestamp = max([_timestamp_seat, _timestamp_play, _timestamp_config, _timestamp_lock, _timestamp_seat_price]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 判断获取到了全部接口数据,就继续,否则报错 |
|
|
|
|
|
|
|
if not (result_seat and result_play and result_lock and result_seat_price and result_config): |
|
|
|
|
|
|
|
return_str = '请手动输入参数,检查相关接口返回值:3.2.6 获取某场次座位状态、3.2.3 获取放映计划列表、3.4.3 座位锁定、3.4.4 锁定座位后获取票价、3.2.2 获取单个影院配置信息' |
|
|
|
|
|
|
|
return False, return_str, return_str, return_str, return_str, return_str, '1', None, None, last_timestamp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 处理影院定价逻辑 |
|
|
|
|
|
|
|
if pay_type['select_price_type'] == 'cinema_price': |
|
|
|
|
|
|
|
# 11682-1-27.7-会员票-1 |
|
|
|
|
|
|
|
is_cinema_price = '1' |
|
|
|
|
|
|
|
is_split_service_fee = None |
|
|
|
|
|
|
|
seat_coupons = None |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 计算影票价 |
|
|
|
|
|
|
|
ticket_price = f2(f2(seat_data_price['totalPrice']) / int(seat_data_price['ticketNum'])) |
|
|
|
|
|
|
|
ticket_service = f2(f2(seat_data_price['totalServiceCharge']) / int(seat_data_price['ticketNum'])) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cash_pay = 0 # 计算需要非卡余额支付的金额 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 生成座位字段 |
|
|
|
|
|
|
|
for seat in seat_data: |
|
|
|
|
|
|
|
seat_list.append(f"{seat['cineSeatId']}-{str(handle_fee)}-{str(ticket_price)}-会员票-1") |
|
|
|
|
|
|
|
if card_type == '权益卡(积分卡)': |
|
|
|
|
|
|
|
cash_pay += f2(ticket_price + handle_fee) |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
cash_pay += 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return True, ','.join( |
|
|
|
|
|
|
|
seat_list), play_id, play_update_time, lock_flag, seat_coupons, is_cinema_price, is_split_service_fee, str(cash_pay), last_timestamp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 处理三方定价的逻辑 |
|
|
|
|
|
|
|
if pay_type['select_price_type'] == 'third_price': |
|
|
|
|
|
|
|
# 11664-1-16.5-会员票-1-26.5-1.5 |
|
|
|
|
|
|
|
is_cinema_price = '2' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 处理is_split_service_fee字段 |
|
|
|
|
|
|
|
if pay_type['ticket_info']['have_service_fee'] is True: |
|
|
|
|
|
|
|
is_split_service_fee = 'Y' |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
is_split_service_fee = 'N' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 生成券字段 |
|
|
|
|
|
|
|
# 11663-Rog自营兑换券10元@@6777bbcfhirW6VAqkHItn3PZ@@10.00@@0 |
|
|
|
|
|
|
|
quan_list = [] |
|
|
|
|
|
|
|
quan_price_list = [] |
|
|
|
|
|
|
|
quan_price_num = [] |
|
|
|
|
|
|
|
seat_id_quan_list = [] |
|
|
|
|
|
|
|
if pay_type['ticket_quan_check']: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
quan_per_ticket = int(int(pay_type['ticket_quan']['ticket_quan_num'])/len(seat_data)) # 每张票平均分配的券数量 |
|
|
|
|
|
|
|
quan_price_num = [quan_per_ticket] * len(seat_data) # 每张票平均分配的券数量列表 |
|
|
|
|
|
|
|
# 多余的券添加到每张票上 |
|
|
|
|
|
|
|
for i in range(int(pay_type['ticket_quan']['ticket_quan_num'])%len(seat_data)): |
|
|
|
|
|
|
|
quan_price_num[i] += 1 |
|
|
|
|
|
|
|
print('quan_price_num', quan_price_num) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 遍历座位券列表,获取座位id,并写入列表 |
|
|
|
|
|
|
|
for index, num in enumerate(quan_price_num): |
|
|
|
|
|
|
|
for i in range(num): |
|
|
|
|
|
|
|
seat_id_quan_list.append(seat_data[index]['cineSeatId']) |
|
|
|
|
|
|
|
print('seat_id_quan_list', seat_id_quan_list) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 生成券字段列表 |
|
|
|
|
|
|
|
quan_price = f2(pay_type['ticket_quan']['ticket_quan_value']) |
|
|
|
|
|
|
|
quan_num = int(pay_type['ticket_quan']['ticket_quan_num']) |
|
|
|
|
|
|
|
for i in range(quan_num): |
|
|
|
|
|
|
|
seat_id = seat_id_quan_list[i] |
|
|
|
|
|
|
|
quan_list.append(f"{seat_id}-Rog接口测试券{str(quan_price)}@@rog{str(time.time_ns())}{seat_id}@@{str(quan_price)}@@0") |
|
|
|
|
|
|
|
quan_price_list.append(quan_price) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
seat_coupons = ','.join(quan_list) if len(quan_list) > 0 else None # 生成券字段 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ticket_price = f2(pay_type['ticket_info']['ticket_price']) |
|
|
|
|
|
|
|
ticket_service = f2(f2(seat_data_price['totalServiceCharge']) / int(seat_data_price['ticketNum'])) |
|
|
|
|
|
|
|
ticket_price_service = f2(ticket_price + ticket_service) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cash_pay = 0 |
|
|
|
|
|
|
|
for i, seat in enumerate(seat_data): |
|
|
|
|
|
|
|
if i+1 <= len(quan_price_list): |
|
|
|
|
|
|
|
real_pay_tmp = f2(ticket_price_service - (quan_price_list[i] * quan_price_num[i])) # 实付票价减去券核销的价格 |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
real_pay_tmp = ticket_price_service # 无券核销的实付价格 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if is_split_service_fee == 'N': |
|
|
|
|
|
|
|
real_pay_tmp -= ticket_service # 如果不包含服务费,则要从实付价格中减去服务费 |
|
|
|
|
|
|
|
real_pay = real_pay_tmp if real_pay_tmp > 0 else 0 # 因为使用了券,实付价格可能低于0,需要修正到0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if card_type == '权益卡(积分卡)': |
|
|
|
|
|
|
|
cash_pay += f2(real_pay + handle_fee) # 当使用权益卡支付时,需要将实付票价累加到现金支付字段中 |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
cash_pay += 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ticket_price >= lowest_price: |
|
|
|
|
|
|
|
real_ticket_price = ticket_price_service # 计算应付票价,如果用户设定的票价低于最低票价,则按照最低票价计算,否则按照用户定义价计算 |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
real_ticket_price = f2(lowest_price + ticket_service) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if is_split_service_fee == 'N': |
|
|
|
|
|
|
|
real_ticket_price -= ticket_service # 如果不包含服务费,则要减去服务费 |
|
|
|
|
|
|
|
if card_type == '权益卡(积分卡)': |
|
|
|
|
|
|
|
cash_pay += ticket_service # 如果是权益卡则单独累加服务费 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
seat_list.append( |
|
|
|
|
|
|
|
f"{seat['cineSeatId']}-{str(handle_fee)}-{str(real_pay)}-会员票-1-{str(real_ticket_price)}-{str(ticket_service)}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return True, ','.join( |
|
|
|
|
|
|
|
seat_list), play_id, play_update_time, lock_flag, seat_coupons, is_cinema_price, is_split_service_fee, str(cash_pay), last_timestamp |