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.
129 lines
3.6 KiB
129 lines
3.6 KiB
from sqlalchemy import Column, String, Integer, DateTime, Numeric, Text
|
|
from database import Base
|
|
|
|
# ===== 表模型 =====
|
|
|
|
class Customer(Base):
|
|
__tablename__ = "customer"
|
|
customer_id = Column(Integer, primary_key=True)
|
|
name = Column(String)
|
|
id_card = Column(Text)
|
|
phone = Column(String)
|
|
register_time = Column(DateTime)
|
|
|
|
|
|
class CustomerPreference(Base):
|
|
__tablename__ = "customer_preference"
|
|
preference_id = Column(Integer, primary_key=True)
|
|
customer_id = Column(Integer)
|
|
bed_type_prefer = Column(String)
|
|
orientation_prefer = Column(String)
|
|
floor_prefer = Column(String)
|
|
smoking_prefer = Column(String)
|
|
noise_prefer = Column(String)
|
|
facility_prefer = Column(String)
|
|
temperature_prefer = Column(String)
|
|
cleaning_time_prefer = Column(String)
|
|
meal_prefer = Column(String)
|
|
pet_prefer = Column(String)
|
|
|
|
|
|
class RoomType(Base):
|
|
__tablename__ = "roomtype"
|
|
type_id = Column(Integer, primary_key=True)
|
|
type_name = Column(String)
|
|
bed_type = Column(String)
|
|
price = Column(Numeric)
|
|
max_people = Column(Integer)
|
|
|
|
|
|
class Employee(Base):
|
|
__tablename__ = "employee"
|
|
employee_id = Column(Integer, primary_key=True)
|
|
name = Column(String)
|
|
role = Column(String)
|
|
permission = Column(String)
|
|
phone = Column(String)
|
|
account = Column(String)
|
|
password = Column(String)
|
|
|
|
|
|
class Order(Base):
|
|
__tablename__ = "order"
|
|
order_id = Column(String, primary_key=True)
|
|
customer_id = Column(Integer)
|
|
checkin_date = Column(DateTime)
|
|
checkout_date = Column(DateTime)
|
|
status = Column(String)
|
|
create_time = Column(DateTime)
|
|
order_channel = Column(String)
|
|
|
|
|
|
class Bill(Base):
|
|
__tablename__ = "bill"
|
|
bill_id = Column(String, primary_key=True)
|
|
order_id = Column(String)
|
|
room_fee = Column(Numeric)
|
|
additional_fee = Column(Numeric)
|
|
total_amount = Column(Numeric)
|
|
payment_method = Column(String)
|
|
payment_time = Column(DateTime)
|
|
operator_id = Column(Integer)
|
|
|
|
|
|
class Room(Base):
|
|
__tablename__ = "room"
|
|
room_id = Column(Integer, primary_key=True)
|
|
room_type_id = Column(Integer)
|
|
floor = Column(Integer)
|
|
status = Column(String)
|
|
facility = Column(String)
|
|
building_area = Column(Numeric)
|
|
usable_area = Column(Numeric)
|
|
orientation = Column(String)
|
|
floor_position = Column(String)
|
|
window_type = Column(String)
|
|
room_layout = Column(String)
|
|
|
|
|
|
class OrderRoom(Base):
|
|
__tablename__ = "order_room"
|
|
order_room_id = Column(Integer, primary_key=True)
|
|
order_id = Column(String)
|
|
room_id = Column(Integer)
|
|
room_fee = Column(Numeric)
|
|
|
|
|
|
# ===== 视图模型 =====
|
|
|
|
class GuestSummary(Base):
|
|
__tablename__ = "v_guest_stay_summary"
|
|
order_id = Column(String, primary_key=True)
|
|
guest_name = Column(String)
|
|
phone = Column(String)
|
|
room_number = Column(Integer)
|
|
room_type = Column(String)
|
|
orientation = Column(String)
|
|
checkin_date = Column(DateTime)
|
|
order_status = Column(String)
|
|
all_preferences = Column(Text)
|
|
|
|
|
|
class HousekeepingList(Base):
|
|
__tablename__ = "v_housekeeping_list"
|
|
room_number = Column(Integer, primary_key=True)
|
|
floor = Column(Integer)
|
|
orientation = Column(String)
|
|
type_name = Column(String)
|
|
booking_status = Column(String)
|
|
guest_name = Column(String)
|
|
specific_instruction = Column(Text)
|
|
|
|
|
|
class RoomInventoryStats(Base):
|
|
__tablename__ = "v_room_inventory_stats"
|
|
orientation = Column(String, primary_key=True)
|
|
total_rooms = Column(Integer)
|
|
available_types = Column(Text)
|
|
avg_price = Column(Numeric)
|
|
avg_usable_area = Column(Numeric) |