import iso8601 from flask import Blueprint, jsonify, request from flask_jwt_extended import get_jwt_identity, jwt_required from app import LogService from app.models import Station from app.models.ticket_lib import Ticket from app.models.train_lib import Train from app.station_manager import station_bp from presenter import StationPresenter from presenter.ticket import TicketPresenter from presenter.train import TrainPresenter from utils import create_response, StateCode query_bp = Blueprint('query', __name__) #控制层,接收前端的请求,调用服务层进行查询车次信息,封装结构并返回 @query_bp.route('/trains/query_train', methods=['GET']) def queryTrains(): # 查询车次方法 #获取起始站名 from_station = request.args.get('from') #获取终点站名 to_station = request.args.get('to') #获取日期并用iso8601解析 date = iso8601.parse_date(request.args.get('date')) #判断参数是否为空 if not from_station or not to_station or not date: return jsonify(create_response(StateCode.PARAMS_ERROR)), 400 # 查询车次 trains = Train.queryTrains(from_station, to_station, date) # 封装响应数据 trains_presenters = [TrainPresenter(train).as_dict() for train in trains] LogService.log() return jsonify(create_response(StateCode.SUCCESS, data=trains_presenters)), 200 @query_bp.route('/tickets', methods=['GET']) @jwt_required() def getTickets(): # 查询车票方法 current_user = get_jwt_identity() # 解码JWT得到用户ID tickets = Ticket.query.filter_by(passenger_id=current_user).all() tickets_presenters = [TicketPresenter(ticket).as_dict() for ticket in tickets] LogService.log() return jsonify(create_response(StateCode.SUCCESS, data=tickets_presenters)), 200 @station_bp.route('/stations', methods=['GET']) def queryStations(): # 查询站点方法 stations = Station.query.all() stations_presenters = [StationPresenter(station).as_dict() for station in stations] LogService.log() return jsonify(create_response(StateCode.SUCCESS, data=stations_presenters)), 200