You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.1 KiB
54 lines
2.1 KiB
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
|