Files

84 lines
4.2 KiB
Python
Raw Permalink Normal View History

2026-09-22 17:13:32 +08:00
# 从 pydantic 导入 BaseModel(模型基类)和 ConfigDict(模型配置)
from pydantic import BaseModel, ConfigDict
# 导入日期类型,用于 birthday、enrollment_date 等字段
from datetime import date
# 导入 Optional,用于声明可选字段(可为 None)
from typing import Optional
# 从自定义枚举模块导入学生状态、性别、学历层次枚举
from enums import StudentStatusEnum, GenderEnum, EducationLevelEnum
# Optional 类型层面的声明,告诉 Pydantic:这个字段可以是 None
# ======================== 学生 ==========================
# 学生信息请求体:用于新增/修改学生时的入参校验
class stu_info_req(BaseModel):
student_id: str # 学号
student_name: str # 学生姓名
gender: GenderEnum # 性别(枚举:0=女,1=男)
id_card: str # 身份证号码
birthday: date # 出生日期
ethnicity: str # 民族
region_id: str # 籍贯地区编码
phone: str # 手机号码
graduation_school: str # 毕业学校
major: str # 就读专业
class_id: str # 所在班级
enrollment_date: date # 入学日期
graduation_date: date # 毕业日期
student_status: StudentStatusEnum # 学籍状态(枚举:0=在读,1=休学,2=退学,3=毕业,4=结业)
education_level: EducationLevelEnum # 学历层次(枚举:1=大专,2=本科,3=硕士,4=博士)
# 学生信息响应体:用于查询学生时的出参序列化
class stu_info_resp(BaseModel):
student_id: str # 学号
student_name: str # 学生姓名
gender: GenderEnum # 性别
id_card: str # 身份证号码
birthday: Optional[date] = None # 出生日期(可空)
ethnicity: Optional[str] = None # 民族(可空)
region_id: Optional[str] = None # 籍贯地区编码(可空)
phone: Optional[str] = None # 手机号码(可空)
graduation_school: Optional[str] = None # 毕业学校(可空)
major: str # 就读专业
class_id: str # 所在班级
enrollment_date: Optional[date] = None # 入学日期(可空)
graduation_date: Optional[date] = None # 毕业日期(可空)
student_status: StudentStatusEnum # 学籍状态
education_level: EducationLevelEnum # 学历层次
# 配置:允许从 ORM 对象属性中读取数据(配合 from_attributes=True)
model_config = ConfigDict(from_attributes=True)
# 学生信息增删改操作的统一响应体
class stu_info_add_resp(BaseModel):
code: int # 状态码,200 表示成功
message: Optional[str] = None # 提示信息(可空)
# ======================== 地区 ==========================
# 地区维度表 添加请求体:用于新增地区时的入参校验
class region_req(BaseModel):
code: str # 地区编码
province: str # 省 / 直辖市
city: str # 市
district: str # 区 / 县
# 地区维度表 修改请求体:所有字段均可选,code 不在修改范围内
class region_update_req(BaseModel):
province: Optional[str] = None # 省 / 直辖市(可选)
city: Optional[str] = None # 市(可选)
district: Optional[str] = None # 区 / 县(可选)
# 地区维度 响应体:用于查询地区时的出参序列化
class region_resp(BaseModel):
code: str # 地区编码
province: str # 省 / 直辖市
city: str # 市
district: str # 区 / 县
# 配置:允许从 ORM 对象属性中读取数据
model_config = ConfigDict(from_attributes=True)
# 地区增删改操作的统一响应体
class region_add_resp(BaseModel):
code: int # 状态码,200 表示成功
message: Optional[str] = None # 提示信息(可空)