删除 employment_api.py

This commit is contained in:
2026-09-21 17:10:08 +08:00
parent 930d8a7a1d
commit fadca0d9bb
-116
View File
@@ -1,116 +0,0 @@
# api/employment_api.py
# 本文件定义学生就业信息相关的所有 API 路由(Controller 层)
from fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy.orm import Session
from typing import List, Optional
from sqlalchemy_fastapi_demo.database import get_db
from sqlalchemy_fastapi_demo.dao.employment import EmploymentBaseDAO,EmploymentOfferDAO
from sqlalchemy_fastapi_demo.model.employment import EmploymentBase, EmploymentOffer
from sqlalchemy_fastapi_demo.scheme.employment import EmploymentOfferUpdate, EmploymentBaseUpdate, EmploymentBaseCreate,EmploymentOfferCreate,EmploymentQuery,EmploymentOfferQueryResponse,EmploymentBaseQueryResponse
router = APIRouter()
#-----------多条件查询就业协议信息-----------
@router.get("/offer/search/",response_model=List[EmploymentOfferQueryResponse],summary="多条件查询就业协议信息")
def search_offer(
stu_id: Optional[int] = Query(None, description="学生学号"),
offer_id: Optional[int] = Query(None, description="offer编号,需同时提供学生编号"),
skip: int = Query(0, ge=0, description="跳过的记录条数"),
limit: int = Query(10, ge=1, le=200, description="返回最大记录数"),
db: Session = Depends(get_db)
):
#捕获异常
try:
data_list = EmploymentOfferDAO.different_choice_query(
db=db, stu_id=stu_id, offer_id=offer_id, skip=skip, limit=limit
)
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
return data_list
#-----------多条件查询就业基础信息-----------
@router.get("/base/search/",response_model=List[EmploymentBaseQueryResponse],summary="多条件查询就业基础信息")
def search_base(
query: EmploymentQuery = Depends(),
skip: int = Query(0, ge=0, description="跳过的记录条数"),
limit: int = Query(10, ge=1, le=200, description="返回最大记录数"),
db: Session = Depends(get_db)
):
# 多条件筛选就业基础信息 + 分页
if query.min_salary is not None and query.max_salary is not None and query.min_salary > query.max_salary:
raise HTTPException(status_code=400, detail="最低薪资不能大于最高薪资")
data_list = EmploymentBaseDAO.different_choice_query(
db=db,
stu_id=query.stu_id,
company_name=query.company_name,
min_salary=query.min_salary,
max_salary=query.max_salary,
skip=skip,
limit=limit
)
return data_list
#-----------添加就业基础信息-----------
@router.post("/base/add/",response_model=EmploymentBaseQueryResponse,summary="添加就业基础信息")
def add_base(obj: EmploymentBaseCreate, db: Session = Depends(get_db)):
items = EmploymentBaseDAO.get_by_stu_id(db, obj.stu_id)
if items:
raise HTTPException(status_code=400, detail="该学生的就业基础信息已存在,不可重复新增")
new_obj = EmploymentBase(
stu_id=obj.stu_id,
employment_open_time=obj.employment_open_time,
job_time=obj.job_time,
company_name=obj.company_name,
salary=obj.salary,
is_deleted=0
)
res = EmploymentBaseDAO.create(db, new_obj)
return res
#-----------添加就业协议信息-----------
@router.post("/offer/add/",response_model=EmploymentOfferQueryResponse,summary="添加就业协议信息")
def add_offer(obj: EmploymentOfferCreate, db: Session = Depends(get_db)):
new_obj = EmploymentOffer(
stu_id=obj.stu_id,
offer_id=obj.offer_id,
offer_time=obj.offer_time,
is_deleted=0
)
res = EmploymentOfferDAO.create(db, new_obj)
return res
#-----------修改就业基础信息-----------
@router.put("/base/{stu_id}/",response_model=EmploymentBaseQueryResponse,summary="修改就业基础信息")
def update_base(stu_id: int, obj: EmploymentBaseUpdate, db: Session = Depends(get_db)):
update_data = obj.model_dump(exclude_unset=True)
try:
res = EmploymentBaseDAO.update(db, stu_id, update_data)
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
if not res:
raise HTTPException(status_code=404, detail="未找到该学生就业基础信息")
return res
#-----------修改就业协议信息-----------
@router.put("/offer/{offer_id}", response_model=EmploymentOfferQueryResponse,summary="修改就业协议信息")
def update_offer(stu_id:int,offer_id: int, obj: EmploymentOfferUpdate, db: Session = Depends(get_db)):
# offer 表主键是 (stu_id, offer_id),定位记录需要两者
try:
res = EmploymentOfferDAO.update(db, stu_id, offer_id, obj.offer_time)
except ValueError as e:
# 捕获校验异常,返回标准400错误给前端
raise HTTPException(status_code=400, detail=str(e))
if not res:
raise HTTPException(status_code=404, detail="未找到该就业协议记录")
return res
#-----------逻辑删除就业基础信息-----------
@router.delete("/base/{stu_id}/",summary="删除就业基础信息")
def delete_base(stu_id: int, db: Session = Depends(get_db)):
ok = EmploymentBaseDAO.delete(db, stu_id)
if not ok:
raise HTTPException(status_code=404, detail="记录不存在或已经删除")
return {"code": 200, "msg": "删除成功"}
#-----------逻辑删除就业协议信息-----------
@router.delete("/offer/{stu_id}/{offer_id}",summary="修改就业协议信息")
def delete_offer(stu_id: int, offer_id: int, db: Session = Depends(get_db)):
ok = EmploymentOfferDAO.delete(db, stu_id, offer_id)
if not ok:
raise HTTPException(status_code=404, detail="记录不存在或已经删除")
return {"code": 200, "msg": "删除成功"}