购票部分先提交一版

main
RogerWork 4 months ago
parent c1cfc46a8b
commit b786e0ddc1
  1. 7
      dspt_api/util/api/cinema_hall_seats.py
  2. 7
      dspt_api/util/api/ecard_regist.py
  3. 7
      dspt_api/util/api/order_buy_goods.py
  4. 5
      dspt_api/util/api/play_info.py
  5. 7
      dspt_api/util/api/play_period_changed_seats.py
  6. 5
      dspt_api/util/api/play_seat_overview.py
  7. 7
      dspt_api/util/api/play_seat_status.py
  8. 5
      dspt_api/util/api/seat_check_coupon.py
  9. 13
      dspt_api/util/api/seat_lock.py
  10. 54
      dspt_api/util/api/seat_lock_buy.py
  11. 11
      dspt_api/util/general/handle_redis.py
  12. 121
      dspt_api/util/general/handle_seat.py
  13. 4
      dspt_api/util/general/random_params.py
  14. 20
      dspt_api/util/general/suggest_params.py
  15. 21
      dspt_api/views.py
  16. 8785
      logs/dingxin.log

@ -15,20 +15,19 @@ class ApiCinemaHallSeats:
# hall_id
request_api = {'name': '3.1.3 获取影厅列表', 'path': 'cinema/halls'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, hall_data, _timestamp = get_data_from_redis(redis_key_api)
if result:
hall_data = random.choice(redis_data)
hall_id = hall_data['id']
return [{'param': 'hall_id', 'value': hall_id, 'is_checked': True, 'result': True, 'timestamp': _timestamp}]
else:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
return [
{'param': 'hall_id', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': False,
{'param': 'hall_id', 'value': hall_data + request_api["name"], 'is_checked': True, 'result': False,
'timestamp': _timestamp}]
def get_timestamp(self):
# hall_id
request_api = {'name': '3.1.3 获取影厅列表', 'path': 'cinema/halls'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, hall_data, _timestamp = get_data_from_redis(redis_key_api)
return _timestamp if result else 0

@ -16,9 +16,8 @@ class ApiEcardRegist:
def get_suggestion(self):
request_api = {'name': '3.4.1 获取联名卡等级', 'path': 'ecard/ecard-levels'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, level_data, _timestamp = get_data_from_redis(redis_key_api)
if result:
level_data = random.choice(redis_data)
level_no = level_data['ecardLevelNo']
fee = level_data['registerFee']
order_num = general_order_num('REG', self.api, self.member_type, self.ip, self.env, self.pid, self.cid)
@ -33,9 +32,9 @@ class ApiEcardRegist:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
return [
{'param': 'mobile', 'value': 18688886666, 'is_checked': True, 'result': True, 'timestamp': _timestamp},
{'param': 'register_fee', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': True,
{'param': 'register_fee', 'value': level_data + request_api["name"], 'is_checked': True, 'result': True,
'timestamp': _timestamp},
{'param': 'ecard_level_no', 'value': redis_data + request_api["name"], 'is_checked': True,
{'param': 'ecard_level_no', 'value': level_data + request_api["name"], 'is_checked': True,
'result': True,
'timestamp': _timestamp},
{'param': 'partner_order_no', 'value': '', 'is_checked': True, 'result': True,

@ -18,9 +18,8 @@ class ApiOrderBuyGoods:
def get_suggestion(self):
request_api = {'name': '3.2.1 获取卖品列表', 'path': 'cinema/goods'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, goods_data, _timestamp = get_data_from_redis(redis_key_api)
if result:
goods_data = random.choice(redis_data)
goods_info, cash = general_goods_param(goods_data)
print('ApiOrderBuyGoods', goods_info)
order_num = general_order_num('GS', self.api, self.member_type, self.ip, self.env, self.pid, self.cid)
@ -43,10 +42,10 @@ class ApiOrderBuyGoods:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
# redis_data + request_api["name"]
return [
{'param': 'partner_buy_ticket_id', 'value': redis_data + request_api["name"], 'is_checked': True,
{'param': 'partner_buy_ticket_id', 'value': goods_data + request_api["name"], 'is_checked': True,
'result': True,
'timestamp': _timestamp},
{'param': 'goods', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': True,
{'param': 'goods', 'value': goods_data + request_api["name"], 'is_checked': True, 'result': True,
'timestamp': _timestamp},
{'param': 'cash', 'value': '0', 'is_checked': True, 'result': True, 'timestamp': _timestamp},
{'param': 'mobile', 'value': '18688886666', 'is_checked': True, 'result': True,

@ -16,15 +16,14 @@ class ApiPlayInfo:
# play_id
request_api = {'name': '3.1.5 获取放映计划列表', 'path': 'cinema/plays'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, play_data, _timestamp = get_data_from_redis(redis_key_api)
if result:
play_data = random.choice(redis_data)
play_id = play_data['id']
return [{'param': 'play_id', 'value': play_id, 'is_checked': True, 'result': True, 'timestamp': _timestamp}]
else:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
return [
{'param': 'play_id', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': True,
{'param': 'play_id', 'value': play_data + request_api["name"], 'is_checked': True, 'result': True,
'timestamp': _timestamp}]
def get_timestamp(self):

@ -16,9 +16,8 @@ class ApiPlayPeriodChangedSeats:
# play_id play_update_time
request_api = {'name': '3.1.5 获取放映计划列表', 'path': 'cinema/plays'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, play_data, _timestamp = get_data_from_redis(redis_key_api)
if result:
play_data = random.choice(redis_data)
play_id = play_data['id']
start = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d') + ' 06:00:00'
return [{'param': 'play_id', 'value': play_id, 'is_checked': True, 'result': True, 'timestamp': _timestamp},
@ -26,9 +25,9 @@ class ApiPlayPeriodChangedSeats:
else:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
return [
{'param': 'play_id', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': True,
{'param': 'play_id', 'value': play_data + request_api["name"], 'is_checked': True, 'result': True,
'timestamp': _timestamp},
{'param': 'start', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': True,
{'param': 'start', 'value': play_data + request_api["name"], 'is_checked': True, 'result': True,
'timestamp': _timestamp}]
def get_timestamp(self):

@ -15,15 +15,14 @@ class ApiPlaySeatOverview:
# play_id play_update_time
request_api = {'name': '3.1.5 获取放映计划列表', 'path': 'cinema/plays'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, play_data, _timestamp = get_data_from_redis(redis_key_api)
if result:
play_data = random.choice(redis_data)
play_id = play_data['id']
return [{'param': 'play_id', 'value': play_id, 'is_checked': True, 'timestamp': _timestamp}]
else:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
return [
{'param': 'play_id', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': True,
{'param': 'play_id', 'value': play_data + request_api["name"], 'is_checked': True, 'result': True,
'timestamp': _timestamp}]
def get_timestamp(self):

@ -15,9 +15,8 @@ class ApiPlaySeatStatus:
# play_id play_update_time
request_api = {'name': '3.1.5 获取放映计划列表', 'path': 'cinema/plays'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, play_data, _timestamp = get_data_from_redis(redis_key_api)
if result:
play_data = random.choice(redis_data)
play_id = play_data['id']
play_update_time = play_data['cineUpdateTime']
return [{'param': 'play_id', 'value': play_id, 'is_checked': True, 'result': True, 'timestamp': _timestamp},
@ -26,9 +25,9 @@ class ApiPlaySeatStatus:
else:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
return [
{'param': 'play_id', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': True,
{'param': 'play_id', 'value': play_data + request_api["name"], 'is_checked': True, 'result': True,
'timestamp': _timestamp},
{'param': 'play_update_time', 'value': redis_data + request_api["name"], 'is_checked': True,
{'param': 'play_update_time', 'value': play_data + request_api["name"], 'is_checked': True,
'result': True, 'timestamp': _timestamp}]
def get_timestamp(self):

@ -48,9 +48,8 @@ class ApiSeatCheckCoupon:
def get_goods(self):
request_api = {'name': '3.2.1 获取卖品列表', 'path': 'cinema/goods'}
redis_key_api = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api["path"]}'
result, _format, redis_data, _timestamp = get_data_from_redis(redis_key_api)
result, _format, goods_data, _timestamp = get_data_from_redis(redis_key_api)
if result:
goods_data = random.choice(redis_data)
goods_info, cash = general_goods_param(goods_data)
print('ApiSeatCheckCoupon', goods_info)
coupon_goods = [self.format_goods(goods) for goods in goods_info]
@ -61,7 +60,7 @@ class ApiSeatCheckCoupon:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
# redis_data + request_api["name"]
return [
{'param': 'goods', 'value': redis_data + request_api["name"], 'is_checked': True, 'result': True,
{'param': 'goods', 'value': goods_data + request_api["name"], 'is_checked': True, 'result': True,
'timestamp': _timestamp}, ]
@staticmethod

@ -15,14 +15,13 @@ class ApiSeatLock:
# play_id
request_api_play = {'name': '3.1.5 获取放映计划列表', 'path': 'cinema/plays'}
redis_key_api_play = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api_play["path"]}'
result_play, _format_play, redis_data_play, _timestamp_play = get_data_from_redis(redis_key_api_play)
result_play, _format_play, play_data, _timestamp_play = get_data_from_redis(redis_key_api_play)
# seat_id
request_api_seat = {'name': '3.1.8 获取某场次座位状态', 'path': 'play/seat-status'}
redis_key_api_seat = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}_{request_api_seat["path"]}'
result_seat, _format_seat, redis_data_seat, _timestamp_seat = get_data_from_redis(redis_key_api_seat)
result_seat, _format_seat, seat_data, _timestamp_seat = get_data_from_redis(redis_key_api_seat)
if result_play and result_seat:
play_data = random.choice(redis_data_play)
seat_data = random.choice(redis_data_seat)
print('random.choice(redis_data_seat)', seat_data)
seat_id = ','.join([seat['cineSeatId'] for seat in seat_data])
return [{'param': 'play_id', 'value': play_data['id'], 'is_checked': True, 'result': True},
{'param': 'play_update_time', 'value': play_data['cineUpdateTime'], 'is_checked': True,
@ -31,11 +30,11 @@ class ApiSeatLock:
else:
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
return [
{'param': 'play_id', 'value': redis_data_play + request_api_play["name"], 'is_checked': True,
{'param': 'play_id', 'value': play_data + request_api_play["name"], 'is_checked': True,
'result': True},
{'param': 'play_update_time', 'value': redis_data_play + request_api_play["name"], 'is_checked': True,
{'param': 'play_update_time', 'value': play_data + request_api_play["name"], 'is_checked': True,
'result': True},
{'param': 'seat_id', 'value': redis_data_seat + request_api_seat["name"], 'is_checked': True,
{'param': 'seat_id', 'value': seat_data + request_api_seat["name"], 'is_checked': True,
'result': True}
]

@ -0,0 +1,54 @@
from dspt_api.util.general.handle_redis import get_data_from_redis
from dspt_api.util.general.handle_seat import general_seat_params
from dspt_api.util.general.get_order_num import general_order_num
import random
class ApiSeatLockBuy:
def __init__(self, **kwargs):
self.member_type = kwargs.get('member_type')
self.api = kwargs.get('api')
self.ip = kwargs.get('ip')
self.env = kwargs.get('env')
self.cid = kwargs.get('cid')
self.pid = kwargs.get('pid')
self.sale_type = kwargs.get('sale_type')
self.pay_type = kwargs.get('pay_type')
self.user_data = {
'ip': self.ip,
'env': self.env,
'member_type': self.member_type,
'pid': self.pid,
'cid': self.cid,
}
def get_suggestion(self):
return_data = [{'param': 'mobile', 'value': '18688886666', 'is_checked': True, 'result': True}]
# _ticket_result, _goods_result = False, False
if self.sale_type in ['ticket', 'all']:
_ticket_result, _seat, _ticket_cash, _play_id, _play_update_time, _lock_flag, _ticket_timestamp = general_seat_params(
self.pay_type, self.user_data)
print('general_seat_params', _ticket_result, _seat, _ticket_cash, _play_id, _play_update_time, _lock_flag, _ticket_timestamp)
_partner_buy_ticket_id = general_order_num('BUY', self.api, self.member_type, self.ip, self.env, self.pid,
self.cid)
return_data.append({'param': 'play_id', 'value': _play_id, 'is_checked': True, 'result': True})
return_data.append({'param': 'seat', 'value': _seat, 'is_checked': True, 'result': True})
return_data.append({'param': 'lock_flag', 'value': _lock_flag, 'is_checked': True, 'result': True})
return_data.append(
{'param': 'play_update_time', 'value': _play_update_time, 'is_checked': True, 'result': True})
return_data.append(
{'param': 'partner_buy_ticket_id', 'value': _partner_buy_ticket_id, 'is_checked': True, 'result': True})
return_data.append({'param': 'cash', 'value': _ticket_cash, 'is_checked': True, 'result': True})
elif self.sale_type in ['goods', 'all']:
pass
else:
pass
return return_data
def get_timestamp(self):
_ticket_result, _seat, _ticket_cash, _play_id, _play_update_time, _lock_flag, _ticket_timestamp = general_seat_params(
self.pay_type, self.user_data)
return _ticket_timestamp

@ -1,5 +1,8 @@
from random import random
from django_redis import get_redis_connection
import json
import random
import xmltodict
@ -12,13 +15,13 @@ def get_data_from_redis(redis_key):
redis_data = json.loads(redis_conn.get(redis_key + '_user_data'))
user_data = redis_data['user_data']
print('user_data', json.dumps(user_data))
return True, redis_data['format'], user_data, redis_data['timestamp']
return True, redis_data['format'], user_data[0], redis_data['timestamp']
# 如果没用户数据时优先获取随机数据
if redis_conn.exists(redis_key + '_random'):
redis_data = json.loads(redis_conn.get(redis_key + '_random'))
user_data = redis_data['user_data']
print('user_data', json.dumps(user_data))
return True, redis_data['format'], user_data, redis_data['timestamp']
return True, redis_data['format'], user_data[0], redis_data['timestamp']
# 没有用户数据时,随机选择数据
if redis_conn.exists(redis_key):
redis_data = json.loads(redis_conn.get(redis_key))
@ -27,10 +30,10 @@ def get_data_from_redis(redis_key):
print('handled_data', json.dumps(redis_data['handled_data']))
resp_result = resp['res']['status']
if str(resp_result) == '1':
resp_data = resp['res']['data']
resp_data = resp['res']['data'] if isinstance(resp['res']['data'], list) else [resp['res']['data']]
if str(resp_result) != '1':
return False, redis_data['format'], '请检查接口返回值或手动输入参数:', 0
if len(resp_data) == 0:
return False, redis_data['format'], '接口返回数据为空,请手动输入参数:', 0
return True, redis_data['format'], resp_data, redis_data['timestamp']
return True, redis_data['format'], random.choice(resp_data), redis_data['timestamp']
return False, 'json', '请手动输入参数,或先请求接口:', 0

@ -0,0 +1,121 @@
"""
说明
支持现金联名卡支付电子券支付扫码券支付
现金支付时可以走电商渠道定价
联名卡支付时价格取联名卡的优惠价支付方式还是现金
电子券和扫码券都是走鼎新定价然后通过券接口获取价格剩余待支付的金额为现金支付
券只支持如下几种券
先从seat_lock接口获取座位价格
如果seat_lock没有获取到座位价格就到
返回 结果, seat , ticket_cash, play_id, play_update_time, lock_flag, timestamp
"""
import random
from decimal import Decimal, ROUND_HALF_UP
from dspt_api.util.general.handle_redis import get_data_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"]}'
# 获取 area_info和partner_price
request_api_lock = {'name': '3.3.1 座位锁定', '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)
area_info = seat_price_from_lock['areaInfo'] if len(seat_price_from_lock['areaInfo']) > 0 else False
lock_flag = seat_price_from_lock['lockFlag']
# partner_price = seat_price_from_lock['partnerPrice'] if seat_price_from_lock['partnerPrice'] is not None else False
# 获取market_price
request_api_play = {'name': '3.1.5 获取放映计划列表', '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)
market_price = seat_price_from_play['marketPrice']
play_id = seat_price_from_play['id']
play_update_time = seat_price_from_play['cineUpdateTime']
# 获取手续费
request_api_config = {'name': '3.1.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)
handle_fee = seat_price_from_config['handleFee']
partner_type = seat_price_from_config['partnerSubsidyType'] # 1:电商平台补贴;2:合作商补贴
# 获取座位信息
request_api_seat = {'name': '3.1.8 获取某场次座位状态', 'path': 'play/seat-status'}
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)
seat_id_list = [{'seat_id': seat['cineSeatId'], 'ticket_discount': seat['ticketDiscount'],
'service_discount': seat['serviceDiscount']} for seat in seat_price_from_seat]
# 计算最大时间戳
last_timestamp = max([_timestamp_lock, _timestamp_play, _timestamp_config, _timestamp_seat])
# 判断获取到了全部接口数据,就继续,否则报错
if not (result_lock and result_play and result_config and result_seat):
return_str = '请手动输入参数,检查相关接口返回值:3.3.1 座位锁定、3.1.5 获取放映计划列表、3.1.8 获取某场次座位状态、3.1.2 获取单个影院配置信息'
return False, return_str, 0, return_str, return_str, return_str, last_timestamp
if pay_type == 'cash':
"""
-- 当影院合作商是电商平台定价时partner_type = 1
price不包含手续费,含服务费
user_real_pay_price用户真实支付影票金额不含手续费服务费该字段只做记录不参与计算
service_fee影厅座位服务费仅当锁座接口返回的服务费[areaServiceFee]不为零时才传此参数
ticket_discount_price影票优惠金额; service_fee_discount_price服务费优惠金额
如果是鼎新电商平台对合作商价格管控使用以上两个优惠金额字段需要联系请联系鼎新杰盈公司商务打开开关即可使用否则直接回传会产生掉单
-- 当影院合作商是合作商自主定价时partner_type = 2
price真实的票价[不含服务费不含手续费]
user_real_pay_price用户真实支付影票金额[不含手续费服务费] 需要扣减 ticket_discount_price
service_fee真实的服务费 需要扣减 service_fee_discount_price
ticket_discount_price影票优惠金额仅做记录
service_fee_discount_price服务费优惠金额仅做记录
测试影院
测试影院3.166 乐影网 电商平台补贴 是否允许传递优惠金额 影票价格控制 卖品价格控制
测试影院3.166 淘票票 电商平台补贴 是否允许传递优惠金额 影票价格控制 卖品价格控制
测试影院3.166 美团猫眼 电商平台补贴 是否允许传递优惠金额 影票价格控制 卖品价格控制
测试影院3.166 合作商补贴 合作商补贴 是否允许传递优惠金额 影票价格控制 卖品价格控制
"""
seat_list = []
ticket_cash = 0
for seat_info in seat_id_list:
ticket_discount = seat_info["ticket_discount"]
service_discount = seat_info["service_discount"]
if area_info is not False:
for area_seat_info in area_info:
if area_seat_info['seatId'] == int(seat_info['seat_id']):
price = Decimal(area_seat_info["areaPrice"]).quantize(Decimal('0.00'), ROUND_HALF_UP)
# if partner_type == '2': # 合作商定价
# price -= Decimal(area_seat_info["areaServiceFee"]).quantize(Decimal('0.00'), ROUND_HALF_UP)
real_pay = Decimal(area_seat_info["areaPrice"]).quantize(Decimal('0.00'), ROUND_HALF_UP)
real_pay -= Decimal(area_seat_info["areaServiceFee"]).quantize(Decimal('0.00'), ROUND_HALF_UP)
if ticket_discount != 0:
real_pay -= Decimal(ticket_discount)
if service_discount != 0:
if partner_type == '2':
real_pay -= Decimal(service_discount)
seat = f'{seat_info["seat_id"]}-{handle_fee}-{str(price)}-{str(real_pay)}-{area_seat_info["areaServiceFee"]}{f"-{str(ticket_discount)}" if ticket_discount != 0 else ""}{f"-{str(service_discount)}" if service_discount != 0 else ""}'
seat_list.append(seat)
ticket_cash += real_pay
else:
real_pay = Decimal(market_price).quantize(Decimal('0.00'), ROUND_HALF_UP)
if ticket_discount != 0:
real_pay -= Decimal(ticket_discount)
if service_discount != 0:
real_pay -= Decimal(service_discount)
seat = f'{seat_info["seat_id"]}-{handle_fee}-{market_price}-{str(real_pay)}-0{f"-{str(ticket_discount)}" if ticket_discount != 0 else ""}{f"-{str(service_discount)}" if service_discount != 0 else ""}'
seat_list.append(seat)
ticket_cash += real_pay
return True, ','.join(seat_list), ticket_cash, play_id, play_update_time, lock_flag, last_timestamp
elif pay_type == 'ecard':
pass
elif pay_type == 'yushouquan':
pass
elif pay_type == 'equan':
pass
else:
pass

@ -20,7 +20,7 @@ def random_params(_user_info, _handle_data):
'format': _user_info["format"],
'timestamp': int(time.time() * 1000),
}
print('random_params_user_info["api"]', _user_info["api"] == 'ecard/ecard-levels')
print('random_params_user_info["api"]', _user_info["api"])
if _user_info["api"] == 'play/seat-status':
_user_data = get_ok_status_seat_list(_handle_data['res']['data'])
elif _user_info["api"] == 'ecard/ecard-levels':
@ -31,6 +31,8 @@ def random_params(_user_info, _handle_data):
_user_data = [random_goods(_handle_data['res']['data'])]
else:
_user_data = _handle_data['res']['data']
print('random_params', _user_data)
if len(_user_data) > 0:
print('random_params', _user_data)
if _user_info["api"] in ('play/seat-status', 'cinema/goods'):

@ -14,12 +14,13 @@ from dspt_api.util.api.ecard_detail import ApiEcardDetail
from dspt_api.util.api.ecard_order_detail import ApiEcardOrderDetail
from dspt_api.util.api.ecard_seat_price import ApiEcardSeatPrice
from dspt_api.util.api.seat_check_coupon import ApiSeatCheckCoupon
from dspt_api.util.api.seat_lock_buy import ApiSeatLockBuy
# 通过api来匹配不同的接口文件获取推荐
# 返回推荐参数应该包含参数名,参数值,和是否勾选的状态
def suggest_params(member_type, api, env, cid, pid, ip, **kwargs):
data = {'member_type': member_type, 'api': api, 'env': env, 'cid': cid, 'pid':pid, 'ip': ip}
print('suggest_params: ', data)
params = []
# 非会员
if api == 'cinema/hall-seats' and member_type == 'nonmember':
@ -72,6 +73,13 @@ def suggest_params(member_type, api, env, cid, pid, ip, **kwargs):
print("kwargs['sale_type']", kwargs['sale_type'])
data['sale_type'] = kwargs['sale_type']
params = ApiSeatCheckCoupon(**data).get_suggestion()
if api == 'seat/lock-buy' and member_type == 'nonmember':
print('seat/lock-buy')
print("kwargs['sale_type']", kwargs['sale_type'])
print("kwargs['pay_type']", kwargs['pay_type'])
data['sale_type'] = kwargs['sale_type']
data['pay_type'] = kwargs['pay_type']
params = ApiSeatLockBuy(**data).get_suggestion()
return params
def suggest_params_timestamp(member_type, api, env, cid, pid, ip, **kwargs):
@ -125,5 +133,15 @@ def suggest_params_timestamp(member_type, api, env, cid, pid, ip, **kwargs):
_timestamps = ApiEcardRefund(**data).get_timestamp()
if api == 'seat/check-coupon' and member_type == 'nonmember':
print('seat/check-coupon')
print("kwargs['sale_type']", kwargs['sale_type'])
data['sale_type'] = kwargs['sale_type']
_timestamps = ApiSeatCheckCoupon(**data).get_timestamp()
if api == 'seat/lock-buy' and member_type == 'nonmember':
print('seat/lock-buy')
print(kwargs)
print("kwargs['sale_type']", kwargs['sale_type'])
print("kwargs['pay_type']", kwargs['pay_type'])
data['sale_type'] = kwargs['sale_type']
data['pay_type'] = kwargs['pay_type']
_timestamps = ApiSeatLockBuy(**data).get_timestamp()
return _timestamps

@ -149,11 +149,12 @@ def get_suggest_params_by_api(request):
pid = request.GET.get('pid')
user_ip = request.META.get('REMOTE_ADDR')
sale_type = request.GET.get('options[sale_type]', None)
print('sale_type', sale_type)
if sale_type is None:
params = suggest_params(member_type, api, env, cid, pid, user_ip)
else:
params = suggest_params(member_type, api, env, cid, pid, user_ip, **{'sale_type': sale_type})
pay_type = request.GET.get('options[pay_type]', None)
params = suggest_params(member_type, api, env, cid, pid, user_ip, **{'sale_type': sale_type, 'pay_type': pay_type})
# if sale_type is None:
# params = suggest_params(member_type, api, env, cid, pid, user_ip)
# else:
# params = suggest_params(member_type, api, env, cid, pid, user_ip, **{'sale_type': sale_type, 'pay_type':pay_type})
return JsonResponse(params, safe=False)
@ -166,7 +167,10 @@ def get_suggest_params_timestamp_by_api(request):
cid = request.GET.get('cid')
pid = request.GET.get('pid')
user_ip = request.META.get('REMOTE_ADDR')
_ts = suggest_params_timestamp(member_type, api, env, cid, pid, user_ip)
sale_type = request.GET.get('options[sale_type]', None)
pay_type = request.GET.get('options[pay_type]', None)
_ts = suggest_params_timestamp(member_type, api, env, cid, pid, user_ip,
**{'sale_type': sale_type, 'pay_type': pay_type})
print('timestamp', _ts)
return JsonResponse({'timestamp': _ts})
@ -335,9 +339,12 @@ def clear_user_select_data(request):
api = req.get('api')
member_type = req.get('member_type')
user_ip = request.META.get('REMOTE_ADDR')
env = req.get('env')
pid = req.get('pid')
cid = req.get('cid')
# 初始化redis
redis_conn = get_redis_connection()
redis_key_user_data = f'dspt_api_{user_ip}_{member_type}_{api}_user_data'
redis_key_user_data = f'dspt_api_{user_ip}_{env}_{member_type}_{pid}_{cid}_{api}_user_data'
if redis_conn.exists(redis_key_user_data):
if redis_conn.delete(redis_key_user_data):
return JsonResponse({'result': 'success'})

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save