修改了座位等级中文问题、空订单问题

This commit is contained in:
Jingfan Ke 2024-06-14 18:57:36 +08:00
parent 963a80a670
commit e435ae4035
16 changed files with 66 additions and 15 deletions

View File

@ -1,9 +1,16 @@
db = { db_service = {
'host':'localhost', 'host':'localhost',
'user':'managerAgent', 'user':'managerAgent',
'password':'password123', 'password':'password123',
'database':'ServiceDatabase' 'database':'ServiceDatabase'
} }
db_manager = {
'host':'localhost',
'user':'managerAgent',
'password':'password123',
'database':'ManagerDatabase'
}
SECRET_KEY = 'ILOVEDATABASETECH' SECRET_KEY = 'ILOVEDATABASETECH'

View File

@ -1,5 +1,5 @@
from flask import render_template, request, g, redirect, url_for, session, jsonify from flask import render_template, request, g, redirect, url_for, session, jsonify
from .config import db from .config import db_service
import pymysql import pymysql
import csv import csv
import io import io
@ -11,7 +11,7 @@ def index():
flightID = request.args.get('flightID') flightID = request.args.get('flightID')
if flightID: if flightID:
conn = pymysql.connect(**db) conn = pymysql.connect(**db_service)
cursor = conn.cursor(pymysql.cursors.DictCursor) cursor = conn.cursor(pymysql.cursors.DictCursor)
search_sql = """SELECT * FROM Flights WHERE ID = %s""" search_sql = """SELECT * FROM Flights WHERE ID = %s"""
@ -41,7 +41,7 @@ def modify():
status = request.form.get('status', '未知') status = request.form.get('status', '未知')
conn = pymysql.connect(**db) conn = pymysql.connect(**db_service)
cursor = conn.cursor(pymysql.cursors.DictCursor) cursor = conn.cursor(pymysql.cursors.DictCursor)
try: try:
@ -55,7 +55,8 @@ def modify():
# 检查余座数是否为负值 # 检查余座数是否为负值
if new_first_class_seats < 0 or new_business_class_seats < 0 or new_economy_class_seats < 0: if new_first_class_seats < 0 or new_business_class_seats < 0 or new_economy_class_seats < 0:
return jsonify({'message': '座位变化后余座数不能为负值'}), 400 flash('座位变化后余座数不能为负值', 'error')
return redirect(url_for('index'))
# 更新座位数和价格 # 更新座位数和价格
update_sql = """ update_sql = """
@ -67,22 +68,23 @@ def modify():
cursor.execute(update_sql, (new_first_class_seats, new_business_class_seats, new_economy_class_seats, cursor.execute(update_sql, (new_first_class_seats, new_business_class_seats, new_economy_class_seats,
first_class_price, business_class_price, economy_class_price, status, flight_id)) first_class_price, business_class_price, economy_class_price, status, flight_id))
conn.commit() conn.commit()
flash('座位数、价格和状态更新成功', 'success')
except Exception as e: except Exception as e:
print(e) print(e)
conn.rollback() conn.rollback()
return jsonify({'message': '数据库错误,请稍后再试'}), 500 flash(f'数据库错误:{e}', 'error')
finally: finally:
cursor.close() cursor.close()
conn.close() conn.close()
return jsonify({'message': '座位数、价格和状态更新成功'}), 200 return redirect(url_for('index'))
def delete_flight(): def delete_flight():
if request.method == 'DELETE': if request.method == 'DELETE':
flight_id = request.args.get('flightID') flight_id = request.args.get('flightID')
conn = pymysql.connect(**db) conn = pymysql.connect(**db_service)
cursor = conn.cursor() cursor = conn.cursor()
try: try:
@ -103,7 +105,7 @@ from flask import flash, redirect, url_for, jsonify, request
import pymysql import pymysql
import csv import csv
import io import io
from .config import db from .config import db_service
def upload_csv(): def upload_csv():
if request.method == 'POST': if request.method == 'POST':
@ -112,7 +114,7 @@ def upload_csv():
flash('没有文件上传', 'error') flash('没有文件上传', 'error')
return redirect(url_for('index')) return redirect(url_for('index'))
conn = pymysql.connect(**db) conn = pymysql.connect(**db_service)
cursor = conn.cursor() cursor = conn.cursor()
try: try:

View File

