parent
2de20ab892
commit
6608249bc2
13 changed files with 885 additions and 28 deletions
@ -0,0 +1,55 @@ |
||||
from django_redis import get_redis_connection |
||||
from dspt_api.models import EcChannel, EcEnv |
||||
from django.db.models import Q |
||||
from dspt_api.util.general.sign import Sign |
||||
import requests |
||||
|
||||
|
||||
def get_card(ip, env, pid, cid): |
||||
redis_con = get_redis_connection() |
||||
redis_key = f"card_{ip}_{env}_{pid}_{cid}" |
||||
print('get_card-card_num', redis_key) |
||||
if redis_con.exists(redis_key): |
||||
card_num = redis_con.get(redis_key) |
||||
print('get_card-card_num', card_num) |
||||
return str(card_num, encoding='utf-8') |
||||
return False |
||||
|
||||
|
||||
def set_card(ip, env, pid, cid, card): |
||||
redis_con = get_redis_connection() |
||||
redis_key = f"card_{ip}_{env}_{pid}_{cid}" |
||||
if redis_con.exists(redis_key): |
||||
redis_con.delete(redis_key) |
||||
return redis_con.set(redis_key, card) |
||||
|
||||
|
||||
def get_card_type(env, pid, cid, card): |
||||
params = { |
||||
'format': 'json', |
||||
'pid': pid, |
||||
'cid': cid, |
||||
'card': card, |
||||
} |
||||
|
||||
try: |
||||
base_url = EcEnv.objects.filter(Q(code=env) & Q(type='member')).values('host').first()['host'] |
||||
except Exception as e: |
||||
return False, e |
||||
|
||||
request_url = f"{base_url}/card/detail" |
||||
|
||||
try: |
||||
key = EcChannel.objects.filter(Q(pid=pid) & Q(env=env)).values('channel_key').first()['channel_key'] |
||||
except Exception as e: |
||||
return False, e |
||||
|
||||
sign = Sign(key) |
||||
req_params = sign.add_sig(params) |
||||
|
||||
response = requests.get(request_url, params=req_params) |
||||
|
||||
if response.json()['res']['status'] != 1: |
||||
return False |
||||
else: |
||||
return response.json()['res']['data']['cardType'] |
@ -0,0 +1,51 @@ |
||||
import json |
||||
|
||||
from dspt_api.util.general.handle_redis import get_data_from_redis |
||||
from dspt_api.util.general.handle_params import add_param |
||||
from dspt_api.util.general.handle_card import get_card |
||||
from dspt_api.util.general.handle_goods import general_goods_field_member, change_goods_price_str |
||||
import time |
||||
|
||||
|
||||
class MapiCardGetGoodsPrice: |
||||
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.user_data = { |
||||
'ip': self.ip, |
||||
'env': self.env, |
||||
'member_type': self.member_type, |
||||
'pid': self.pid, |
||||
'cid': self.cid, |
||||
} |
||||
self.return_data = [] |
||||
|
||||
def get_suggestion(self): |
||||
# play_id play_update_time |
||||
print('get_suggestion', self.user_data) |
||||
self.handle() |
||||
return self.return_data |
||||
|
||||
def get_timestamp(self): |
||||
return self.handle() |
||||
|
||||
def handle(self): |
||||
# 获取会员卡号 |
||||
card_num = get_card(self.ip, self.env, self.pid, self.cid) |
||||
if card_num is False: |
||||
add_param(self.return_data, 'card', '请手动输入会员卡号', timestamp=int(time.time() * 1000)) |
||||
else: |
||||
add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) |
||||
redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' |
||||
request_api_play_seat_status = {'name': '3.3.1 获取卖品列表', 'path': 'cinema/goods'} |
||||
redis_key_api_play_seat_status = f'{redis_key_prefix}_{request_api_play_seat_status["path"]}' |
||||
result, _format, _goods_data, _timestamp = get_data_from_redis(redis_key_api_play_seat_status) |
||||
goods_field_list, total_goods_val = general_goods_field_member(_goods_data, self.user_data) |
||||
if not result: |
||||
add_param(self.return_data,'goods', '请手动输入参数,或先请求接口:3.3.1 获取卖品列表') |
||||
add_param(self.return_data,'goods', json.dumps(change_goods_price_str(goods_field_list))) |
||||
return _timestamp if result else 0 |
@ -0,0 +1,79 @@ |
||||
import json |
||||
from dspt_api.util.general.handle_redis import get_data_from_redis |
||||
from dspt_api.util.general.handle_seat import general_seat_params_member |
||||
from dspt_api.util.general.get_order_num import general_order_num |
||||
from dspt_api.util.general.handle_goods import general_goods_params_member |
||||
from dspt_api.util.general.handle_card import get_card |
||||
from dspt_api.util.general.handle_params import add_param |
||||
import time |
||||
import random |
||||
|
||||
|
||||
class MapiOrderBuyGoods: |
||||
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, |
||||
'sale_type': self.sale_type, |
||||
'pay_type': self.pay_type, |
||||
} |
||||
self.return_data = [] |
||||
|
||||
def get_suggestion(self): |
||||
print('get_suggestion', self.user_data, self.sale_type, self.pay_type) |
||||
# 获取会员卡号 |
||||
card_num = get_card(self.ip, self.env, self.pid, self.cid) |
||||
if card_num is False: |
||||
add_param(self.return_data, 'card', '请手动输入会员卡号', timestamp=int(time.time() * 1000)) |
||||
else: |
||||
add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) |
||||
# 通用字段 |
||||
add_param(self.return_data, 'mobile', '18688886666', timestamp=1000000000000) |
||||
_partner_buy_ticket_id = general_order_num('BUY_T', self.api, self.member_type, self.ip, self.env, self.pid, |
||||
self.cid) |
||||
add_param(self.return_data, 'partner_buy_ticket_id', _partner_buy_ticket_id) |
||||
|
||||
self.handle(card_num) |
||||
print(__name__, self.return_data) |
||||
return self.return_data |
||||
|
||||
@staticmethod |
||||
def get_timestamp(): |
||||
return int(time.time() * 1000) |
||||
|
||||
def handle(self, card_num): |
||||
_third_pay = 0 |
||||
if self.sale_type == 'goods': |
||||
delivery_appoint_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time() + 5 * 60)) |
||||
_good_result, _goods_field, _goods_card_balance_pay, _goods_cash, _third_pay, _goods_timestamp = general_goods_params_member( |
||||
self.user_data, self.pay_type, card_num, _third_pay) |
||||
print('general_goods_params_member', _good_result, _goods_field, _goods_card_balance_pay, _goods_cash, |
||||
_third_pay, _goods_timestamp) |
||||
if _good_result is False: |
||||
add_param(self.return_data, 'goods', '请手动输入参数,或先请求接口:3.3.1 获取卖品列表', |
||||
timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'goods_card_balance_pay', '请手动输入参数,或先请求接口:3.3.1 获取卖品列表', |
||||
timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'goods_cash', '请手动输入参数,或先请求接口:3.3.1 获取卖品列表', |
||||
timestamp=_goods_timestamp) |
||||
return False |
||||
add_param(self.return_data, 'goods', json.dumps(_goods_field), timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'goods_card_balance_pay', _goods_card_balance_pay, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'goods_cash', _goods_cash, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'delivery_type', '2', is_checked=True, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'delivery_location', '1号厅', is_checked=True, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'delivery_appoint_time', delivery_appoint_time, is_checked=True, |
||||
timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'contact_number', '18688886666', is_checked=True, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 't3d_pay_amount', _third_pay, timestamp=_goods_timestamp) |
@ -0,0 +1,55 @@ |
||||
from dspt_api.util.general.handle_redis import get_data_from_redis |
||||
from dspt_api.util.general.handle_params import add_param |
||||
import random |
||||
|
||||
|
||||
class MapiSeatLock: |
||||
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.user_data = { |
||||
'ip': self.ip, |
||||
'env': self.env, |
||||
'member_type': self.member_type, |
||||
'pid': self.pid, |
||||
'cid': self.cid, |
||||
} |
||||
self.return_data = [] |
||||
|
||||
def get_suggestion(self): |
||||
print('get_suggestion', self.user_data) |
||||
self.handle() |
||||
return self.return_data |
||||
|
||||
def get_timestamp(self): |
||||
return self.handle() |
||||
|
||||
def handle(self): |
||||
redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' |
||||
# play_id |
||||
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, play_data, _timestamp_play = get_data_from_redis(redis_key_api_play) |
||||
if not result_play: |
||||
add_param(self.return_data, 'play_id', '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表') |
||||
add_param(self.return_data, 'play_update_time', '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表') |
||||
else: |
||||
add_param(self.return_data, 'play_id', play_data['id']) |
||||
add_param(self.return_data, 'play_update_time', play_data['cineUpdateTime']) |
||||
# seat_id |
||||
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_data, _timestamp_seat = get_data_from_redis(redis_key_api_seat) |
||||
if not result_seat: |
||||
add_param(self.return_data, 'seat_id', '请手动输入参数,或先请求接口:3.2.6 获取场次座位状态') |
||||
else: |
||||
seat_id = ','.join([seat['cineSeatId'] for seat in seat_data]) |
||||
add_param(self.return_data, 'seat_id', seat_id) |
||||
# 处理混合结果 |
||||
if result_play and result_seat: |
||||
return _timestamp_play if _timestamp_play > _timestamp_seat else _timestamp_seat |
||||
return 0 |
@ -0,0 +1,117 @@ |
||||
import json |
||||
from dspt_api.util.general.handle_redis import get_data_from_redis |
||||
from dspt_api.util.general.handle_seat import general_seat_params_member |
||||
from dspt_api.util.general.get_order_num import general_order_num |
||||
from dspt_api.util.general.handle_goods import general_goods_params_member |
||||
from dspt_api.util.general.handle_card import get_card |
||||
from dspt_api.util.general.handle_params import add_param |
||||
import time |
||||
import random |
||||
|
||||
|
||||
class MapiSeatLockBuy: |
||||
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, |
||||
'sale_type': self.sale_type, |
||||
'pay_type': self.pay_type, |
||||
} |
||||
self.return_data = [] |
||||
|
||||
def get_suggestion(self): |
||||
print('get_suggestion', self.user_data, self.sale_type, self.pay_type) |
||||
# 获取会员卡号 |
||||
card_num = get_card(self.ip, self.env, self.pid, self.cid) |
||||
if card_num is False: |
||||
add_param(self.return_data, 'card', '请手动输入会员卡号', timestamp=int(time.time() * 1000)) |
||||
else: |
||||
add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) |
||||
# 通用字段 |
||||
add_param(self.return_data, 'mobile', '18688886666', timestamp=1000000000000) |
||||
_partner_buy_ticket_id = general_order_num('BUY_T', self.api, self.member_type, self.ip, self.env, self.pid, |
||||
self.cid) |
||||
add_param(self.return_data, 'partner_buy_ticket_id', _partner_buy_ticket_id) |
||||
|
||||
self.handle(card_num) |
||||
print('ApiSeatLockBuy-get_suggestion', self.return_data) |
||||
return self.return_data |
||||
|
||||
@staticmethod |
||||
def get_timestamp(): |
||||
return int(time.time() * 1000) |
||||
|
||||
def handle(self, card_num): |
||||
# 处理影票部分 |
||||
_ticket_result, _seat, _play_id, _play_update_time, _lock_flag, _seat_coupons, _is_cinema_price, _is_split_service_fee, _third_pay, _ticket_timestamp = general_seat_params_member( |
||||
self.pay_type, self.user_data, card_num) |
||||
print('general_seat_params', _ticket_result, _seat, _play_id, _play_update_time, _lock_flag, _seat_coupons, |
||||
_is_cinema_price, _is_split_service_fee, _third_pay, _ticket_timestamp) |
||||
if _ticket_result is False: |
||||
add_param(self.return_data, 'play_id', '请手动输入参数,或先请求接口:3.1.5 获取放映计划列表', |
||||
timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'seat', '请手动输入参数,或先请求接口:3.1.8 获取某场次座位状态', |
||||
timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'lock_flag', '请手动输入参数,或先请求接口:3.3.1 座位锁定', |
||||
timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'play_update_time', '请手动输入参数,或先请求接口:3.1.5 获取放映计划列表', |
||||
timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'seat_coupons', '请手动输入参数,或请求其他前置接口返回结果!', |
||||
timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'is_cinema_price', '请手动输入参数,或请求其他前置接口返回结果!', |
||||
timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'is_split_service_fee', '请手动输入参数,或请求其他前置接口返回结果!', |
||||
timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 't3d_pay_amount', '请手动输入参数,或请求其他前置接口返回结果!', |
||||
timestamp=_ticket_timestamp) |
||||
return False |
||||
add_param(self.return_data, 'play_id', _play_id, timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'seat', _seat, timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'lock_flag', _lock_flag, timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'play_update_time', _play_update_time, timestamp=_ticket_timestamp) |
||||
add_param(self.return_data, 'is_cinema_price', _is_cinema_price, timestamp=_ticket_timestamp) |
||||
if _is_split_service_fee is not None: |
||||
add_param(self.return_data, 'is_split_service_fee', _is_split_service_fee, timestamp=_ticket_timestamp) |
||||
else: |
||||
add_param(self.return_data, 'is_split_service_fee', '', False, True, timestamp=_ticket_timestamp) |
||||
if _seat_coupons is not None: |
||||
add_param(self.return_data, 'seat_coupons', _seat_coupons, timestamp=_ticket_timestamp) |
||||
else: |
||||
add_param(self.return_data, 'seat_coupons', '', False, True, timestamp=_ticket_timestamp) |
||||
|
||||
# 处理卖品部分 |
||||
if self.sale_type == 'all': |
||||
delivery_appoint_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time() + 5 * 60)) |
||||
_good_result, _goods_field, _goods_card_balance_pay, _goods_cash, _third_pay, _goods_timestamp = general_goods_params_member( |
||||
self.user_data, self.pay_type, card_num, _third_pay) |
||||
print('general_goods_params_member', _good_result, _goods_field, _goods_card_balance_pay, _goods_cash, |
||||
_third_pay, _goods_timestamp) |
||||
if _good_result is False: |
||||
add_param(self.return_data, 'goods', '请手动输入参数,或先请求接口:3.3.1 获取卖品列表', |
||||
timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'goods_card_balance_pay', '请手动输入参数,或先请求接口:3.3.1 获取卖品列表', |
||||
timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'goods_cash', '请手动输入参数,或先请求接口:3.3.1 获取卖品列表', |
||||
timestamp=_goods_timestamp) |
||||
return False |
||||
add_param(self.return_data, 'goods', json.dumps(_goods_field), timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'goods_card_balance_pay', _goods_card_balance_pay, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'goods_cash', _goods_cash, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'delivery_type', '2', is_checked=True, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'delivery_location', '1号厅', is_checked=True, timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'delivery_appoint_time', delivery_appoint_time, is_checked=True, |
||||
timestamp=_goods_timestamp) |
||||
add_param(self.return_data, 'contact_number', '18688886666', is_checked=True, timestamp=_goods_timestamp) |
||||
|
||||
add_param(self.return_data, 't3d_pay_amount', _third_pay, timestamp=_ticket_timestamp) |
@ -0,0 +1,49 @@ |
||||
from dspt_api.util.general.handle_redis import get_data_from_redis |
||||
from dspt_api.util.general.handle_params import add_param |
||||
from dspt_api.util.general.handle_card import get_card |
||||
|
||||
|
||||
class MapiSeatPrice: |
||||
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.user_data = { |
||||
'ip': self.ip, |
||||
'env': self.env, |
||||
'member_type': self.member_type, |
||||
'pid': self.pid, |
||||
'cid': self.cid, |
||||
} |
||||
self.return_data = [] |
||||
|
||||
def get_suggestion(self): |
||||
print('get_suggestion', self.user_data) |
||||
self.handle() |
||||
return self.return_data |
||||
|
||||
def get_timestamp(self): |
||||
return self.handle() |
||||
|
||||
def handle(self): |
||||
# card |
||||
card = get_card(self.ip, self.env, self.pid, self.cid) |
||||
if not card: |
||||
add_param(self.return_data, 'card', '请手动输入参数') |
||||
add_param(self.return_data, 'card', card) |
||||
|
||||
redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' |
||||
# lock_code |
||||
request_api_seat_lock = {'name': '3.4.3 座位锁定', 'path': 'seat/lock'} |
||||
redis_key_api_seat_lock = f'{redis_key_prefix}_{request_api_seat_lock["path"]}' |
||||
result_seat_lock, _format_seat_lock, seat_lock_data, _timestamp_seat_lock = get_data_from_redis( |
||||
redis_key_api_seat_lock) |
||||
if not result_seat_lock: |
||||
add_param(self.return_data, 'lock_flag', '请手动输入参数,或先请求接口:3.4.3 座位锁定') |
||||
else: |
||||
add_param(self.return_data, 'lock_flag', seat_lock_data['lockFlag']) |
||||
# 处理混合结果 |
||||
return _timestamp_seat_lock if result_seat_lock else 0 |
Loading…
Reference in new issue