删除 employment_api.py
This commit is contained in:
@@ -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": "删除成功"}
|
||||
Reference in New Issue
Block a user