Skip to content

Commit

Permalink
feat: add check reserve menu
Browse files Browse the repository at this point in the history
  • Loading branch information
Thungghuan committed Oct 8, 2022
1 parent ca167d2 commit 39bfc47
Show file tree
Hide file tree
Showing 4 changed files with 152 additions and 28 deletions.
14 changes: 14 additions & 0 deletions bus.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,20 @@ def ticket_detail(self, ticket_id):

return result

def cancel_ticket(self, ticket_id):
url = "{}/commuteOrder/cancelTicket?id={}".format(self.base_url, ticket_id)

result = self.session.get(url).json()

return result

def delete_ticket(self, ticket_id):
url = "{}/commuteOrder/removeOrderCanal?id={}".format(self.base_url, ticket_id)

result = self.session.get(url).json()

return result

def get_bus_list(self, start_campus, end_campus, date):
url = self.base_url + "/commuteOrder/frequencyChoice?PageNum=0&PageSize=0"

Expand Down
129 changes: 129 additions & 0 deletions cli/check.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
from enum import Enum
import questionary
from bus import Bus


class CheckState(Enum):
LIST = 1
DETAIL = 2
CANCEL = 3
DELETE = 4
QUIT = 5


class CheckReserveMenu:
state = 0
ticket = {}

def __init__(self, bus: Bus) -> None:
self.bus = bus
self.change_state(CheckState.LIST)

def run(self):
while self.state != CheckState.QUIT:
match self.state:
case CheckState.LIST:
self.list_tickets()

case CheckState.DETAIL:
self.get_ticket_detail()

case CheckState.CANCEL:
self.cancel_ticket()

case CheckState.DELETE:
self.delete_ticket()

def change_state(self, state: CheckState):
self.state = state

def list_tickets(self):
tickets = self.bus.list_reserve(status=1)["list"]
ticket_choices = []

for idx, bus in enumerate(tickets):
ticket_choices.append(
{
"name": "{}. {} {}".format(
idx + 1, bus["ruteName"], bus["startTime"]
),
"value": idx,
}
)

if len(ticket_choices) > 0:
choice = questionary.select(
"请选择班次:",
choices=ticket_choices,
).ask()

self.ticket = tickets[choice]
self.change_state(CheckState.DETAIL)

else:
print("没有找到预约的校巴哦")
self.change_state(CheckState.QUIT)

def get_ticket_detail(self):
result = self.bus.ticket_detail(self.ticket["id"])["data"]

print("校巴完整信息:")
print("ID: {}".format(result["id"]))
print("日期: {}".format(result["dateDeparture"]))
print(
"时间: {}-{}".format(
result["startTime"],
result["endTime"],
)
)
print(
"起点-终点: {}".format(
result["ruteName"],
)
)
print("车牌:{}".format(result["licensePlate"]))
print("司机:{}".format(result["driverName"]))

choices = [
{"name": "返回", "value": CheckState.LIST},
{"name": "取消本班次", "value": CheckState.CANCEL},
]
next_state = questionary.select("请选择操作", choices=choices).ask()
self.change_state(next_state)

def cancel_ticket(self):
choices = [
{"name": "是", "value": True},
{"name": "否", "value": False},
]
is_confirm = questionary.select(
"是否取消 {} {}".format(self.ticket["ruteName"], self.ticket["startTime"]),
choices=choices,
).ask()

if is_confirm:
result = self.bus.cancel_ticket(self.ticket["id"])

if result["code"] == 200:
print("取消车票成功")
self.change_state(CheckState.DELETE)
else:
print("取消车票失败,请重试")
self.change_state(CheckState.LIST)
else:
self.change_state(CheckState.LIST)

def delete_ticket(self):
choices = [
{"name": "是", "value": True},
{"name": "否", "value": False},
]
is_confirm = questionary.select(
"是否删除记录 {} {}".format(self.ticket["ruteName"], self.ticket["startTime"]),
choices=choices,
).ask()

if is_confirm:
self.bus.delete_ticket(self.ticket["id"])

self.change_state(CheckState.QUIT)
31 changes: 6 additions & 25 deletions cli/main.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import questionary
from cli.check import CheckReserveMenu
from cli.console import reset_console
from cli.reserve import ReserveBus
from cli.reserve import ReserveBusMenu
from cli.token import load_token
from bus import Bus
from enum import Enum
Expand Down Expand Up @@ -65,35 +66,15 @@ def change_state(self, state: MenuState):
self.state = state

def reserve_bus(self):
reserve_menu = ReserveBus(self.bus)

reserve_menu = ReserveBusMenu(self.bus)
result = reserve_menu.run()

if result == 0:
self.back_main_menu()

def check_reserve(self):
tickets = self.bus.list_reserve(status=1)["list"]
ticket_choices = []

for idx, bus in enumerate(tickets):
ticket_choices.append(
{
"name": "{}. {} {}".format(
idx + 1, bus["ruteName"], bus["startTime"]
),
"value": idx,
}
)

if len(ticket_choices) > 0:
choice = questionary.select(
"请选择班次:",
choices=ticket_choices,
).ask()

print(choice)
else:
print("没有找到预约的校巴哦")
check_reserve_menu = CheckReserveMenu(self.bus)
check_reserve_menu.run()

self.back_main_menu()

Expand Down
6 changes: 3 additions & 3 deletions cli/reserve.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ class ReserveState(Enum):
QUIT = 7


class ReserveBus:
class ReserveBusMenu:
state = 0
default_date = datetime.today().strftime("%Y/%m/%d")
start_campus = ""
end_campus = ""
Expand All @@ -23,7 +24,6 @@ class ReserveBus:

def __init__(self, bus: Bus) -> None:
self.bus = bus
self.state = ReserveState.START_CAMPUS
self.change_state(ReserveState.START_CAMPUS)

def run(self):
Expand Down Expand Up @@ -124,7 +124,7 @@ def set_time(self):
self.change_state(ReserveState.DATE)
else:
print("校巴完整信息:")
print("ID: {}".format(bus_list[bus_idx]["ids"]))
print("IDs: {}".format(bus_list[bus_idx]["ids"]))
print("日期: {}".format(bus_list[bus_idx]["dateDeparture"]))
print(
"时间: {}-{}".format(
Expand Down

0 comments on commit 39bfc47

Please sign in to comment.