Files
Principles_of_Database_System/Project/Service/func/cancel_order.py

42 lines
1.2 KiB
Python

from flask import request, redirect, url_for, g, flash
from .config import db
import pymysql
def cancel_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)
# 检查订单是否存在
check_order_sql = "SELECT ID FROM Orders WHERE ID = %s"
cursor.execute(check_order_sql, (order_id,))
order_exists = cursor.fetchone()
if not order_exists:
cursor.close()
conn.close()
return redirect(url_for("order_list"))
try:
# 删除对应的机票
delete_tickets_sql = "DELETE FROM Tickets WHERE OrderID = %s"
cursor.execute(delete_tickets_sql, (order_id,))
# 删除订单
delete_order_sql = "DELETE FROM Orders WHERE ID = %s"
cursor.execute(delete_order_sql, (order_id,))
conn.commit()
flash("订单取消成功", "success")
except Exception as e:
conn.rollback()
print(e)
flash(f"订单取消失败:{e}", "error")
finally:
cursor.close()
conn.close()
return redirect(url_for('order_list'))