@ -1,10 +1,10 @@
from flask import request, jsonify, session, url_for, render_template, redirect from flask import request, jsonify, session, url_for, render_template, redirect
from .config import db from .config import db_manager
import pymysql import pymysql
def connect(managerID, encrypted_password): def connect(managerID, encrypted_password):
conn = pymysql.connect(**db) conn = pymysql.connect(**db_manager)
cursor = conn.cursor(pymysql.cursors.DictCursor) cursor = conn.cursor(pymysql.cursors.DictCursor)
args = (managerID, encrypted_password) args = (managerID, encrypted_password)
verify_sql = "SELECT COUNT(*) FROM Managers WHERE ID = %s AND `Password` = %s;" verify_sql = "SELECT COUNT(*) FROM Managers WHERE ID = %s AND `Password` = %s;"

View File

@ -35,6 +35,10 @@ def book():
passenger[key] = request.form.get(f'passengers[{i}][{key}]') passenger[key] = request.form.get(f'passengers[{i}][{key}]')
passengers.append(passenger) passengers.append(passenger)
if not passengers:
flash("请至少添加一位乘客", "error")
return redirect(url_for('index'))
conn = pymysql.connect(**db) conn = pymysql.connect(**db)
cursor = conn.cursor() cursor = conn.cursor()
@ -85,7 +89,7 @@ def book():
conn.rollback() conn.rollback()
print(e) print(e)
flash("订票失败", "error") flash("订票失败", "error")
return redirect(url_for('search')) return redirect(url_for('index'))
finally: finally:
cursor.close() cursor.close()

View File

@ -12,7 +12,7 @@ def verify_user(cursor: Cursor, phone_number: str, password: str) -> str:
record = cursor.fetchone() record = cursor.fetchone()
if not record: if not record:
return "NO_USER" return "NO_USER"
if record[0] != password: if record['Password'] != password:
return "WRONG_PASSWORD" return "WRONG_PASSWORD"
return "USER_VERIFIED" return "USER_VERIFIED"

View File

@ -38,6 +38,14 @@ def order():
""" """
cursor.execute(tickets_sql, (order_id,)) cursor.execute(tickets_sql, (order_id,))
tickets = cursor.fetchall() tickets = cursor.fetchall()
seatClass2Chinses = {
'First Class': '头等舱',
'Business Class': '商务舱',
'Economy Class': '经济舱'
}
for ticket in tickets:
ticket['Seat_class'] = seatClass2Chinses[ticket['Seat_class']]
cursor.close() cursor.close()
conn.close() conn.close()

View File

@ -1,4 +1,4 @@
from flask import render_template, request, g, abort, redirect, url_for from flask import render_template, request, g, abort, redirect, url_for, flash
from .config import db from .config import db
from .utils import get_cities from .utils import get_cities
import pymysql import pymysql
@ -13,6 +13,10 @@ def search():
departure_date = request.args.get('departure-date') departure_date = request.args.get('departure-date')
passengers = int(request.args.get('passengers', 1)) passengers = int(request.args.get('passengers', 1))
if not departure_city or not destination_city or not departure_date or not passengers:
flash("请填写所有查询条件", "error")
return render_template('search.html', cities=get_cities(), flights=[], username=g.name)
# Date validation # Date validation
try: try:
departure_date_obj = datetime.datetime.strptime(departure_date, '%Y-%m-%d').date() departure_date_obj = datetime.datetime.strptime(departure_date, '%Y-%m-%d').date()

View File

@ -7,6 +7,19 @@
<link rel="stylesheet" href="{{ url_for('static', filename='css/index.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/index.css') }}">
<script src="{{ url_for('static', filename='js/index.js') }}" defer></script> <script src="{{ url_for('static', filename='js/index.js') }}" defer></script>
<script src="https://cdn.bootcss.com/blueimp-md5/2.12.0/js/md5.min.js"></script> <script src="https://cdn.bootcss.com/blueimp-md5/2.12.0/js/md5.min.js"></script>
<script>
window.onload = function() {
{% with messages = get_flashed_messages() %}
{% if messages %}
var message = "";
{% for msg in messages %}
message += "{{ msg }}\n";
{% endfor %}
alert(message);
{% endif %}
{% endwith %}
};
</script>
</head> </head>
<body> <body>
<header> <header>

View File

@ -5,6 +5,19 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>航班搜索结果</title> <title>航班搜索结果</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/search.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/search.css') }}">
<script>
window.onload = function() {
{% with messages = get_flashed_messages() %}
{% if messages %}
var message = "";
{% for msg in messages %}
message += "{{ msg }}\n";
{% endfor %}
alert(message);
{% endif %}
{% endwith %}
};
</script>
</head> </head>
<body> <body>
<header> <header>