56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
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)
|