173 lines
5.8 KiB
Python
173 lines
5.8 KiB
Python
|
|
from typing import List
|
|||
|
|
|
|||
|
|
from pydantic import BaseModel, Field
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 寝室绑定请求模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BindRoomRequest(BaseModel):
|
|||
|
|
"""绑定寝室请求模型"""
|
|||
|
|
|
|||
|
|
room_id: str = Field(..., description="寝室ID")
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 寝室绑定响应模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BindRoomResponse(BaseModel):
|
|||
|
|
"""绑定寝室响应模型"""
|
|||
|
|
|
|||
|
|
success: bool = Field(..., description="是否绑定成功")
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 楼栋信息模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BuildingInfo(BaseModel):
|
|||
|
|
"""楼栋信息"""
|
|||
|
|
|
|||
|
|
code: str = Field(..., description="楼栋代码")
|
|||
|
|
name: str = Field(..., description="楼栋名称")
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 楼层信息模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class FloorInfo(BaseModel):
|
|||
|
|
"""楼层信息"""
|
|||
|
|
|
|||
|
|
code: str = Field(..., description="楼层代码")
|
|||
|
|
name: str = Field(..., description="楼层名称")
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 房间信息模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class RoomInfo(BaseModel):
|
|||
|
|
"""房间信息"""
|
|||
|
|
|
|||
|
|
code: str = Field(..., description="房间代码")
|
|||
|
|
name: str = Field(..., description="房间名称")
|
|||
|
|
|
|||
|
|
|
|||
|
|
###############################################################
|
|||
|
|
# * 楼栋-楼层-房间信息模型 *#
|
|||
|
|
###############################################################
|
|||
|
|
class CacheFloorData(BaseModel):
|
|||
|
|
"""缓存的楼层信息"""
|
|||
|
|
|
|||
|
|
code: str = Field(..., description="楼层代码")
|
|||
|
|
name: str = Field(..., description="楼层名称")
|
|||
|
|
rooms: List[RoomInfo] = Field(..., description="房间列表")
|
|||
|
|
|
|||
|
|
|
|||
|
|
class CacheBuildingData(BaseModel):
|
|||
|
|
"""缓存的楼栋信息"""
|
|||
|
|
|
|||
|
|
code: str = Field(..., description="楼栋代码")
|
|||
|
|
name: str = Field(..., description="楼栋名称")
|
|||
|
|
floors: List[CacheFloorData] = Field(..., description="楼层列表")
|
|||
|
|
|
|||
|
|
|
|||
|
|
class CacheRoomsData(BaseModel):
|
|||
|
|
"""缓存的寝室信息"""
|
|||
|
|
|
|||
|
|
datetime: str = Field(..., description="数据更新时间,格式:YYYY-MM-DD HH:MM:SS")
|
|||
|
|
data: List[CacheBuildingData] = Field(..., description="楼栋列表")
|
|||
|
|
|
|||
|
|
|
|||
|
|
class RoomBindingInfo(BaseModel):
|
|||
|
|
"""房间绑定信息"""
|
|||
|
|
|
|||
|
|
building: BuildingInfo
|
|||
|
|
floor: FloorInfo
|
|||
|
|
room: RoomInfo
|
|||
|
|
room_id: str = Field(..., description="完整房间ID")
|
|||
|
|
display_text: str = Field(
|
|||
|
|
..., description="显示文本,如:北苑11号学生公寓/11-6层/11-627"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 获取当前宿舍响应模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class CurrentRoomResponse(BaseModel):
|
|||
|
|
"""获取当前宿舍响应模型"""
|
|||
|
|
|
|||
|
|
room_code: str = Field(..., description="房间代码")
|
|||
|
|
display_text: str = Field(
|
|||
|
|
..., description="显示文本,如:北苑11号学生公寓/11-6层/11-627"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 强制刷新响应模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class ForceRefreshResponse(BaseModel):
|
|||
|
|
"""强制刷新响应模型"""
|
|||
|
|
|
|||
|
|
success: bool = Field(..., description="是否刷新成功")
|
|||
|
|
message: str = Field(..., description="响应消息")
|
|||
|
|
remaining_cooldown: float = Field(
|
|||
|
|
default=0.0, description="剩余冷却时间(秒),0表示无冷却"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 楼层房间查询响应模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class FloorRoomsResponse(BaseModel):
|
|||
|
|
"""楼层房间查询响应模型"""
|
|||
|
|
|
|||
|
|
floor_code: str = Field(..., description="楼层代码")
|
|||
|
|
floor_name: str = Field(..., description="楼层名称")
|
|||
|
|
building_code: str = Field(..., description="所属楼栋代码")
|
|||
|
|
rooms: List[RoomInfo] = Field(..., description="房间列表")
|
|||
|
|
room_count: int = Field(..., description="房间数量")
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 房间详情查询响应模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class RoomDetailResponse(BaseModel):
|
|||
|
|
"""房间详情查询响应模型"""
|
|||
|
|
|
|||
|
|
room_code: str = Field(..., description="房间代码")
|
|||
|
|
room_name: str = Field(..., description="房间名称")
|
|||
|
|
floor_code: str = Field(..., description="所属楼层代码")
|
|||
|
|
floor_name: str = Field(..., description="所属楼层名称")
|
|||
|
|
building_code: str = Field(..., description="所属楼栋代码")
|
|||
|
|
building_name: str = Field(..., description="所属楼栋名称")
|
|||
|
|
display_text: str = Field(..., description="完整显示文本")
|
|||
|
|
|
|||
|
|
|
|||
|
|
##############################################################
|
|||
|
|
# * 楼栋列表响应模型 *#
|
|||
|
|
##############################################################
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BuildingListResponse(BaseModel):
|
|||
|
|
"""楼栋列表响应模型"""
|
|||
|
|
|
|||
|
|
buildings: List[BuildingInfo] = Field(..., description="楼栋列表")
|
|||
|
|
building_count: int = Field(..., description="楼栋数量")
|
|||
|
|
datetime: str = Field(..., description="数据更新时间")
|