66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
# 就业开放时间和offer下发时间校验
|
|
# 导入基类、过滤条件、校验器
|
|
from pydantic import BaseModel, Field, model_validator, field_validator
|
|
# 导入时间模块
|
|
from datetime import date, datetime
|
|
# 导入可选类型、列表类型
|
|
from typing import Optional, List
|
|
|
|
# ---------- 请求模型 ----------
|
|
|
|
# 修改就业记录
|
|
class EmploymentOfferUpdate(BaseModel):
|
|
offer_time: Optional[date] = None
|
|
|
|
|
|
# 修改就业基础
|
|
class EmploymentBaseUpdate(BaseModel):
|
|
employment_open_time: Optional[date] = None
|
|
job_time: Optional[date] = None
|
|
company_name: Optional[str] = None
|
|
salary: Optional[float] = None
|
|
|
|
# 添加就业基础
|
|
class EmploymentBaseCreate(BaseModel):
|
|
stu_id: int = Field(..., description="学生编号")
|
|
job_time: Optional[date] = Field(None, description="实际去就职时间")
|
|
employment_open_time: date = Field(description="就业开放时间:年-月-日")
|
|
company_name: str = Field(max_length=100, description="就业公司")
|
|
salary: float = Field(..., gt=0, description="就业薪资,保留2位小数")
|
|
|
|
# 添加就业记录
|
|
class EmploymentOfferCreate(BaseModel):
|
|
stu_id: int = Field(..., description="学生编号")
|
|
offer_id: int = Field(..., description="offer编号")
|
|
offer_time: date = Field(description="offer下发时间:年-月-日")
|
|
|
|
# 多条件组合查询
|
|
class EmploymentQuery(BaseModel):
|
|
stu_id: Optional[int] = None
|
|
company_name: Optional[str] = Field(None, max_length=100, description="公司名称")
|
|
min_salary: Optional[float] = None
|
|
max_salary: Optional[float] = None
|
|
|
|
|
|
# ---------- 响应模型 ----------
|
|
# 就业记录查询响应
|
|
class EmploymentOfferQueryResponse(BaseModel):
|
|
stu_id: int
|
|
offer_id: int
|
|
offer_time: date
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# 就业基础查询响应
|
|
class EmploymentBaseQueryResponse(BaseModel):
|
|
stu_id: int
|
|
employment_open_time: Optional[date] = None
|
|
job_time: Optional[date] = None
|
|
company_name: Optional[str] = None
|
|
salary: Optional[float] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|