优化楼栋

This commit is contained in:
aaron 2025-02-16 19:54:30 +08:00
parent 2e0ba7b904
commit 556c8773d6
2 changed files with 4 additions and 6 deletions

View File

@ -50,6 +50,8 @@ async def get_buildings(
elif community_id: elif community_id:
query = query.filter(CommunityBuildingDB.community_id == community_id) query = query.filter(CommunityBuildingDB.community_id == community_id)
query = query.order_by(CommunityBuildingDB.building_name.asc())
# 获取总数 # 获取总数
total = query.count() total = query.count()
@ -78,7 +80,7 @@ async def create_building(
# 检查是否已存在相同编号的楼栋 # 检查是否已存在相同编号的楼栋
exists = db.query(CommunityBuildingDB).filter( exists = db.query(CommunityBuildingDB).filter(
CommunityBuildingDB.community_id == building.community_id, CommunityBuildingDB.community_id == building.community_id,
CommunityBuildingDB.building_number == building.building_number CommunityBuildingDB.building_name == building.building_name
).first() ).first()
if exists: if exists:

View File

@ -12,29 +12,25 @@ class CommunityBuildingDB(Base):
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
community_id = Column(Integer, ForeignKey("communities.id"), index=True) community_id = Column(Integer, ForeignKey("communities.id"), index=True)
building_name = Column(String(50), nullable=False) # 楼栋名称,如"1号楼" building_name = Column(String(50), nullable=False) # 楼栋名称,如"1号楼"
building_number = Column(String(20), nullable=False) # 楼栋编号,如"A1"
create_time = Column(DateTime(timezone=True), server_default=func.now()) create_time = Column(DateTime(timezone=True), server_default=func.now())
update_time = Column(DateTime(timezone=True), onupdate=func.now()) update_time = Column(DateTime(timezone=True), onupdate=func.now())
class Config: class Config:
unique_together = [("community_id", "building_number")] unique_together = [("community_id", "building_name")]
# Pydantic 模型 # Pydantic 模型
class CommunityBuildingCreate(BaseModel): class CommunityBuildingCreate(BaseModel):
community_id: int community_id: int
building_name: str = Field(..., max_length=50) building_name: str = Field(..., max_length=50)
building_number: str = Field(..., max_length=20)
class CommunityBuildingUpdate(BaseModel): class CommunityBuildingUpdate(BaseModel):
building_name: Optional[str] = Field(None, max_length=50) building_name: Optional[str] = Field(None, max_length=50)
building_number: Optional[str] = Field(None, max_length=20)
class CommunityBuildingInfo(BaseModel): class CommunityBuildingInfo(BaseModel):
id: int id: int
community_id: int community_id: int
community_name: Optional[str] = None # 通过join查询获取的社区名称 community_name: Optional[str] = None # 通过join查询获取的社区名称
building_name: str building_name: str
building_number: str
class Config: class Config:
from_attributes = True from_attributes = True