From fee4a2987664ed773cfe3b619c968bd0a30c3bd8 Mon Sep 17 00:00:00 2001 From: wolin_chenyulin001 <123@163.com> Date: Mon, 21 Sep 2026 20:18:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=B0=B1=E4=B8=9Aget=E6=AC=A1=E6=98=82?= =?UTF-8?q?=E7=AE=A1=E7=9A=84dao=E5=B1=82=E5=92=8Capi=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PythonProject/api/employment_api.py | 34 ++++++++++------------- PythonProject/dao/employment_dao.py | 29 ++++++++++--------- PythonProject/schema/employment_schema.py | 22 +++++++++------ 3 files changed, 43 insertions(+), 42 deletions(-) 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 From 231d2bfdb409f0d16f67b56b77fba90a9932892c Mon Sep 17 00:00:00 2001 From: 0919word <835535015@qq.com> Date: Mon, 21 Sep 2026 20:18:54 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=92=8B=E7=AB=8B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PythonProject/api/cla_api.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PythonProject/api/cla_api.py b/PythonProject/api/cla_api.py index b002d34..3e1561c 100644 --- a/PythonProject/api/cla_api.py +++ b/PythonProject/api/cla_api.py @@ -5,27 +5,27 @@ from dao.cla_dao import add_class_dao,get_class_dao,update_class_dao,delete_clas claAPI = APIRouter(prefix="/class", tags=["班级管理"]) -@claAPI.post("/class", summary="新增班级") +@claAPI.post("/", summary="新增班级") def add_class(data: claRequest, Session = Depends(get_db)): return add_class_dao(data, Session) -@claAPI.get("/class/list", summary="查询班级") +@claAPI.get("/list", summary="查询班级") def list_class(Session = Depends(get_db)): return get_class_dao(Session) -@claAPI.put("/class/{class_id}", summary="更新班级信息") +@claAPI.put("/{class_id}", summary="更新班级信息") def update_class(class_id: int, data: claRequest, Session = Depends(get_db)): return update_class_dao(class_id, data, Session) -@claAPI.get("/class/{class_id}", summary="逻辑删除班级信息") +@claAPI.delete("/{class_id}", summary="逻辑删除班级信息") def delete_class(class_id: int, Session = Depends(get_db)): return delete_class_dao(class_id, Session) -@claAPI.get("/class/delete/check/{class_id}", summary="硬删除前查询") +@claAPI.get("/delete/check/{class_id}", summary="硬删除前查询") def check_delete(class_id: int, Session = Depends(get_db)): return get_class_for_delete(class_id, Session) -@claAPI.delete("/class/delete/confirm/{class_id}", summary="删除班级信息") +@claAPI.delete("/delete/confirm/{class_id}", summary="删除班级信息") def confirm_delete(class_id: int, Session = Depends(get_db)): return hard_delete_class(class_id, Session)