Files
shanxia2.0/backend/app/schemas/pl/transport_address.py
T
2026-07-04 08:21:49 +08:00

60 lines
2.5 KiB
Python

"""运输通用地址库 Schema"""
from datetime import datetime
from decimal import Decimal
from typing import Optional
from pydantic import BaseModel, Field, model_validator
class TransportAddressBase(BaseModel):
address_name: str = Field(..., max_length=200, alias="addressName", description="地址名称")
full_address: str = Field(..., max_length=500, alias="fullAddress", description="详细地址")
lng: Decimal = Field(..., description="经度")
lat: Decimal = Field(..., description="纬度")
contact_name: Optional[str] = Field(default=None, max_length=100, alias="contactName", description="联系人")
contact_phone: Optional[str] = Field(default=None, max_length=32, alias="contactPhone", description="联系电话")
status: str = Field(default="1", max_length=1, description="状态 1-启用 0-停用")
remark: Optional[str] = Field(default=None, description="备注")
model_config = {"populate_by_name": True}
class TransportAddressCreate(TransportAddressBase):
@model_validator(mode="after")
def validate_coordinates(self) -> "TransportAddressCreate":
if self.lng is None or self.lat is None:
raise ValueError("请通过地图选点填写经纬度")
return self
class TransportAddressUpdate(BaseModel):
address_name: Optional[str] = Field(default=None, max_length=200, alias="addressName")
full_address: Optional[str] = Field(default=None, max_length=500, alias="fullAddress")
lng: Optional[Decimal] = None
lat: Optional[Decimal] = None
contact_name: Optional[str] = Field(default=None, max_length=100, alias="contactName")
contact_phone: Optional[str] = Field(default=None, max_length=32, alias="contactPhone")
status: Optional[str] = Field(default=None, max_length=1)
remark: Optional[str] = None
model_config = {"populate_by_name": True}
class TransportAddressRead(TransportAddressBase):
id: str
tenant_no: str = Field(alias="tenantNo")
order_num: Optional[int] = Field(default=None, alias="orderNum")
create_by: Optional[str] = Field(default=None, alias="createBy")
create_dept_id: Optional[str] = Field(default=None, alias="createDeptId")
create_time: datetime = Field(alias="createTime")
update_by: Optional[str] = Field(default=None, alias="updateBy")
update_time: datetime = Field(alias="updateTime")
del_flag: int = Field(default=0, alias="delFlag")
model_config = {"from_attributes": True, "populate_by_name": True}
class TransportAddressListResponse(BaseModel):
total: int
list: list[TransportAddressRead]