from datetime import datetime from pydantic import BaseModel, ConfigDict, Field from pydantic.alias_generators import to_camel from pydantic_validation_decorator import NotBlank from typing import Optional from module_admin.annotation.pydantic_annotation import as_query class ContactModel(BaseModel): """ 联系人表对应pydantic模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) id: Optional[int] = Field(default=None, description='联系人ID') name: Optional[str] = Field(default=None, description='联系人姓名') company: Optional[str] = Field(default=None, description='单位名称') department: Optional[str] = Field(default=None, description='部门') position: Optional[str] = Field(default=None, description='职务') mobile: Optional[str] = Field(default=None, description='手机号') phone: Optional[str] = Field(default=None, description='座机') email: Optional[str] = Field(default=None, description='邮箱') address: Optional[str] = Field(default=None, description='快递地址') postal_code: Optional[str] = Field(default=None, description='邮编') memo: Optional[str] = Field(default=None, description='备注') create_by: Optional[str] = Field(default=None, description='创建者') create_time: Optional[datetime] = Field(default=None, description='创建时间') update_by: Optional[str] = Field(default=None, description='更新者') update_time: Optional[datetime] = Field(default=None, description='更新时间') del_flag: Optional[str] = Field(default='0', description='删除标志') @NotBlank(field_name='name', message='联系人姓名不能为空') def get_name(self): return self.name def validate_fields(self): self.get_name() class ContactQueryModel(ContactModel): """ 联系人不分页查询模型 """ pass @as_query class ContactPageQueryModel(ContactQueryModel): """ 联系人分页查询模型 """ page_num: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页记录数') class DeleteContactModel(BaseModel): """ 删除联系人模型 """ model_config = ConfigDict(alias_generator=to_camel) ids: str = Field(description='需要删除的联系人ID')