This commit is contained in:
he
2026-09-21 22:34:34 +08:00
parent 0fb561a4f4
commit 9296deb563
4 changed files with 47 additions and 12 deletions
+28 -6
View File
@@ -23,14 +23,36 @@ def post_grade(o:GradeRequest=Form(),db=Depends(get_db)):
return o
@gradeAPI.put('/{score_id}',summary='成绩修改')
def put_grade(score_id: int,o:GradeRequest=Form(),db=Depends(get_db)):
def put_grade(
score_id: int
,o:GradeUpdate=Form()
,db=Depends(get_db)
):
old_obj = get_score_by_id_dao(score_id=score_id, db=db)
if not old_obj:
raise HTTPException(status_code=404, detail="成绩记录不存在(已删除)")
d = o.model_dump(exclude_unset=True)
r = update_grade_dao(score_id=score_id
,update_data=d
,db=db)
if not d:
raise HTTPException(status_code=500,detail='请传入需要修改的字段')
return {'code':200,'totals':r,'detail':'更新成功'}
raise HTTPException(status_code=400,detail='请传入需要修改的字段')
if "exam_order" in d:
exist_obj = get_score_by_stu_exam_order_dao(
stu_id=old_obj.stu_id,
exam_order=d["exam_order"],
db=db
)
if exist_obj and exist_obj.id != score_id:
raise HTTPException(status_code=409, detail="修改后的考核序次,该学生已有成绩!")
try:
r = update_grade_dao(score_id=score_id, update_data=d, db=db)
except Exception:
raise HTTPException(status_code=409, detail="数据冲突,重复数据")
if r == 0:
return {"code": 200, "totals": r, "detail": "数据未发生变化"}
return {"code": 200, "totals": r, "detail": "更新成功"}
@gradeAPI.delete('/{score_id}',summary='删除成绩')
def delete_grade(score_id:int,db=Depends(get_db)):
+10
View File
@@ -4,6 +4,16 @@ from util.database import get_db
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
).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()
def get_grade_dao( stu_id:int , db):
+1 -1
View File
@@ -184,4 +184,4 @@ class WlScore(Base):
delete_time = Column(DATETIME,default=datetime.now,onupdate=datetime.now,comment='删除时间')
Base.metadata.create_all(engine)
+8 -5
View File
@@ -1,12 +1,13 @@
from model.all_model import *
from pydantic import BaseModel, Field, field_validator
from fastapi import HTTPException
from fastapi import HTTPException,Form
class GradeRequest(BaseModel):
stu_id:int = Field(description="学生编号")
exam_order:int = Field(description='考核序次')
score:float = Field(description='成绩')
stu_id:int = Form(description="学生编号")
exam_order:int = Form(description='考核序次')
score:float = Form(description='成绩')
class GradeResponse(BaseModel):
code: int = 200
@@ -15,4 +16,6 @@ class GradeResponse(BaseModel):
exam_order:int
score:float
class GradeUpdate(BaseModel):
exam_order: int | None = Form( description="考核序次")
score: float | None = Form( description="成绩")