diff --git a/PythonProject/api/employment_api.py b/PythonProject/api/employment_api.py index 22095c7..58a14d3 100644 --- a/PythonProject/api/employment_api.py +++ b/PythonProject/api/employment_api.py @@ -2,28 +2,24 @@ from fastapi import APIRouter,Depends,HTTPException from dao import employment_dao from dao.employment_dao import get_employment_dao -from schema.employment_schema import EmploymentRequest,EmploymentResponse +from schema.employment_schema import EmploymentResponse from model.all_model import ClassManagement,Employment_info from util.database import get_db - -emp_api = APIRouter() -@emp_api.get('employment/students/{stu_id}',response_model=EmploymentResponse,summary='获取学生就业信息') +emp_api = APIRouter(tags=['学生就业管理系统']) +@emp_api.get('/employment/students/{stu_id}',response_model=EmploymentResponse,summary='获取学生就业信息') def get_emp_info1(stu_id: int,db=Depends(get_db)): - try: - if stu_id: - return employment_dao.get_employment_info() - except: - raise HTTPException(status_code=404, detail='该学生就业信息不存在') + if stu_id: + return employment_dao.get_employment_dao(stu_id=stu_id,db=db) + raise HTTPException(status_code=404, detail='该学生就业信息不存在') -@emp_api.get('employment/class/{class_id}',summary='获取班级学生就业信息') +@emp_api.get('/employment/class/{class_id}',response_model=EmploymentResponse,summary='获取班级学生就业信息') def get_emp_info2(class_id: int,db=Depends(get_db)): - try: - if class_id: - return employment_dao.get_employment_info() - except: - raise HTTPException(status_code=404, detail='该班级就业信息不存在') + if class_id: + return employment_dao.get_employment_dao(class_id=class_id,db=db) + raise HTTPException(status_code=404, detail='该班级就业信息不存在') -# @emp_api.post('employment/students/{stu_id}') -# def create_emp_info(stu_id: int,db=Depends(get_db)): -# try: -# pass +# @emp_api.post('/employment/students/{stu_id}') +# def create_emp_info(stu_id: int,db=Depends(get_db),response_model=EmploymentResponse): +# if stu_id: +# +# return employment_dao. diff --git a/PythonProject/dao/employment_dao.py b/PythonProject/dao/employment_dao.py index 426452b..e7a27c0 100644 --- a/PythonProject/dao/employment_dao.py +++ b/PythonProject/dao/employment_dao.py @@ -1,9 +1,9 @@ -from fastapi import HTTPException,Depends +from fastapi import HTTPException from model.all_model import Employment_info, ClassManagement, Student_Model from util.database import get_db from schema.employment_schema import EmploymentRequest -def get_employment_dao(stu_id,class_id,db=Depends(get_db())): +def get_employment_dao(stu_id,class_id,db): try: q = db.query(Employment_info).\ join(Student_Model,Employment_info.stu_id == Student_Model.stu_id).\ @@ -27,20 +27,19 @@ def get_employment_dao(stu_id,class_id,db=Depends(get_db())): ,'company_name':i.company_name ,'company_address':i.company_address ,'salary':i.salary - }for i in r + }for i in r ] except: raise HTTPException(status_code=404,detail='信息不存在!') -# def add_employment_dao(e:EmlpoymentRequest,db=Depends(get_db()),stu_id): -# try: -# r = db.query(Employment_info).filter(Employment_info.stu_id == stu_id).all() -# if r: -# e1 = Employment_info(**e) -# db.add(e1) -# except: -# db.rollback() -# return False -# else: -# db.commit() -# return True +def add_employment_dao(e:EmploymentRequest,db): + try: + d = e.model_dump() + e1 = Employment_info(**d) + db.add(e1) + except: + db.rollback() + raise HTTPException(status_code=404, detail='信息不存在!') + else: + db.commit() + return e1 diff --git a/PythonProject/schema/employment_schema.py b/PythonProject/schema/employment_schema.py index 4e93d2c..28a6078 100644 --- a/PythonProject/schema/employment_schema.py +++ b/PythonProject/schema/employment_schema.py @@ -1,10 +1,10 @@ -from fastapi import Query,HTTPException -from pydantic import BaseModel, field_validator +from fastapi import HTTPException +from pydantic import BaseModel, Field,field_validator, model_validator from datetime import date from typing import Optional class EmploymentRequest(BaseModel): - stu_id: int=Query(ge=1) + stu_id: int=Field(ge=1) email: str|None employment_opening_date:date offer_issuance_date:date @@ -13,11 +13,17 @@ class EmploymentRequest(BaseModel): salary:float @field_validator('stu_id') - def check(cls,n): - i = cls.model_dump() - if i['stu_id'] == n: - return n - raise HTTPException(status_code=404,detail='未找到该学生的就业信息!') + @classmethod + def check_stu_id(cls,v): + if v <= 0: + raise ValueError('输入有误,学生ID必须大于0') + return v + + @model_validator(mode='after') + def check_date(self): + if self.employment_opening_date > self.offer_issuance_date: + raise ValueError('offer下发日期不能早于就业开放日期') + return self class EmploymentResponse(BaseModel): code:int = 200