from flask import render_template, request, redirect, url_for, g from .config import db import pymysql def order(): order_id = request.args.get('order_id') if not g.user: return redirect(url_for("login")) conn = pymysql.connect(**db) cursor = conn.cursor(pymysql.cursors.DictCursor) # 查询订单信息和航班信息 order_sql = """ SELECT o.*, f.*, d.Name as Departure_airport_name, a.Name as Arrival_airport_name FROM Orders o JOIN Tickets t ON o.ID = t.OrderID JOIN Flights f ON t.FlightID = f.ID JOIN Airports d ON f.Departure_airport = d.ID JOIN Airports a ON f.Arrival_airport = a.ID WHERE o.ID = %s """ cursor.execute(order_sql, (order_id,)) order_info = cursor.fetchone() # 如果订单信息不存在,返回订单列表页面 if not order_info: cursor.close() conn.close() return redirect(url_for("order_list")) # 查询乘客信息和票据信息 tickets_sql = """ SELECT t.*, p.Name, p.Phone_number FROM Tickets t JOIN Passengers p ON t.PassengerID = p.ID WHERE t.OrderID = %s """ cursor.execute(tickets_sql, (order_id,)) tickets = cursor.fetchall() seatClass2Chinses = { 'First Class': '头等舱', 'Business Class': '商务舱', 'Economy Class': '经济舱' } for ticket in tickets: ticket['Seat_class'] = seatClass2Chinses[ticket['Seat_class']] cursor.close() conn.close() total_price = sum(ticket['Price'] for ticket in tickets) return render_template('order.html', order=order_info, tickets=tickets, total_price=total_price, username=g.name)