From 01ec30a4629d913c0221233fdd96cf2460e0751c Mon Sep 17 00:00:00 2001 From: RogerWork Date: Sun, 26 Jan 2025 15:03:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BC=9A=E5=91=98=E5=9C=BA?= =?UTF-8?q?=E6=AC=A1=E5=BA=A7=E4=BD=8D=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dspt_api/util/general/handle_time.py | 10 +++ dspt_api/util/general/suggest_params.py | 63 +++++++++++++++++++ dspt_api/util/mapi/card_jifen_query.py | 42 +++++++++++++ dspt_api/util/mapi/card_trade_query.py | 42 +++++++++++++ dspt_api/util/mapi/movie_info.py | 46 ++++++++++++++ dspt_api/util/mapi/order_detail.py | 50 +++++++++++++++ dspt_api/util/mapi/play_info.py | 47 ++++++++++++++ .../util/mapi/play_period_changed_seats.py | 49 +++++++++++++++ dspt_api/util/mapi/play_seat_overview.py | 5 ++ 9 files changed, 354 insertions(+) create mode 100644 dspt_api/util/general/handle_time.py create mode 100644 dspt_api/util/mapi/card_jifen_query.py create mode 100644 dspt_api/util/mapi/card_trade_query.py create mode 100644 dspt_api/util/mapi/movie_info.py create mode 100644 dspt_api/util/mapi/order_detail.py create mode 100644 dspt_api/util/mapi/play_info.py create mode 100644 dspt_api/util/mapi/play_period_changed_seats.py create mode 100644 dspt_api/util/mapi/play_seat_overview.py diff --git a/dspt_api/util/general/handle_time.py b/dspt_api/util/general/handle_time.py new file mode 100644 index 0000000..a637834 --- /dev/null +++ b/dspt_api/util/general/handle_time.py @@ -0,0 +1,10 @@ +import datetime + + +def get_stime_etime(_type='date', today=True): + # stime and etime + time_format = '%Y-%m-%d' if _type == 'date' else '%Y-%m-%d %H:%M:%S' + _now = datetime.datetime.now() + end_date = _now.strftime(time_format) if today else (_now - datetime.timedelta(days=-1)).strftime(time_format) + start_date = (_now + datetime.timedelta(days=-30)).strftime(time_format) + return start_date, end_date diff --git a/dspt_api/util/general/suggest_params.py b/dspt_api/util/general/suggest_params.py index 914d8c1..959b101 100644 --- a/dspt_api/util/general/suggest_params.py +++ b/dspt_api/util/general/suggest_params.py @@ -37,6 +37,13 @@ from dspt_api.util.mapi.card_buy_info import MapiCardBuyInfo from dspt_api.util.mapi.order_tickets import MapiOrderTickets from dspt_api.util.mapi.card_recharge_log import MapiCardRechargeLog from dspt_api.util.mapi.order_list import MapiOrderList +from dspt_api.util.mapi.order_detail import MapiOrderDetail +from dspt_api.util.mapi.card_trade_query import MapiCardTradeQuery +from dspt_api.util.mapi.card_jifen_query import MapiCardJifenQuery +from dspt_api.util.mapi.movie_info import MapiMovieInfo +from dspt_api.util.mapi.play_info import MapiPlayInfo +from dspt_api.util.mapi.play_period_changed_seats import MapiPlayPeriodChangedSeats +from dspt_api.util.mapi.play_seat_overview import MapiPlaySeatOverview # 通过api来匹配不同的接口文件获取推荐 @@ -188,10 +195,38 @@ def suggest_params(member_type, api, env, cid, pid, ip, **kwargs): if api == 'order/list' and member_type == 'member': print('order/list') params = MapiOrderList(**data).get_suggestion() + # 3.1.8 查询某条订单的详细信息 + if api == 'order/detail' and member_type == 'member': + print('order/detail') + params = MapiOrderDetail(**data).get_suggestion() + # 3.1.10 会员卡消费流水查询 + if api == 'card/trade-query' and member_type == 'member': + print('card/trade-query') + params = MapiCardTradeQuery(**data).get_suggestion() + # 3.1.12 会员卡积分记录查询 + if api == 'card/jifen-query' and member_type == 'member': + print('card/jifen-query') + params = MapiCardJifenQuery(**data).get_suggestion() + # 3.2.4 获取影片详细信息 + if api == 'movie/info' and member_type == 'member': + print('movie/info') + params = MapiMovieInfo(**data).get_suggestion() + # 3.2.5 获取场次详细信息 + if api == 'play/info' and member_type == 'member': + print('play/info') + params = MapiPlayInfo(**data).get_suggestion() # 3.2.6 获取场次座位状态 if api == 'play/seat-status' and member_type == 'member': print('play/seat-status') params = MapiPlaySeatStatus(**data).get_suggestion() + # 3.2.7 获取场次座位状态增量 + if api == 'play/period-changed-seats' and member_type == 'member': + print('play/period-changed-seats') + params = MapiPlayPeriodChangedSeats(**data).get_suggestion() + # 3.2.8 获取场次座位售卖统计信息 + if api == 'play/seat-overview' and member_type == 'member': + print('play/seat-overview') + params = MapiPlaySeatOverview(**data).get_suggestion() # 3.3.2 获取卖品折扣信息 if api == 'card/get-goods-price' and member_type == 'member': print('card/get-goods-price') @@ -364,10 +399,38 @@ def suggest_params_timestamp(member_type, api, env, cid, pid, ip, **kwargs): if api == 'order/list' and member_type == 'member': print('order/list') _timestamps = MapiOrderList(**data).get_timestamp() + # 3.1.8 查询某条订单的详细信息 + if api == 'order/detail' and member_type == 'member': + print('order/detail') + _timestamps = MapiOrderDetail(**data).get_timestamp() + # 3.1.10 会员卡消费流水查询 + if api == 'card/trade-query' and member_type == 'member': + print('card/trade-query') + _timestamps = MapiCardTradeQuery(**data).get_timestamp() + # 3.1.12 会员卡积分记录查询 + if api == 'card/jifen-query' and member_type == 'member': + print('card/jifen-query') + _timestamps = MapiCardJifenQuery(**data).get_timestamp() + # 3.2.4 获取影片详细信息 + if api == 'movie/info' and member_type == 'member': + print('movie/info') + _timestamps = MapiMovieInfo(**data).get_timestamp() + # 3.2.5 获取场次详细信息 + if api == 'play/info' and member_type == 'member': + print('play/info') + _timestamps = MapiPlayInfo(**data).get_timestamp() # 3.2.6 获取场次座位状态 if api == 'play/seat-status' and member_type == 'member': print('play/seat-status') _timestamps = MapiPlaySeatStatus(**data).get_timestamp() + # 3.2.7 获取场次座位状态增量 + if api == 'play/period-changed-seats' and member_type == 'member': + print('play/period-changed-seats') + _timestamps = MapiPlayPeriodChangedSeats(**data).get_timestamp() + # 3.2.8 获取场次座位售卖统计信息 + if api == 'play/seat-overview' and member_type == 'member': + print('play/seat-overview') + _timestamps = MapiPlaySeatOverview(**data).get_timestamp() # 3.3.2 获取卖品折扣信息 if api == 'card/get-goods-price' and member_type == 'member': print('card/get-goods-price') diff --git a/dspt_api/util/mapi/card_jifen_query.py b/dspt_api/util/mapi/card_jifen_query.py new file mode 100644 index 0000000..ddebf6c --- /dev/null +++ b/dspt_api/util/mapi/card_jifen_query.py @@ -0,0 +1,42 @@ +from dspt_api.util.general.handle_time import get_stime_etime +from dspt_api.util.general.handle_card import get_card +from dspt_api.util.general.handle_params import add_param +import time + + +class MapiCardJifenQuery: + 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) + add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) + # stime and etime + start_date, end_date = get_stime_etime('date') + add_param(self.return_data, 'start', start_date) + add_param(self.return_data, 'end', end_date) + print(__name__, self.return_data) + return self.return_data + + @staticmethod + def get_timestamp(): + return int(time.time() * 1000) diff --git a/dspt_api/util/mapi/card_trade_query.py b/dspt_api/util/mapi/card_trade_query.py new file mode 100644 index 0000000..2283b8c --- /dev/null +++ b/dspt_api/util/mapi/card_trade_query.py @@ -0,0 +1,42 @@ +from dspt_api.util.general.handle_time import get_stime_etime +from dspt_api.util.general.handle_card import get_card +from dspt_api.util.general.handle_params import add_param +import time, datetime + + +class MapiCardTradeQuery: + 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) + add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) + # stime and etime + start_date, end_date = get_stime_etime('time') + add_param(self.return_data, 'stime', start_date) + add_param(self.return_data, 'etime', end_date) + print(__name__, self.return_data) + return self.return_data + + @staticmethod + def get_timestamp(): + return int(time.time() * 1000) diff --git a/dspt_api/util/mapi/movie_info.py b/dspt_api/util/mapi/movie_info.py new file mode 100644 index 0000000..8123efa --- /dev/null +++ b/dspt_api/util/mapi/movie_info.py @@ -0,0 +1,46 @@ +from dspt_api.util.general.handle_redis import get_data_from_redis +from dspt_api.util.general.handle_card import get_card +from dspt_api.util.general.handle_params import add_param +import time + + +class MapiMovieInfo: + 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) + + # 获取play_id 和 play_update_time + redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' + 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) + cine_movie_id = seat_price_from_play['movieInfo'][0]['cineMovieId'] + if result_play is False: + add_param(self.return_data, 'mid', '请手动输入参数,检查相关接口返回值:3.2.3 获取放映计划列表', + timestamp=int(time.time() * 1000)) + else: + add_param(self.return_data, 'mid', cine_movie_id, timestamp=int(time.time() * 1000)) + return self.return_data + + @staticmethod + def get_timestamp(): + return int(time.time() * 1000) diff --git a/dspt_api/util/mapi/order_detail.py b/dspt_api/util/mapi/order_detail.py new file mode 100644 index 0000000..5f644b4 --- /dev/null +++ b/dspt_api/util/mapi/order_detail.py @@ -0,0 +1,50 @@ +from dspt_api.util.general.handle_redis import get_data_from_redis +from dspt_api.util.general.handle_card import get_card +from dspt_api.util.general.handle_params import add_param +import time + + +class MapiOrderDetail: + 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) + add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) + # order_id + redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' + request_api_play = {'name': '3.4.6 混合下单(影票、卖品)', 'path': 'seat/lock-buy'} + redis_key_api_play = f'{redis_key_prefix}_{request_api_play["path"]}' + result_buy, _format_buy, data_buy, _timestamp_buy = get_data_from_redis(redis_key_api_play) + order_id = data_buy['ticketFlag1'] + data_buy['ticketFlag2'] + if result_buy is False: + add_param(self.return_data, 'order_id', '请手动输入参数,检查相关接口返回值:3.4.6 混合下单(影票、卖品)', + timestamp=int(time.time() * 1000)) + else: + add_param(self.return_data, 'order_id', order_id) + add_param(self.return_data, 'type', 'sell') + print(__name__, self.return_data) + return self.return_data + + @staticmethod + def get_timestamp(): + return int(time.time() * 1000) diff --git a/dspt_api/util/mapi/play_info.py b/dspt_api/util/mapi/play_info.py new file mode 100644 index 0000000..85dd753 --- /dev/null +++ b/dspt_api/util/mapi/play_info.py @@ -0,0 +1,47 @@ +from dspt_api.util.general.handle_redis import get_data_from_redis +from dspt_api.util.general.handle_card import get_card +from dspt_api.util.general.handle_params import add_param +import time + + +class MapiPlayInfo: + 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) + + # 获取play_id 和 play_update_time + redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' + 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) + print('seat_price_from_play', seat_price_from_play) + play_id = seat_price_from_play['id'] + if result_play is False: + add_param(self.return_data, 'play_id', '请手动输入参数,检查相关接口返回值:3.2.3 获取放映计划列表', + timestamp=int(time.time() * 1000)) + else: + add_param(self.return_data, 'play_id', play_id, timestamp=int(time.time() * 1000)) + return self.return_data + + @staticmethod + def get_timestamp(): + return int(time.time() * 1000) diff --git a/dspt_api/util/mapi/play_period_changed_seats.py b/dspt_api/util/mapi/play_period_changed_seats.py new file mode 100644 index 0000000..362b9b9 --- /dev/null +++ b/dspt_api/util/mapi/play_period_changed_seats.py @@ -0,0 +1,49 @@ +from dspt_api.util.general.handle_redis import get_data_from_redis +from dspt_api.util.general.handle_card import get_card +from dspt_api.util.general.handle_params import add_param +import time, datetime + + +class MapiPlayPeriodChangedSeats: + 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) + + # 获取play_id 和 play_update_time + redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' + 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) + print('seat_price_from_play', seat_price_from_play) + play_id = seat_price_from_play['id'] + if result_play is False: + add_param(self.return_data, 'play_id', '请手动输入参数,检查相关接口返回值:3.2.3 获取放映计划列表', + timestamp=int(time.time() * 1000)) + else: + add_param(self.return_data, 'play_id', play_id, timestamp=int(time.time() * 1000)) + start = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d') + ' 06:00:00' + add_param(self.return_data, 'start', start, timestamp=int(time.time() * 1000)) + return self.return_data + + @staticmethod + def get_timestamp(): + return int(time.time() * 1000) diff --git a/dspt_api/util/mapi/play_seat_overview.py b/dspt_api/util/mapi/play_seat_overview.py new file mode 100644 index 0000000..bb95215 --- /dev/null +++ b/dspt_api/util/mapi/play_seat_overview.py @@ -0,0 +1,5 @@ +from dspt_api.util.mapi.play_info import MapiPlayInfo + + +class MapiPlaySeatOverview(MapiPlayInfo): + pass \ No newline at end of file