84 lines
4.2 KiB
Python
84 lines
4.2 KiB
Python
# 从 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 # 提示信息(可空) |