diff --git a/dspt_api/util/general/handle_card.py b/dspt_api/util/general/handle_card.py index aeeb260..4aa8704 100644 --- a/dspt_api/util/general/handle_card.py +++ b/dspt_api/util/general/handle_card.py @@ -5,15 +5,18 @@ from dspt_api.util.general.sign import Sign import requests -def get_card(ip, env, pid, cid): +def get_card(ip, env, pid, cid, card=None): + if card is not None and card != "请手动输入会员卡号": + set_card(ip, env, pid, cid, card) + return True, card 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 '请手动输入会员卡号' + return True, str(card_num, encoding='utf-8') + return False, '请手动输入会员卡号' def set_card(ip, env, pid, cid, card): diff --git a/dspt_api/util/general/handle_redis.py b/dspt_api/util/general/handle_redis.py index 8cfb993..0381e93 100644 --- a/dspt_api/util/general/handle_redis.py +++ b/dspt_api/util/general/handle_redis.py @@ -53,4 +53,13 @@ def get_param_from_redis(redis_key): redis_data = json.loads(redis_conn.get(redis_key)) request_params = redis_data['params'] return request_params - return False \ No newline at end of file + return False + +def get_timestamp_from_redis(redis_key): + # 初始话redis + redis_conn = get_redis_connection() + if redis_conn.exists(redis_key): + redis_data = json.loads(redis_conn.get(redis_key)) + request_timestamp = redis_data['timestamp'] + return request_timestamp + return 0 \ No newline at end of file diff --git a/dspt_api/util/general/suggest_params.py b/dspt_api/util/general/suggest_params.py index a91f243..911a63c 100644 --- a/dspt_api/util/general/suggest_params.py +++ b/dspt_api/util/general/suggest_params.py @@ -189,146 +189,206 @@ def suggest_params(member_type, api, env, cid, pid, ip, **kwargs): # 3.1.2 会员卡密码校验 if api == 'card/auth' and member_type == 'member': print('card/auth') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardAuth(**data).get_suggestion() # 3.1.3 查询会员卡的详细信息 if api == 'card/detail' and member_type == 'member': print('card/detail') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardDetail(**data).get_suggestion() # 3.1.4 获取会员卡某场次的购票信息 if api == 'card/buy-info' and member_type == 'member': print('card/buy-info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardBuyInfo(**data).get_suggestion() # 3.1.5 获取有效的未出票订单 if api == 'order/tickets' and member_type == 'member': print('order/tickets') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiOrderTickets(**data).get_suggestion() # 3.1.6 查询会员卡充值记录 if api == 'card/recharge-log' and member_type == 'member': print('card/recharge-log') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardRechargeLog(**data).get_suggestion() # 3.1.7 查询会员卡历史订单 if api == 'order/list' and member_type == 'member': print('order/list') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiOrderList(**data).get_suggestion() # 3.1.8 查询某条订单的详细信息 if api == 'order/detail' and member_type == 'member': print('order/detail') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiOrderDetail(**data).get_suggestion() # 3.1.10 会员卡消费流水查询 if api == 'card/trade-query' and member_type == 'member': print('card/trade-query') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardTradeQuery(**data).get_suggestion() # 3.1.12 会员卡积分记录查询 if api == 'card/jifen-query' and member_type == 'member': print('card/jifen-query') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardJifenQuery(**data).get_suggestion() # 3.2.4 获取影片详细信息 if api == 'movie/info' and member_type == 'member': print('movie/info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiMovieInfo(**data).get_suggestion() # 3.2.5 获取场次详细信息 if api == 'play/info' and member_type == 'member': print('play/info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiPlayInfo(**data).get_suggestion() # 3.2.6 获取场次座位状态 if api == 'play/seat-status' and member_type == 'member': print('play/seat-status') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiPlaySeatStatus(**data).get_suggestion() # 3.2.7 获取场次座位状态增量 if api == 'play/period-changed-seats' and member_type == 'member': print('play/period-changed-seats') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiPlayPeriodChangedSeats(**data).get_suggestion() # 3.2.8 获取场次座位售卖统计信息 if api == 'play/seat-overview' and member_type == 'member': print('play/seat-overview') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiPlaySeatOverview(**data).get_suggestion() # 3.3.2 获取卖品折扣信息 if api == 'card/get-goods-price' and member_type == 'member': print('card/get-goods-price') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardGetGoodsPrice(**data).get_suggestion() # 3.4.1 订票 if api == 'seat/book' and member_type == 'member': print('seat/book') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiSeatBook(**data).get_suggestion() # 3.4.2 会员卡充值 if api == 'card/recharge' and member_type == 'member': print('card/recharge') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardRecharge(**data).get_suggestion() # 3.4.3 座位锁定 if api == 'seat/lock' and member_type == 'member': print('seat/lock') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiSeatLock(**data).get_suggestion() # 3.4.4 座位锁定后获取票价 if api == 'seat/price' and member_type == 'member': print('seat/price') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiSeatPrice(**data).get_suggestion() # 3.4.5 座位解锁 if api == 'seat/unlock' and member_type == 'member': print('seat/unlock') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiSeatUnlock(**data).get_suggestion() # 3.4.6 混合下单(影票、卖品) if api == 'seat/lock-buy' and member_type == 'member': 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 = MapiSeatLockBuy(**data).get_suggestion() # 3.4.7 单独下单(卖品) if api == 'order/buy-goods' and member_type == 'member': print('order/buy-goods') - 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 = MapiOrderBuyGoods(**data).get_suggestion() # 3.4.8 退单(影票、卖品) if api == 'ticket/refund' and member_type == 'member': print('ticket/refund') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiTicketRefund(**data).get_suggestion() # 3.4.9 查询订单状态及取票码 if api == 'order/ticket-flag' and member_type == 'member': print('order/ticket-flag') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiOrderTicketFlag(**data).get_suggestion() # 3.4.10 查询订单状态 if api == 'order/status' and member_type == 'member': print('order/status') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiOrderStatus(**data).get_suggestion() # 3.4.11 查询订单信息(影票) if api == 'ticket/info' and member_type == 'member': print('ticket/info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiTicketInfo(**data).get_suggestion() # 3.4.12 查询订单信息(影票、卖品) if api == 'order/info' and member_type == 'member': print('order/info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiOrderInfo(**data).get_suggestion() # 3.4.13 确认出票(设置影票为已出票) if api == 'ticket/print' and member_type == 'member': print('ticket/print') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiTicketPrint(**data).get_suggestion() # 3.4.14 会员卡激活 if api == 'card/active' and member_type == 'member': print('card/active') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardActive(**data).get_suggestion() # 3.4.15 会员卡线上开卡 if api == 'card/regist' and member_type == 'member': print('card/regist') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCardRegist(**data).get_suggestion() # 3.5.1 充值明细对账 if api == 'cinema/recharge-bill' and member_type == 'member': print('cinema/recharge-bill') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCinemaRechargeBill(**data).get_suggestion() # 3.5.2 影票对账 if api == 'cinema/ticket-bill' and member_type == 'member': print('cinema/ticket-bill') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCinemaTicketBill(**data).get_suggestion() # 3.5.3 卖品对账 if api == 'cinema/goods-bill' and member_type == 'member': print('cinema/goods-bill') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCinemaGoodsBill(**data).get_suggestion() # 3.5.4 发卡明细对账 if api == 'cinema/send-card-bill' and member_type == 'member': print('cinema/send-card-bill') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] params = MapiCinemaSendCardBill(**data).get_suggestion() return params @@ -454,82 +514,122 @@ def suggest_params_timestamp(member_type, api, env, cid, pid, ip, **kwargs): # 3.1.2 会员卡密码校验 if api == 'card/auth' and member_type == 'member': print('card/auth') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardAuth(**data).get_timestamp() # 3.1.3 查询会员卡的详细信息 if api == 'card/detail' and member_type == 'member': print('card/detail') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardDetail(**data).get_timestamp() # 3.1.4 获取会员卡某场次的购票信息 if api == 'card/buy-info' and member_type == 'member': print('card/buy-info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardBuyInfo(**data).get_timestamp() # 3.1.5 获取有效的未出票订单 if api == 'order/tickets' and member_type == 'member': print('order/tickets') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiOrderTickets(**data).get_timestamp() # 3.1.6 查询会员卡充值记录 if api == 'card/recharge-log' and member_type == 'member': print('card/recharge-log') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardRechargeLog(**data).get_timestamp() # 3.1.7 查询会员卡历史订单 if api == 'order/list' and member_type == 'member': print('order/list') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiOrderList(**data).get_timestamp() # 3.1.8 查询某条订单的详细信息 if api == 'order/detail' and member_type == 'member': print('order/detail') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiOrderDetail(**data).get_timestamp() # 3.1.10 会员卡消费流水查询 if api == 'card/trade-query' and member_type == 'member': print('card/trade-query') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardTradeQuery(**data).get_timestamp() # 3.1.12 会员卡积分记录查询 if api == 'card/jifen-query' and member_type == 'member': print('card/jifen-query') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardJifenQuery(**data).get_timestamp() # 3.2.4 获取影片详细信息 if api == 'movie/info' and member_type == 'member': print('movie/info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiMovieInfo(**data).get_timestamp() # 3.2.5 获取场次详细信息 if api == 'play/info' and member_type == 'member': print('play/info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiPlayInfo(**data).get_timestamp() # 3.2.6 获取场次座位状态 if api == 'play/seat-status' and member_type == 'member': print('play/seat-status') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiPlaySeatStatus(**data).get_timestamp() # 3.2.7 获取场次座位状态增量 if api == 'play/period-changed-seats' and member_type == 'member': print('play/period-changed-seats') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiPlayPeriodChangedSeats(**data).get_timestamp() # 3.2.8 获取场次座位售卖统计信息 if api == 'play/seat-overview' and member_type == 'member': print('play/seat-overview') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiPlaySeatOverview(**data).get_timestamp() # 3.3.2 获取卖品折扣信息 if api == 'card/get-goods-price' and member_type == 'member': print('card/get-goods-price') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardGetGoodsPrice(**data).get_timestamp() # 3.4.1 订票 if api == 'seat/book' and member_type == 'member': print('seat/book') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiSeatBook(**data).get_timestamp() # 3.4.2 会员卡充值 if api == 'card/recharge' and member_type == 'member': print('card/recharge') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardRecharge(**data).get_timestamp() # 3.4.3 座位锁定 if api == 'seat/lock' and member_type == 'member': print('seat/lock') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiSeatLock(**data).get_timestamp() # 3.4.4 座位锁定后获取票价 if api == 'seat/price' and member_type == 'member': print('seat/price') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiSeatPrice(**data).get_timestamp() # 3.4.5 座位解锁 if api == 'seat/unlock' and member_type == 'member': print('seat/unlock') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiSeatUnlock(**data).get_timestamp() # 3.4.6 混合下单(影票、卖品) if api == 'seat/lock-buy' and member_type == 'member': @@ -540,57 +640,79 @@ def suggest_params_timestamp(member_type, api, env, cid, pid, ip, **kwargs): # 3.4.7 单独下单(卖品) if api == 'order/buy-goods' and member_type == 'member': print('order/buy-goods') - 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 = MapiOrderBuyGoods(**data).get_timestamp() # 3.4.8 退单(影票、卖品) if api == 'ticket/refund' and member_type == 'member': print('ticket/refund') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiTicketRefund(**data).get_timestamp() # 3.4.9 查询订单状态及取票码 if api == 'order/ticket-flag' and member_type == 'member': print('order/ticket-flag') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiOrderTicketFlag(**data).get_timestamp() # 3.4.10 查询订单状态 if api == 'order/status' and member_type == 'member': print('order/status') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiOrderStatus(**data).get_timestamp() # 3.4.11 查询订单信息(影票) if api == 'ticket/info' and member_type == 'member': print('ticket/info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiTicketInfo(**data).get_timestamp() # 3.4.12 查询订单信息(影票、卖品) if api == 'order/info' and member_type == 'member': print('order/info') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiOrderInfo(**data).get_timestamp() # 3.4.13 确认出票(设置影票为已出票) if api == 'ticket/print' and member_type == 'member': print('ticket/print') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiTicketPrint(**data).get_timestamp() # 3.4.14 会员卡激活 if api == 'card/active' and member_type == 'member': print('card/active') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardActive(**data).get_timestamp() # 3.4.15 会员卡线上开卡 if api == 'card/regist' and member_type == 'member': print('card/regist') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCardRegist(**data).get_timestamp() # 3.5.1 充值明细对账 if api == 'cinema/recharge-bill' and member_type == 'member': print('cinema/recharge-bill') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCinemaRechargeBill(**data).get_timestamp() # 3.5.2 影票对账 if api == 'cinema/ticket-bill' and member_type == 'member': print('cinema/ticket-bill') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCinemaTicketBill(**data).get_timestamp() # 3.5.3 卖品对账 if api == 'cinema/goods-bill' and member_type == 'member': print('cinema/goods-bill') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCinemaGoodsBill(**data).get_timestamp() # 3.5.4 发卡明细对账 if api == 'cinema/send-card-bill' and member_type == 'member': print('cinema/send-card-bill') + data['sale_type'] = kwargs['sale_type'] + data['pay_type'] = kwargs['pay_type'] _timestamps = MapiCinemaSendCardBill(**data).get_timestamp() return _timestamps diff --git a/dspt_api/util/mapi/card_active.py b/dspt_api/util/mapi/card_active.py index bb5de23..7d2029b 100644 --- a/dspt_api/util/mapi/card_active.py +++ b/dspt_api/util/mapi/card_active.py @@ -1,12 +1,7 @@ -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, get_card_level_val, get_card_type +from dspt_api.util.general.handle_card import get_card, get_card_level_val from dspt_api.util.general.handle_params import add_param import time -import random class MapiCardActive: @@ -32,20 +27,21 @@ class MapiCardActive: 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)) - # 通用字段 + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) + add_param(self.return_data, 'card', card_num) + + # partner_order_id partner_order_id = general_order_num('ACTIVE', self.api, self.member_type, self.ip, self.env, self.pid, - self.cid) + self.cid) add_param(self.return_data, 'partner_order_id', partner_order_id) - active_card_pay = get_card_level_val(self.env, self.pid, self.cid, card_num, 'activeCardFee') - - if not active_card_pay: - add_param(self.return_data, 'money', '自动获取激活费用,请手动输入!') - else: - add_param(self.return_data, 'money', active_card_pay) + # money + active_card_pay = '自动获取激活费用,请手动输入!' + if card_result: + active_card_pay = get_card_level_val(self.env, self.pid, self.cid, card_num, 'activeCardFee') + add_param(self.return_data, 'money', active_card_pay) print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/card_auth.py b/dspt_api/util/mapi/card_auth.py index 020a33e..50a284f 100644 --- a/dspt_api/util/mapi/card_auth.py +++ b/dspt_api/util/mapi/card_auth.py @@ -27,8 +27,9 @@ class MapiCardAuth: 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) + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) + print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/card_buy_info.py b/dspt_api/util/mapi/card_buy_info.py index a36e68f..dfd7657 100644 --- a/dspt_api/util/mapi/card_buy_info.py +++ b/dspt_api/util/mapi/card_buy_info.py @@ -28,21 +28,20 @@ class MapiCardBuyInfo: 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) + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) - print(__name__, self.return_data) # 获取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) - 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)) + play_id = '请手动输入参数,检查相关接口返回值:3.2.3 获取放映计划列表' + if result_play: + play_id = seat_price_from_play['id'] + add_param(self.return_data, 'play_id', play_id, timestamp=int(time.time() * 1000)) + + print(__name__, self.return_data) return self.return_data @staticmethod diff --git a/dspt_api/util/mapi/card_get_goods_price.py b/dspt_api/util/mapi/card_get_goods_price.py index c33b019..bf7a0de 100644 --- a/dspt_api/util/mapi/card_get_goods_price.py +++ b/dspt_api/util/mapi/card_get_goods_price.py @@ -1,10 +1,8 @@ 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: @@ -15,19 +13,26 @@ class MapiCardGetGoodsPrice: 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): - # play_id play_update_time print('get_suggestion', self.user_data) + + # card & goods self.handle() + + print(__name__, self.return_data) return self.return_data def get_timestamp(self): @@ -35,14 +40,18 @@ class MapiCardGetGoodsPrice: def handle(self): # 获取会员卡号 - 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)) + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) + add_param(self.return_data, 'card', card_num) + + # goods 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))) + goods = '请手动输入参数,或先请求接口:3.3.1 获取卖品列表' + if result: + goods_field_list, total_goods_val = general_goods_field_member(_goods_data, self.user_data) + goods = json.dumps(change_goods_price_str(goods_field_list)) + add_param(self.return_data,'goods', goods) + return _timestamp if result else 0 \ No newline at end of file diff --git a/dspt_api/util/mapi/card_jifen_query.py b/dspt_api/util/mapi/card_jifen_query.py index ddebf6c..141de81 100644 --- a/dspt_api/util/mapi/card_jifen_query.py +++ b/dspt_api/util/mapi/card_jifen_query.py @@ -27,13 +27,16 @@ class MapiCardJifenQuery: 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) + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) 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 diff --git a/dspt_api/util/mapi/card_recharge.py b/dspt_api/util/mapi/card_recharge.py index 1f671c4..900c56d 100644 --- a/dspt_api/util/mapi/card_recharge.py +++ b/dspt_api/util/mapi/card_recharge.py @@ -1,12 +1,7 @@ -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, get_card_val from dspt_api.util.general.handle_params import add_param import time -import random class MapiCardRecharge: @@ -32,18 +27,21 @@ class MapiCardRecharge: 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)) - # 通用字段 + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) + add_param(self.return_data, 'card', card_num) + + # partner_deposit_id partner_deposit_id = general_order_num('RECHARGE', self.api, self.member_type, self.ip, self.env, self.pid, self.cid) add_param(self.return_data, 'partner_deposit_id', partner_deposit_id) + + # money recharge_pay = get_card_val(self.env, self.pid, self.cid, card_num, 'minAddMoney') if not recharge_pay: - add_param(self.return_data, 'money', '自动获取最低充值金额失败,请手动输入!') - else: - add_param(self.return_data, 'money', recharge_pay) + recharge_pay = '自动获取最低充值金额失败,请手动输入!' + add_param(self.return_data, 'money', recharge_pay) print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/card_regist.py b/dspt_api/util/mapi/card_regist.py index 769a4ec..0b266d9 100644 --- a/dspt_api/util/mapi/card_regist.py +++ b/dspt_api/util/mapi/card_regist.py @@ -1,12 +1,8 @@ -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, get_card_level_val, get_card_type from dspt_api.util.general.handle_params import add_param +import json import time -import random class MapiCardRegist: @@ -32,24 +28,22 @@ class MapiCardRegist: def get_suggestion(self): print('get_suggestion', self.user_data, self.sale_type, self.pay_type) - # 通用字段 + # partner_order_id partner_order_id = general_order_num('REG', self.api, self.member_type, self.ip, self.env, self.pid, self.cid) add_param(self.return_data, 'partner_order_id', partner_order_id) + # check_mobile add_param(self.return_data, 'check_mobile', '2') # card_info redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' - request_api_card_level= {'name': '3.1.1 获取影院卡等级规则', 'path': 'cinema/card-level-rule'} + request_api_card_level = {'name': '3.1.1 获取影院卡等级规则', 'path': 'cinema/card-level-rule'} redis_key_api_card_level = f'{redis_key_prefix}_{request_api_card_level["path"]}' - print('redis_key_api_card_level', redis_key_api_card_level) - result_card_level, _format_card_level, data_card_level, _timestamp_card_level = get_data_from_redis(redis_key_api_card_level) - print('data_card_level', data_card_level) - - if not result_card_level: - add_param(self.return_data, 'card_info', '请手动输入参数,或先请求接口:3.1.1 获取影院卡等级规则') - else: + result_card_level, _format_card_level, data_card_level, _timestamp_card_level = get_data_from_redis( + redis_key_api_card_level) + card_info = '请手动输入参数,或先请求接口:3.1.1 获取影院卡等级规则' + if result_card_level: card_info = {'password': 'c8837b23ff8aaa8a2dde915473ce0991', 'mobile': '18688886666', 'cardLevelId': data_card_level['levelId'], @@ -58,7 +52,7 @@ class MapiCardRegist: 'sendCardFee': data_card_level['sendCardFee'], 'sendCardEquityFee': data_card_level['sendCardEquityFee'], 'exchangeBarcode': None} - add_param(self.return_data, 'card_info', json.dumps(card_info)) + add_param(self.return_data, 'card_info', json.dumps(card_info)) print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/card_trade_query.py b/dspt_api/util/mapi/card_trade_query.py index 2283b8c..0307f86 100644 --- a/dspt_api/util/mapi/card_trade_query.py +++ b/dspt_api/util/mapi/card_trade_query.py @@ -1,7 +1,7 @@ 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 +import time class MapiCardTradeQuery: @@ -28,12 +28,14 @@ class MapiCardTradeQuery: 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) + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) 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 diff --git a/dspt_api/util/mapi/cinema_recharge_bill.py b/dspt_api/util/mapi/cinema_recharge_bill.py index 44125d7..4de433b 100644 --- a/dspt_api/util/mapi/cinema_recharge_bill.py +++ b/dspt_api/util/mapi/cinema_recharge_bill.py @@ -1,5 +1,4 @@ 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 @@ -27,10 +26,12 @@ class MapiCinemaRechargeBill: def get_suggestion(self): print('get_suggestion', self.user_data, self.sale_type, self.pay_type) + # stime and etime start_date, end_date = get_stime_etime('date', today=False) add_param(self.return_data, 'start_date', start_date) add_param(self.return_data, 'end_date', end_date) + print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/movie_info.py b/dspt_api/util/mapi/movie_info.py index 8123efa..4148712 100644 --- a/dspt_api/util/mapi/movie_info.py +++ b/dspt_api/util/mapi/movie_info.py @@ -1,5 +1,4 @@ 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 @@ -28,17 +27,17 @@ class MapiMovieInfo: def get_suggestion(self): print('get_suggestion', self.user_data, self.sale_type, self.pay_type) - # 获取play_id 和 play_update_time + # mid 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)) + mid = '请手动输入参数,检查相关接口返回值:3.2.3 获取放映计划列表' + if result_play: + mid = seat_price_from_play['movieInfo'][0]['cineMovieId'] + add_param(self.return_data, 'mid', mid, timestamp=int(time.time() * 1000)) + + print(__name__, self.return_data) return self.return_data @staticmethod diff --git a/dspt_api/util/mapi/order_buy_goods.py b/dspt_api/util/mapi/order_buy_goods.py index c5245c3..08605da 100644 --- a/dspt_api/util/mapi/order_buy_goods.py +++ b/dspt_api/util/mapi/order_buy_goods.py @@ -1,12 +1,10 @@ -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 +import json + class MapiOrderBuyGoods: @@ -32,16 +30,21 @@ class MapiOrderBuyGoods: 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)) - # 通用字段 + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) + add_param(self.return_data, 'card', card_num) + + # mobile 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) + + # partner_buy_ticket_id + partner_buy_ticket_id = general_order_num('BUY_G', 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 @@ -52,25 +55,26 @@ class MapiOrderBuyGoods: 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)) + # goods & goods_card_balance_pay & goods_cash _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) + goods = '请手动输入参数,或先请求接口:3.3.1 获取卖品列表' + goods_card_balance_pay = '请手动输入参数,或先请求接口:3.3.1 获取卖品列表' + goods_cash = '请手动输入参数,或先请求接口:3.3.1 获取卖品列表' + if _good_result: + goods = json.dumps(_goods_field) + goods_card_balance_pay = _goods_card_balance_pay + goods_cash = _goods_cash + add_param(self.return_data, 'goods', goods, 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, + add_param(self.return_data, 'delivery_appoint_time', + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time() + 5 * 60)), 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) diff --git a/dspt_api/util/mapi/order_detail.py b/dspt_api/util/mapi/order_detail.py index 5f644b4..3d68483 100644 --- a/dspt_api/util/mapi/order_detail.py +++ b/dspt_api/util/mapi/order_detail.py @@ -28,20 +28,22 @@ class MapiOrderDetail: 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) + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) 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) + order_id = '请手动输入参数,检查相关接口返回值:3.4.6 混合下单(影票、卖品)' + if result_buy: + order_id = data_buy['ticketFlag1'] + data_buy['ticketFlag2'] + add_param(self.return_data, 'order_id', order_id) + + #type add_param(self.return_data, 'type', 'sell') + print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/order_info.py b/dspt_api/util/mapi/order_info.py index 51e7954..0755432 100644 --- a/dspt_api/util/mapi/order_info.py +++ b/dspt_api/util/mapi/order_info.py @@ -1,4 +1,70 @@ -from dspt_api.util.mapi.ticket_info import MapiTicketInfo +from dspt_api.util.general.handle_redis import get_data_from_redis, get_timestamp_from_redis +from dspt_api.util.general.handle_params import add_param +import time -class MapiOrderInfo(MapiTicketInfo): - pass \ No newline at end of file + +class MapiOrderInfo: + 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) + # ticket_flag1 & ticket_flag2 + redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' + + # 影票 + request_api_lock_buy = {'name': '3.4.6 混合下单(影票、卖品)', 'path': 'seat/lock-buy'} + redis_key_api_lock_buy = f'{redis_key_prefix}_{request_api_lock_buy["path"]}' + timestamp_lock_buy = get_timestamp_from_redis(redis_key_api_lock_buy) + result_lock_buy, _format_lock_buy, data_lock_buy, _timestamp_lock_buy = get_data_from_redis( + redis_key_api_lock_buy) + + # 卖品 + request_api_buy_goods = {'name': '3.4.7 单独下单(卖品)', 'path': 'order/buy-goods'} + redis_key_api_buy_goods = f'{redis_key_prefix}_{request_api_buy_goods["path"]}' + timestamp_buy_goods = get_timestamp_from_redis(redis_key_api_buy_goods) + result_buy_goods, _format_buy_goods, data_buy_goods, _timestamp_buy_goods = get_data_from_redis( + redis_key_api_buy_goods) + + ticket_flag1 = '请手动输入参数,检查相关接口返回值:3.4.6 混合下单(影票、卖品) 或 3.4.7 单独下单(卖品)' + ticket_flag2 = '请手动输入参数,检查相关接口返回值:3.4.6 混合下单(影票、卖品) 或 3.4.7 单独下单(卖品)' + if result_lock_buy and result_buy_goods: + if int(timestamp_lock_buy) > int(timestamp_buy_goods): + ticket_flag1 = data_lock_buy['ticketFlag1'] + ticket_flag2 = data_lock_buy['ticketFlag2'] + else: + ticket_flag1 = data_buy_goods['ticketFlag1'] + ticket_flag2 = data_buy_goods['ticketFlag2'] + elif result_lock_buy: + ticket_flag1 = data_lock_buy['ticketFlag1'] + ticket_flag2 = data_lock_buy['ticketFlag2'] + elif result_buy_goods: + ticket_flag1 = data_buy_goods['ticketFlag1'] + ticket_flag2 = data_buy_goods['ticketFlag2'] + + add_param(self.return_data, 'ticket_flag1', ticket_flag1) + add_param(self.return_data, 'ticket_flag2', ticket_flag2) + + 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/order_status.py b/dspt_api/util/mapi/order_status.py index b42d3ae..b672a96 100644 --- a/dspt_api/util/mapi/order_status.py +++ b/dspt_api/util/mapi/order_status.py @@ -1,12 +1,6 @@ -import json -from dspt_api.util.general.handle_redis import get_data_from_redis, get_param_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_redis import get_param_from_redis, get_timestamp_from_redis from dspt_api.util.general.handle_params import add_param import time -import random class MapiOrderStatus: @@ -35,15 +29,28 @@ class MapiOrderStatus: # 获取其他参数 redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' # partner_buy_ticket_id + # 影票 request_api_lock_buy = {'name': '3.4.6 混合下单(影票、卖品)', 'path': 'seat/lock-buy'} redis_key_api_lock_buy = f'{redis_key_prefix}_{request_api_lock_buy["path"]}' - params_lock_buy = get_param_from_redis(redis_key_api_lock_buy) + timestamp_lock_buy = get_timestamp_from_redis(redis_key_api_lock_buy) + param_lock_buy = get_param_from_redis(redis_key_api_lock_buy) + # 卖品 + request_api_buy_goods = {'name': '3.4.7 单独下单(卖品)', 'path': 'order/buy-goods'} + redis_key_api_buy_goods = f'{redis_key_prefix}_{request_api_buy_goods["path"]}' + timestamp_buy_goods = get_timestamp_from_redis(redis_key_api_buy_goods) + param_buy_goods = get_param_from_redis(redis_key_api_buy_goods) - if not params_lock_buy: - add_param(self.return_data, 'partner_order_id', - '请手动输入参数,或先请求接口3.4.6 混合下单(影票、卖品)') - else: - add_param(self.return_data, 'partner_order_id', params_lock_buy['partner_buy_ticket_id']) + partner_order_id = '请手动输入参数,或先请求接口3.4.6 混合下单(影票、卖品)或 3.4.7 单独下单(卖品)' + if timestamp_lock_buy and timestamp_buy_goods: + if int(timestamp_lock_buy) > int(timestamp_buy_goods): + partner_order_id = param_lock_buy['partner_buy_ticket_id'] + else: + partner_order_id = param_buy_goods['partner_buy_ticket_id'] + elif timestamp_lock_buy: + partner_order_id = param_lock_buy['partner_buy_ticket_id'] + elif timestamp_buy_goods: + partner_order_id = param_buy_goods['partner_buy_ticket_id'] + add_param(self.return_data, 'partner_order_id', partner_order_id) print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/order_ticket_flag.py b/dspt_api/util/mapi/order_ticket_flag.py index 259f9df..4fc2f43 100644 --- a/dspt_api/util/mapi/order_ticket_flag.py +++ b/dspt_api/util/mapi/order_ticket_flag.py @@ -1,12 +1,6 @@ -import json -from dspt_api.util.general.handle_redis import get_data_from_redis, get_param_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_redis import get_param_from_redis, get_timestamp_from_redis from dspt_api.util.general.handle_params import add_param import time -import random class MapiOrderTicketFlag: @@ -35,14 +29,28 @@ class MapiOrderTicketFlag: # 获取其他参数 redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' # partner_buy_ticket_id + # 影票 request_api_lock_buy = {'name': '3.4.6 混合下单(影票、卖品)', 'path': 'seat/lock-buy'} redis_key_api_lock_buy = f'{redis_key_prefix}_{request_api_lock_buy["path"]}' - params_lock_buy = get_param_from_redis(redis_key_api_lock_buy) + timestamp_lock_buy = get_timestamp_from_redis(redis_key_api_lock_buy) + param_lock_buy = get_param_from_redis(redis_key_api_lock_buy) + # 卖品 + request_api_buy_goods = {'name': '3.4.7 单独下单(卖品)', 'path': 'order/buy-goods'} + redis_key_api_buy_goods = f'{redis_key_prefix}_{request_api_buy_goods["path"]}' + timestamp_buy_goods = get_timestamp_from_redis(redis_key_api_buy_goods) + param_buy_goods = get_param_from_redis(redis_key_api_buy_goods) - if not params_lock_buy: - add_param(self.return_data, 'partner_buy_ticket_id', '请手动输入参数,或先请求接口3.4.6 混合下单(影票、卖品)') - else: - add_param(self.return_data, 'partner_buy_ticket_id', params_lock_buy['partner_buy_ticket_id']) + partner_buy_ticket_id = '请手动输入参数,或先请求接口3.4.6 混合下单(影票、卖品)或 3.4.7 单独下单(卖品)' + if timestamp_lock_buy and timestamp_buy_goods: + if int(timestamp_lock_buy) > int(timestamp_buy_goods): + partner_buy_ticket_id = param_lock_buy['partner_buy_ticket_id'] + else: + partner_buy_ticket_id = param_buy_goods['partner_buy_ticket_id'] + elif timestamp_lock_buy: + partner_buy_ticket_id = param_lock_buy['partner_buy_ticket_id'] + elif timestamp_buy_goods: + partner_buy_ticket_id = param_buy_goods['partner_buy_ticket_id'] + add_param(self.return_data, 'partner_buy_ticket_id', partner_buy_ticket_id) print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/play_info.py b/dspt_api/util/mapi/play_info.py index 85dd753..b2d21e2 100644 --- a/dspt_api/util/mapi/play_info.py +++ b/dspt_api/util/mapi/play_info.py @@ -1,5 +1,4 @@ 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 @@ -28,18 +27,17 @@ class MapiPlayInfo: def get_suggestion(self): print('get_suggestion', self.user_data, self.sale_type, self.pay_type) - # 获取play_id 和 play_update_time + # 获取play_id 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)) + play_id = '请手动输入参数,检查相关接口返回值:3.2.3 获取放映计划列表' + if result_play: + play_id = seat_price_from_play['id'] + add_param(self.return_data, 'play_id', play_id, timestamp=_timestamp_play) + + print(__name__, self.return_data) return self.return_data @staticmethod diff --git a/dspt_api/util/mapi/play_period_changed_seats.py b/dspt_api/util/mapi/play_period_changed_seats.py index 362b9b9..1020ee7 100644 --- a/dspt_api/util/mapi/play_period_changed_seats.py +++ b/dspt_api/util/mapi/play_period_changed_seats.py @@ -1,5 +1,4 @@ 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 @@ -28,20 +27,21 @@ class MapiPlayPeriodChangedSeats: def get_suggestion(self): print('get_suggestion', self.user_data, self.sale_type, self.pay_type) - # 获取play_id 和 play_update_time + # 获取play_id 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)) + play_id = '请手动输入参数,检查相关接口返回值:3.2.3 获取放映计划列表' + if result_play: + play_id = seat_price_from_play['id'] + add_param(self.return_data, 'play_id', play_id, timestamp=_timestamp_play) + + # start 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)) + + print(__name__, self.return_data) return self.return_data @staticmethod diff --git a/dspt_api/util/mapi/play_seat_status.py b/dspt_api/util/mapi/play_seat_status.py index f2cfaa6..6c75fe8 100644 --- a/dspt_api/util/mapi/play_seat_status.py +++ b/dspt_api/util/mapi/play_seat_status.py @@ -1,6 +1,5 @@ from dspt_api.util.general.handle_redis import get_data_from_redis from dspt_api.util.general.handle_params import add_param -import time class MapiPlaySeatStatus: @@ -21,9 +20,12 @@ class MapiPlaySeatStatus: self.return_data = [] def get_suggestion(self): - # play_id play_update_time print('get_suggestion', self.user_data) + + # play_id play_update_time self.handle() + + print(__name__, self.return_data) return self.return_data def get_timestamp(self): @@ -34,9 +36,12 @@ class MapiPlaySeatStatus: request_api_play_seat_status = {'name': '3.2.3 获取放映计划列表', 'path': 'cinema/plays'} redis_key_api_play_seat_status = f'{redis_key_prefix}_{request_api_play_seat_status["path"]}' result, _format, play_data, _timestamp = get_data_from_redis(redis_key_api_play_seat_status) - if not result: - add_param(self.return_data,'play_id', '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表') - add_param(self.return_data,'play_update_time', '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表') - add_param(self.return_data,'play_id', play_data['id']) - add_param(self.return_data,'play_update_time', play_data['cineUpdateTime']) + play_id = '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表' + play_update_time = '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表' + if result: + play_id = play_data['id'] + play_update_time = play_data['cineUpdateTime'] + add_param(self.return_data, 'play_id', play_id) + add_param(self.return_data, 'play_update_time', play_update_time) + return _timestamp if result else 0 diff --git a/dspt_api/util/mapi/seat_book.py b/dspt_api/util/mapi/seat_book.py index 689da05..8300ecb 100644 --- a/dspt_api/util/mapi/seat_book.py +++ b/dspt_api/util/mapi/seat_book.py @@ -1,12 +1,8 @@ -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 MapiSeatBook: @@ -32,35 +28,39 @@ class MapiSeatBook: 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) + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) add_param(self.return_data, 'card', card_num, timestamp=int(time.time() * 1000)) - # 通用字段 + + # phone add_param(self.return_data, 'phone', '18688886666', timestamp=1000000000000) + + # partner_book_id partner_book_id = general_order_num('BOOK_T', self.api, self.member_type, self.ip, self.env, self.pid, - self.cid) + self.cid) add_param(self.return_data, 'partner_book_id', partner_book_id) - # 获取其他参数 - redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' # seat_id + redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' 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) - seat_id_list = [seat['cineSeatId'] for seat in seat_data] - if not result_seat: - add_param(self.return_data, 'seat_id', '请手动输入参数,或先请求接口3.2.6 获取某场次座位状态') - else: - add_param(self.return_data, 'seat_id', ','.join(seat_id_list)) - # 获取play_id + seat_id = '请手动输入参数,或先请求接口3.2.6 获取某场次座位状态' + if result_seat: + seat_id_list = [seat['cineSeatId'] for seat in seat_data] + seat_id = ','.join(seat_id_list) + add_param(self.return_data, 'seat_id', seat_id) + + # play_id 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) + play_id = '请手动输入参数,或先请求接口3.2.3 获取放映计划列表' + if result_play: + play_id = seat_price_from_play['id'] + add_param(self.return_data, 'play_id', play_id) - if not result_play: - add_param(self.return_data, 'play_id', '请手动输入参数,或先请求接口3.2.3 获取放映计划列表') - else: - add_param(self.return_data, 'play_id', seat_price_from_play['id']) print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/seat_lock.py b/dspt_api/util/mapi/seat_lock.py index 1123139..d89450d 100644 --- a/dspt_api/util/mapi/seat_lock.py +++ b/dspt_api/util/mapi/seat_lock.py @@ -1,6 +1,5 @@ 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: @@ -22,7 +21,11 @@ class MapiSeatLock: def get_suggestion(self): print('get_suggestion', self.user_data) + + # play_id & play_update_time & seat_id self.handle() + + print(__name__, self.return_data) return self.return_data def get_timestamp(self): @@ -30,26 +33,27 @@ class MapiSeatLock: 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']) + play_id = '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表' + play_update_time = '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表' + if result_play: + play_id = play_data['id'] + play_update_time = play_data['cineUpdateTime'] + add_param(self.return_data, 'play_id', play_id) + add_param(self.return_data, 'play_update_time', play_update_time) + # 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 = '请手动输入参数,或先请求接口:3.2.6 获取场次座位状态' + if result_seat: seat_id = ','.join([seat['cineSeatId'] for seat in seat_data]) - add_param(self.return_data, 'seat_id', seat_id) + 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 \ No newline at end of file + return max(_timestamp_play, _timestamp_seat) \ No newline at end of file diff --git a/dspt_api/util/mapi/seat_lock_buy.py b/dspt_api/util/mapi/seat_lock_buy.py index dfbebb9..80cac67 100644 --- a/dspt_api/util/mapi/seat_lock_buy.py +++ b/dspt_api/util/mapi/seat_lock_buy.py @@ -1,12 +1,10 @@ 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: @@ -32,17 +30,21 @@ class MapiSeatLockBuy: 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)) - # 通用字段 + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) + add_param(self.return_data, 'card', card_num) + + # mobile 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, + 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) + add_param(self.return_data, 'partner_buy_ticket_id', partner_buy_ticket_id) + # self.handle(card_num) - print('ApiSeatLockBuy-get_suggestion', self.return_data) + + print(__name__, self.return_data) return self.return_data @staticmethod @@ -50,34 +52,31 @@ class MapiSeatLockBuy: return int(time.time() * 1000) def handle(self, card_num): - # 处理影票部分 + # 影票部分 + # play_id & seat & lock_flag & play_update_time & seat_coupons & is_cinema_price & is_split_service_fee & t3d_pay_amount _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) + play_id = '请手动输入参数,或先请求接口:3.1.5 获取放映计划列表' + seat = '请手动输入参数,或先请求接口:3.1.8 获取某场次座位状态' + lock_flag = '请手动输入参数,或先请求接口:3.3.1 座位锁定' + play_update_time = '请手动输入参数,或先请求接口:3.1.5 获取放映计划列表' + is_cinema_price = '请手动输入参数,或请求其他前置接口返回结果!' + # is_split_service_fee = '请手动输入参数,或请求其他前置接口返回结果!' + # t3d_pay_amount = '请手动输入参数,或请求其他前置接口返回结果!' + # seat_coupons = '请手动输入参数,或请求其他前置接口返回结果!' + if _ticket_result: + play_id = _play_id + seat = _seat + lock_flag = _lock_flag + play_update_time = _play_update_time + is_cinema_price = _is_cinema_price + 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: @@ -94,17 +93,16 @@ class MapiSeatLockBuy: 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) + goods = '请手动输入参数,或先请求接口:3.3.1 获取卖品列表' + goods_card_balance_pay = '请手动输入参数,或先请求接口:3.3.1 获取卖品列表' + goods_cash = '请手动输入参数,或先请求接口:3.3.1 获取卖品列表' + if _good_result: + goods = json.dumps(_goods_field) + goods_card_balance_pay = _goods_card_balance_pay + goods_cash = _goods_cash + add_param(self.return_data, 'goods', goods, 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, diff --git a/dspt_api/util/mapi/seat_price.py b/dspt_api/util/mapi/seat_price.py index 0d1f617..7e555ce 100644 --- a/dspt_api/util/mapi/seat_price.py +++ b/dspt_api/util/mapi/seat_price.py @@ -11,18 +11,26 @@ class MapiSeatPrice: 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) + + # card & lock_code self.handle() + + print(__name__, self.return_data) return self.return_data def get_timestamp(self): @@ -30,18 +38,18 @@ class MapiSeatPrice: def handle(self): # card - card_num = get_card(self.ip, self.env, self.pid, self.cid) + card_result, card_num = get_card(self.ip, self.env, self.pid, self.cid, self.pay_type['card_num']) add_param(self.return_data, 'card', card_num) - 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']) + redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' + 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, lock_data, _timestamp_lock = get_data_from_redis(redis_key_api_lock) + lock_flag = '请手动输入参数,或先请求接口:3.4.3 座位锁定' + if result_lock: + lock_flag = lock_data['lockFlag'] + add_param(self.return_data, 'lock_flag', lock_flag) + # 处理混合结果 - return _timestamp_seat_lock if result_seat_lock else 0 + return _timestamp_lock if result_lock else 0 diff --git a/dspt_api/util/mapi/seat_unlock.py b/dspt_api/util/mapi/seat_unlock.py index 60194e0..4c97631 100644 --- a/dspt_api/util/mapi/seat_unlock.py +++ b/dspt_api/util/mapi/seat_unlock.py @@ -1,6 +1,5 @@ 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 MapiSeatUnlock: @@ -22,38 +21,44 @@ class MapiSeatUnlock: def get_suggestion(self): print('get_suggestion', self.user_data) + + # play_id & seat_id & lock_flag self.handle() + + print(__name__, self.return_data) 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 + redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' 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 获取放映计划列表') - else: - add_param(self.return_data, 'play_id', play_data['id']) + play_id = '请手动输入参数,或先请求接口:3.2.3 获取放映计划列表' + if result_play: + play_id = play_data['id'] + add_param(self.return_data, 'play_id', play_id) + # 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 = '请手动输入参数,或先请求接口:3.2.6 获取场次座位状态' + if result_seat: seat_id = ','.join([seat['cineSeatId'] for seat in seat_data]) - add_param(self.return_data, 'seat_id', seat_id) - # 获取 lock_flag + add_param(self.return_data, 'seat_id', seat_id) + + # 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: - add_param(self.return_data, 'lock_flag', '请手动输入参数,或先请求接口:3.4.3 座位锁定') - lock_flag = seat_price_from_lock['lockFlag'] + lock_flag = '请手动输入参数,或先请求接口:3.4.3 座位锁定' + if result_lock: + lock_flag = seat_price_from_lock['lockFlag'] add_param(self.return_data, 'lock_flag', lock_flag) + # 处理混合结果 return max(_timestamp_play, _timestamp_seat, _timestamp_lock) diff --git a/dspt_api/util/mapi/ticket_info.py b/dspt_api/util/mapi/ticket_info.py index 8901b7c..01d599c 100644 --- a/dspt_api/util/mapi/ticket_info.py +++ b/dspt_api/util/mapi/ticket_info.py @@ -1,5 +1,4 @@ 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 @@ -32,14 +31,14 @@ class MapiTicketInfo: 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) - if result_buy is False: - add_param(self.return_data, 'ticket_flag1', '请手动输入参数,检查相关接口返回值:3.4.6 混合下单(影票、卖品)', - timestamp=int(time.time() * 1000)) - add_param(self.return_data, 'ticket_flag2', '请手动输入参数,检查相关接口返回值:3.4.6 混合下单(影票、卖品)', - timestamp=int(time.time() * 1000)) - else: - add_param(self.return_data, 'ticket_flag1', data_buy['ticketFlag1']) - add_param(self.return_data, 'ticket_flag2', data_buy['ticketFlag2']) + ticket_flag1 = '请手动输入参数,检查相关接口返回值:3.4.6 混合下单(影票、卖品)' + ticket_flag2 = '请手动输入参数,检查相关接口返回值:3.4.6 混合下单(影票、卖品)' + if result_buy: + ticket_flag1 = data_buy['ticketFlag1'] + ticket_flag2 = data_buy['ticketFlag2'] + add_param(self.return_data, 'ticket_flag1', ticket_flag1) + add_param(self.return_data, 'ticket_flag2', ticket_flag2) + print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/util/mapi/ticket_refund.py b/dspt_api/util/mapi/ticket_refund.py index d081894..b3c2273 100644 --- a/dspt_api/util/mapi/ticket_refund.py +++ b/dspt_api/util/mapi/ticket_refund.py @@ -1,12 +1,7 @@ -import json -from dspt_api.util.general.handle_redis import get_data_from_redis, get_param_from_redis -from dspt_api.util.general.handle_seat import general_seat_params_member +from dspt_api.util.general.handle_redis import get_param_from_redis, get_timestamp_from_redis 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 MapiTicketRefund: @@ -40,14 +35,28 @@ class MapiTicketRefund: # 获取其他参数 redis_key_prefix = f'dspt_api_{self.ip}_{self.env}_{self.member_type}_{self.pid}_{self.cid}' # partner_buy_ticket_id + # 影票 request_api_lock_buy = {'name': '3.4.6 混合下单(影票、卖品)', 'path': 'seat/lock-buy'} redis_key_api_lock_buy = f'{redis_key_prefix}_{request_api_lock_buy["path"]}' - params_lock_buy = get_param_from_redis(redis_key_api_lock_buy) + timestamp_lock_buy = get_timestamp_from_redis(redis_key_api_lock_buy) + param_lock_buy = get_param_from_redis(redis_key_api_lock_buy) + # 卖品 + request_api_buy_goods = {'name': '3.4.7 单独下单(卖品)', 'path': 'order/buy-goods'} + redis_key_api_buy_goods = f'{redis_key_prefix}_{request_api_buy_goods["path"]}' + timestamp_buy_goods = get_timestamp_from_redis(redis_key_api_buy_goods) + param_buy_goods = get_param_from_redis(redis_key_api_buy_goods) - if not params_lock_buy: - add_param(self.return_data, 'partner_buy_ticket_id', '请手动输入参数,或先请求接口3.4.6 混合下单(影票、卖品)') - else: - add_param(self.return_data, 'partner_buy_ticket_id', params_lock_buy['partner_buy_ticket_id']) + partner_buy_ticket_id = '请手动输入参数,或先请求接口3.4.6 混合下单(影票、卖品)或 3.4.7 单独下单(卖品)' + if timestamp_lock_buy and timestamp_buy_goods: + if int(timestamp_lock_buy) > int(timestamp_buy_goods): + partner_buy_ticket_id = param_lock_buy['partner_buy_ticket_id'] + else: + partner_buy_ticket_id = param_buy_goods['partner_buy_ticket_id'] + elif timestamp_lock_buy: + partner_buy_ticket_id = param_lock_buy['partner_buy_ticket_id'] + elif timestamp_buy_goods: + partner_buy_ticket_id = param_buy_goods['partner_buy_ticket_id'] + add_param(self.return_data, 'partner_buy_ticket_id', partner_buy_ticket_id) print(__name__, self.return_data) return self.return_data diff --git a/dspt_api/views.py b/dspt_api/views.py index ed3ea0b..f82c49e 100644 --- a/dspt_api/views.py +++ b/dspt_api/views.py @@ -174,7 +174,8 @@ def get_suggest_params_by_api(request): 'goods_quan_num': pay_type_dict.get('goods_quan', None).get('goods_quan_num', None), 'goods_quan_value': pay_type_dict.get('goods_quan', None).get('goods_quan_value', None), 'goods_quan_type': pay_type_dict.get('goods_quan', None).get('goods_quan_type', None), - } + }, + 'card_num': pay_type_dict.get('card_num', None), } print('pay_type', pay_type) else: @@ -197,8 +198,37 @@ 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') + print('request.GET', request.GET) sale_type = request.GET.get('options[sale_type]', None) - pay_type = request.GET.get('options[pay_type]', None) + if member_type == 'nonmember': + pay_type = request.GET.get('options[pay_type]', None) + print('pay_type', pay_type) + elif member_type == 'member': + print('pay_type', request.GET.get('options[pay_type]')) + pay_type_dict = json.loads(request.GET.get('options[pay_type]')) + pay_type = { + 'select_price_type': pay_type_dict.get('select_price_type', None), + 'ticket_info': { + 'ticket_price': pay_type_dict.get('ticket_info', None).get('ticket_price', None), + 'have_service_fee': pay_type_dict.get('ticket_info', None).get('have_service_fee', None), + }, + 'ticket_quan_check': pay_type_dict.get('ticket_quan_check', None), + 'ticket_quan': { + 'ticket_quan_num': pay_type_dict.get('ticket_quan', None).get('ticket_quan_num', None), + 'ticket_quan_value': pay_type_dict.get('ticket_quan', None).get('ticket_quan_value', None), + }, + 'goods_quan_check': pay_type_dict.get('goods_quan_check', None), + 'goods_quan': { + 'goods_quan_num': pay_type_dict.get('goods_quan', None).get('goods_quan_num', None), + 'goods_quan_value': pay_type_dict.get('goods_quan', None).get('goods_quan_value', None), + 'goods_quan_type': pay_type_dict.get('goods_quan', None).get('goods_quan_type', None), + }, + 'card_num': pay_type_dict.get('card_num', None), + } + print('pay_type', pay_type) + else: + print('options[pay_type]参数错误') + 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) @@ -285,6 +315,11 @@ def send_request(request): # 卖品接口特殊处理去掉无用cate一层结构 if api == 'cinema/goods': handled_data = format_goods(handled_data) + # 记录会员卡号 + if api == 'card/regist': + card_num = handled_data['res']['data']['cardNum'] + print('记录会员卡号', card_num) + set_card(user_ip, env, pid, cid, card_num) # 记录Redis if redis_conn.exists(redis_key_api): redis_conn.delete(redis_key_api)