Merge remote-tracking branch 'origin/conding' into conding
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
from fastapi import APIRouter, Query, Depends, HTTPException, Path
|
||||
from util.database import get_db
|
||||
|
||||
from fastapi import APIRouter, Query, Depends, HTTPException, Path,Form
|
||||
from dao import employment_dao
|
||||
from dao.employment_dao import get_emp_dao, add_emp_dao, check_stu_dao, update_emp_dao, delete_emp_dao
|
||||
from dao.employment_dao import add_emp_dao, update_emp_dao, delete_emp_dao
|
||||
from schema.employment_schema import EmploymentRequest,EmploymentResponse
|
||||
from util.database import get_db
|
||||
from typing import Optional
|
||||
@@ -18,19 +16,14 @@ def get_emp_info1(stu_id: Optional[int]=Path(description='学生编号')
|
||||
raise HTTPException(status_code=404, detail='该学生就业信息不存在')
|
||||
|
||||
@emp_api.get('/employment/class/{class_id}',response_model=EmploymentResponse,summary='获取班级学生就业信息')
|
||||
def get_emp_info2(class_id: Optional[int],db=Depends(get_db)):
|
||||
def get_emp_info2(class_id: Optional[int]=Path(description='班级编号')
|
||||
,db=Depends(get_db)):
|
||||
if class_id:
|
||||
return employment_dao.get_emp_dao(class_id=class_id,db=db)
|
||||
raise HTTPException(status_code=404, detail='该班级就业信息不存在')
|
||||
|
||||
@emp_api.post('/employment/students/{stu_id}',response_model=EmploymentResponse,summary='新增学生就业信息')
|
||||
def create_emp_info(stu_id:int,emp:EmploymentRequest,db=Depends(get_db)):
|
||||
if not check_stu_dao(stu_id,db):
|
||||
raise HTTPException(status_code=404, detail='该学生不存在,无法添加就业信息')
|
||||
emp.stu_id = stu_id
|
||||
exist = db.query(employment_dao.Employment_info).filter(employment_dao.Employment_info.stu_id == stu_id,employment_dao.Employment_info.delete_status == 0).first()
|
||||
if exist:
|
||||
raise HTTPException(status_code=409,detail='该学生已有就业信息,请勿重复增加!')
|
||||
def create_emp_info(emp:EmploymentRequest=Form(),db=Depends(get_db)):
|
||||
d=emp.model_dump(exclude_unset=False)
|
||||
r=add_emp_dao(d,db)
|
||||
if not r:
|
||||
|
||||
@@ -15,7 +15,7 @@ def get_grade(stu_id: int,db=Depends(get_db)):
|
||||
raise HTTPException(status_code=500,detail=f'数据库查询异常:{str(e)}')
|
||||
|
||||
@gradeAPI.post('/grade',response_model=GradeResponse,summary='添加学生成绩')
|
||||
def post_grade(o:GradeRequest=Form(),db=Depends(get_db)):
|
||||
def post_grade(o:GradeRequest,db=Depends(get_db)):
|
||||
d=o.model_dump()
|
||||
r=add_grade_dao(g=d,db=db)
|
||||
if not r:
|
||||
@@ -25,7 +25,7 @@ def post_grade(o:GradeRequest=Form(),db=Depends(get_db)):
|
||||
@gradeAPI.put('/{score_id}',summary='成绩修改')
|
||||
def put_grade(
|
||||
score_id: int
|
||||
,o:GradeUpdate=Form()
|
||||
,o:GradeUpdate
|
||||
,db=Depends(get_db)
|
||||
):
|
||||
old_obj = get_score_by_id_dao(score_id=score_id, db=db)
|
||||
|
||||
@@ -44,7 +44,7 @@ def del_students(stu_id:int
|
||||
,db=Depends(get_db)):
|
||||
rows=delete_student_dao( stu_id=stu_id,db=db )
|
||||
if not rows:
|
||||
raise HTTPException(status_code=500,detail='没有删除')
|
||||
raise HTTPException(status_code=404,detail='对象已被删除')
|
||||
return {'code':200,'totals':rows,'detail':'删除成功'}
|
||||
|
||||
@StudentAPI.post('/students',tags=['学⽣基本信息管理模块'],response_model=StugetResponse,summary='学生信息新增接口',description='新增学生信息')
|
||||
@@ -53,5 +53,5 @@ def add_students(s:StudentRequest
|
||||
d=s.model_dump(exclude_unset=True)
|
||||
stu_new=add_student_dao(o=d,db=db)
|
||||
if not stu_new:
|
||||
raise HTTPException(status_code=500,detail='添加失败')
|
||||
raise HTTPException(status_code=404,detail='添加失败')
|
||||
return stu_new
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from fastapi import HTTPException
|
||||
from fastapi import HTTPException, APIRouter
|
||||
from model.all_model import Employment_info, ClassManagement, Student_Model
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
emp_api = APIRouter()
|
||||
def get_emp_dao(stu_id=None,class_id=None,company_name=None,min_salary=None,max_salary=None,db=None):
|
||||
try:
|
||||
q = db.query(Employment_info).\
|
||||
@@ -41,18 +42,25 @@ def get_emp_dao(stu_id=None,class_id=None,company_name=None,min_salary=None,max_
|
||||
|
||||
def add_emp_dao(o,db):
|
||||
try:
|
||||
stu = db.query(Student_Model).filter(Student_Model.stu_id == o['stu_id'], Student_Model.delete_status == 0).first()
|
||||
if not stu:
|
||||
raise HTTPException(status_code=404, detail='该学生不存在,无法添加就业信息')
|
||||
|
||||
exist = db.query(Employment_info).filter(Employment_info.stu_id == o['stu_id'],
|
||||
Employment_info.delete_status == 0).first()
|
||||
if exist:
|
||||
raise HTTPException(status_code=409, detail='该学生已有就业信息,请勿重复增加!')
|
||||
|
||||
e1 = Employment_info(**o)
|
||||
db.add(e1)
|
||||
db.commit()
|
||||
return e1
|
||||
return o
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
raise HTTPException(status_code=500, detail=f'新增就业信息失败: {e}')
|
||||
|
||||
def check_stu_dao(stu_id,db):
|
||||
stu = db.query(Student_Model).filter(Student_Model.stu_id == stu_id,Student_Model.delete_status == 0).first()
|
||||
return stu
|
||||
|
||||
def update_emp_dao(stu_id,o,db):
|
||||
try:
|
||||
rows = db.query(Employment_info).filter(Employment_info.stu_id == stu_id,Employment_info.delete_status == 0).first()
|
||||
@@ -65,7 +73,9 @@ def update_emp_dao(stu_id,o,db):
|
||||
|
||||
def delete_emp_dao(stu_id,db):
|
||||
try:
|
||||
rows = db.query(Employment_info).filter(Employment_info.stu_id == stu_id,Employment_info.delete_status == 0).delete()
|
||||
rows = db.query(Employment_info)\
|
||||
.filter(Employment_info.stu_id == stu_id,Employment_info.delete_status == 0)\
|
||||
.update({'delete_status':1,'delete_time': datetime.now()})
|
||||
db.commit()
|
||||
except:
|
||||
db.rollback()
|
||||
|
||||
@@ -7,13 +7,15 @@ from model.all_model import *
|
||||
# 根据id查询单条有效成绩
|
||||
def get_score_by_id_dao(score_id:int, db):
|
||||
return db.query(WlScore).filter(
|
||||
WlScore.id == score_id
|
||||
,WlScore.delete_status==1
|
||||
WlScore.score_id == score_id
|
||||
,WlScore.delete_status==0
|
||||
).first()
|
||||
|
||||
# 根据stu_id+exam_order查重(新增、修改时校验重复)
|
||||
def get_score_by_stu_exam_order_dao(stu_id:str,exam_order:int,db):
|
||||
return db.query(WlScore).filter(WlScore.stu_id==stu_id,WlScore.exam_order==exam_order,WlScore.delete_status==0).first()
|
||||
return db.query(WlScore).filter(WlScore.stu_id==stu_id
|
||||
,WlScore.exam_order==exam_order
|
||||
,WlScore.delete_status==0).first()
|
||||
|
||||
def get_grade_dao( stu_id:int , db):
|
||||
|
||||
@@ -52,7 +54,7 @@ def delete_grade_dao(stu_id:int,db):
|
||||
rows = db.query(WlScore).filter(
|
||||
WlScore.stu_id == stu_id,
|
||||
WlScore.delete_status == 0
|
||||
).update({'delete_status':1})
|
||||
).update({'delete_status':1,'delete_time':datetime.now()})
|
||||
except:
|
||||
db.rollback()
|
||||
return False
|
||||
|
||||
@@ -28,12 +28,14 @@ def delete_student_dao(stu_id,db):
|
||||
|
||||
def update_student_dao(stu_id,update_data,db):
|
||||
try:
|
||||
rows = db.query( Student_Model ).filter( Student_Model.stu_id == stu_id,Student_Model.delete_status == 0).update( update_data )
|
||||
rows = (db.query( Student_Model )
|
||||
.filter( Student_Model.stu_id == stu_id,Student_Model.delete_status == 0)
|
||||
.update( update_data ))
|
||||
db.commit()
|
||||
except:
|
||||
db.rollback()
|
||||
return False
|
||||
else:
|
||||
db.commit()
|
||||
return rows
|
||||
|
||||
def get_student_dao(stu_id:Optional[int]
|
||||
|
||||
@@ -5,36 +5,27 @@ from typing import Optional
|
||||
|
||||
class EmploymentRequest(BaseModel):
|
||||
stu_id: int=Field(ge=1)
|
||||
email: str|None
|
||||
employment_opening_date:date
|
||||
offer_issuance_date:date
|
||||
company_name:str
|
||||
company_address:str|None
|
||||
salary:float
|
||||
|
||||
@field_validator('stu_id')
|
||||
@classmethod
|
||||
def check_stu_id(cls,v):
|
||||
if v <= 0:
|
||||
raise ValueError('输入有误,学生ID必须大于0')
|
||||
return v
|
||||
email: str|None = None
|
||||
employment_opening_date:date|None = None
|
||||
offer_issuance_date:date|None = None
|
||||
company_name:str|None = None
|
||||
company_address:str|None = None
|
||||
salary:float|None = None
|
||||
|
||||
@model_validator(mode='after')
|
||||
def check_date(self):
|
||||
if self.employment_opening_date > self.offer_issuance_date:
|
||||
raise ValueError('offer下发日期不能早于就业开放日期')
|
||||
if self.employment_opening_date and self.offer_issuance_date:
|
||||
if self.employment_opening_date > self.offer_issuance_date:
|
||||
raise ValueError('offer下发日期不能早于就业开放日期')
|
||||
return self
|
||||
|
||||
class EmploymentResponse(BaseModel):
|
||||
code:int = 200
|
||||
detail:str = 'OK'
|
||||
emp_id:int
|
||||
stu_id: int
|
||||
stu_name:Optional[str] = None
|
||||
class_id:int
|
||||
email: str | None
|
||||
employment_opening_date: date
|
||||
offer_issuance_date: date
|
||||
company_name: str
|
||||
company_address: str | None
|
||||
salary: float
|
||||
stu_id:int
|
||||
email: str|None = None
|
||||
employment_opening_date:date|None = None
|
||||
offer_issuance_date:date|None = None
|
||||
company_name:str|None = None
|
||||
company_address:str|None = None
|
||||
salary:float|None = None
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
|
||||
from model.all_model import *
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
from fastapi import HTTPException,Form
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class GradeRequest(BaseModel):
|
||||
stu_id:int = Form(description="学生编号")
|
||||
exam_order:int = Form(description='考核序次')
|
||||
score:float = Form(description='成绩')
|
||||
stu_id:int = Field(description="学生编号")
|
||||
exam_order:int = Field(description='考核序次')
|
||||
score:float = Field(description='成绩')
|
||||
|
||||
class GradeResponse(BaseModel):
|
||||
code: int = 200
|
||||
detail: str = 'OK'
|
||||
score_id: float
|
||||
stu_id:int
|
||||
exam_order:int
|
||||
score:float
|
||||
|
||||
class GradeUpdate(BaseModel):
|
||||
exam_order: int | None = Form( description="考核序次")
|
||||
score: float | None = Form( description="成绩")
|
||||
exam_order: int | None = Field( None,description="考核序次")
|
||||
score: float | None = Field( None,description="成绩")
|
||||
|
||||
@@ -52,6 +52,7 @@ class StugetResponse(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
code:int = 200
|
||||
detail:str = 'ok'
|
||||
stu_id:int | None = None
|
||||
class_id: int | None = None
|
||||
stu_name: str | None = None
|
||||
age: int | None = None
|
||||
|
||||
Reference in New Issue
Block a user