From b873d44561159686944872bb223c68b95c28ad75 Mon Sep 17 00:00:00 2001 From: RogerWork Date: Thu, 7 Nov 2024 16:42:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=A5=A8=E9=83=A8=E5=88=86=E5=85=88?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dspt_api/util/general/handle_seat.py | 38 +++++++++++++++++++++------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/dspt_api/util/general/handle_seat.py b/dspt_api/util/general/handle_seat.py index 28e41ea..4a3cca9 100644 --- a/dspt_api/util/general/handle_seat.py +++ b/dspt_api/util/general/handle_seat.py @@ -46,8 +46,9 @@ def general_seat_params(pay_type, data): request_api_seat = {'name': '3.1.8 获取某场次座位状态', 'path': 'play/seat-status'} redis_key_api_seat = f'{redis_key_prefix}_{request_api_seat["path"]}' result_seat, _format_seat, seat_price_from_seat, _timestamp_seat = get_data_from_redis(redis_key_api_seat) - seat_id_list = [{'seat_id': seat['cineSeatId'], 'ticket_discount': seat['ticketDiscount'], - 'service_discount': seat['serviceDiscount']} for seat in seat_price_from_seat] + print('seat_price_from_seat', seat_price_from_seat) + seat_id_list = [{'seat_id': seat['cineSeatId'], 'ticket_discount': seat.get('ticketDiscount', 0), + 'service_discount': seat.get('serviceDiscount', 0)} for seat in seat_price_from_seat] # 计算最大时间戳 last_timestamp = max([_timestamp_lock, _timestamp_play, _timestamp_config, _timestamp_seat]) @@ -68,46 +69,65 @@ def general_seat_params(pay_type, data): -- 当影院合作商是合作商自主定价时(partner_type = 2) price:真实的票价[不含服务费、不含手续费] user_real_pay_price:用户真实支付影票金额[不含手续费、服务费] 需要扣减 ticket_discount_price - service_fee:真实的服务费 需要扣减 service_fee_discount_price + service_fee:真实的服务费 ticket_discount_price:影票优惠金额,仅做记录 service_fee_discount_price:服务费优惠金额,仅做记录 测试影院: 测试影院3.166 乐影网 电商平台补贴 是否允许传递优惠金额 否 影票价格控制 是 卖品价格控制 是 测试影院3.166 淘票票 电商平台补贴 是否允许传递优惠金额 是 影票价格控制 否 卖品价格控制 否 - 测试影院3.166 美团猫眼 电商平台补贴 是否允许传递优惠金额 否 影票价格控制 是 卖品价格控制 是 + 测试影院3.166 美团猫眼 电商平台补贴 是否允许传递优惠金额 是 影票价格控制 是 卖品价格控制 是 测试影院3.166 合作商补贴 合作商补贴 是否允许传递优惠金额 否 影票价格控制 否 卖品价格控制 否 """ seat_list = [] - ticket_cash = 0 + ticket_cash = 0 # 统计cash字段用 for seat_info in seat_id_list: + seat = [seat_info["seat_id"], handle_fee] ticket_discount = seat_info["ticket_discount"] service_discount = seat_info["service_discount"] if area_info is not False: + # 查找座位对应的区域价格 for area_seat_info in area_info: if area_seat_info['seatId'] == int(seat_info['seat_id']): + # 获取price字段值 price = Decimal(area_seat_info["areaPrice"]).quantize(Decimal('0.00'), ROUND_HALF_UP) + seat.append(price) + seat.append('0') + seat.append(area_seat_info["areaServiceFee"]) # if partner_type == '2': # 合作商定价 # price -= Decimal(area_seat_info["areaServiceFee"]).quantize(Decimal('0.00'), ROUND_HALF_UP) + # 计算用户实际支付的值 real_pay = Decimal(area_seat_info["areaPrice"]).quantize(Decimal('0.00'), ROUND_HALF_UP) real_pay -= Decimal(area_seat_info["areaServiceFee"]).quantize(Decimal('0.00'), ROUND_HALF_UP) + # 处理影票和服务费折扣 if ticket_discount != 0: real_pay -= Decimal(ticket_discount) + seat.append(str(ticket_discount)) if service_discount != 0: if partner_type == '2': real_pay -= Decimal(service_discount) - seat = f'{seat_info["seat_id"]}-{handle_fee}-{str(price)}-{str(real_pay)}-{area_seat_info["areaServiceFee"]}{f"-{str(ticket_discount)}" if ticket_discount != 0 else ""}{f"-{str(service_discount)}" if service_discount != 0 else ""}' - seat_list.append(seat) + seat.append(str(service_discount)) + else: + seat.append(str(service_discount)) + seat[3] = str(real_pay) + # seat = f'{seat_info["seat_id"]}-{handle_fee}-{str(price)}-{str(real_pay)}-{area_seat_info["areaServiceFee"]}{f"-{str(ticket_discount)}" if ticket_discount != 0 else ""}{f"-{str(service_discount)}" if service_discount != 0 else ""}' + seat_list.append('-'.join(seat)) ticket_cash += real_pay else: + seat.append(market_price) + seat.append('0') + seat.append('0.00') real_pay = Decimal(market_price).quantize(Decimal('0.00'), ROUND_HALF_UP) if ticket_discount != 0: real_pay -= Decimal(ticket_discount) + seat.append(str(ticket_discount)) if service_discount != 0: real_pay -= Decimal(service_discount) - seat = f'{seat_info["seat_id"]}-{handle_fee}-{market_price}-{str(real_pay)}-0{f"-{str(ticket_discount)}" if ticket_discount != 0 else ""}{f"-{str(service_discount)}" if service_discount != 0 else ""}' - seat_list.append(seat) + seat.append(str(service_discount)) + seat[3] = str(real_pay) + # seat = f'{seat_info["seat_id"]}-{handle_fee}-{market_price}-{str(real_pay)}-0{f"-{str(ticket_discount)}" if ticket_discount != 0 else ""}{f"-{str(service_discount)}" if service_discount != 0 else ""}' + seat_list.append('-'.join(seat)) ticket_cash += real_pay return True, ','.join(seat_list), ticket_cash, play_id, play_update_time, lock_flag, last_timestamp