优化了students_dao里add_student_dao的报错逻辑。
This commit is contained in:
@@ -9,12 +9,12 @@ from databases import *
|
|||||||
app = FastAPI(title="学生管理系统")
|
app = FastAPI(title="学生管理系统")
|
||||||
|
|
||||||
|
|
||||||
app.include_router(Classes_API,tags=["classes"])
|
app.include_router(Classes_API,tags=["班级管理模块"])
|
||||||
app.include_router(Scores_API,tags=["scores"])
|
app.include_router(Scores_API,tags=["学生考核成绩管理模块"])
|
||||||
app.include_router(Shtudent_Jiuye,tags=["Employments"])
|
app.include_router(Shtudent_Jiuye,tags=["学生就业管理模块"])
|
||||||
app.include_router(Students_API,tags=["students"])
|
app.include_router(Students_API,tags=["学生管理模块"])
|
||||||
app.include_router(Teachers_API,tags=["teachers"])
|
app.include_router(Teachers_API,tags=["老师管理模块"])
|
||||||
app.include_router(StatCalc_API,tags=["StatCalc"])
|
app.include_router(StatCalc_API,tags=["统计分析模块"])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -27,15 +27,15 @@ def get_students( stu:StudentsQuery = Depends()
|
|||||||
@s_api.post("/students"
|
@s_api.post("/students"
|
||||||
,summary='新增学生资料'
|
,summary='新增学生资料'
|
||||||
,description=f'学生ID自动分配,学生姓名、学生手机号和班级是必填项,不能为空。\n '
|
,description=f'学生ID自动分配,学生姓名、学生手机号和班级是必填项,不能为空。\n '
|
||||||
f'时间格式:YYYY-MM-DD'
|
f'注意事项:\n'
|
||||||
|
f'时间格式:YYYY-MM-DD\n'
|
||||||
|
f'班级ID和顾问ID必须已经存在才可以绑定'
|
||||||
,response_model=StudentsResponse )
|
,response_model=StudentsResponse )
|
||||||
def add_student( stu:StudentsResponse = Depends()
|
def add_student( stu:StudentsResponse = Depends()
|
||||||
, db=Depends(get_db)
|
, db=Depends(get_db)
|
||||||
):
|
):
|
||||||
s_dict = stu.model_dump(exclude_unset=True)
|
s_dict = stu.model_dump(exclude_unset=True)
|
||||||
result = add_student_dao( s=s_dict , db=db )
|
result = add_student_dao( s=s_dict , db=db )
|
||||||
if not result:
|
|
||||||
raise HTTPException(status_code=500, detail='手机号已有学生使用或必填项为空。')
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@s_api.put("/students"
|
@s_api.put("/students"
|
||||||
|
|||||||
@@ -62,9 +62,11 @@ def add_student_dao( s , db):
|
|||||||
phone = s.get("phone")
|
phone = s.get("phone")
|
||||||
s1_deleted = db.query( Students ).filter( Students.phone == phone ).first()
|
s1_deleted = db.query( Students ).filter( Students.phone == phone ).first()
|
||||||
if s1_deleted and s1_deleted.is_deleted == False:
|
if s1_deleted and s1_deleted.is_deleted == False:
|
||||||
return False
|
raise ValueError("该手机号已存在有效学生记录,请勿重复添加")
|
||||||
if not phone:
|
if not phone:
|
||||||
return False
|
raise ValueError("手机号不能为空")
|
||||||
|
if not s.get("class_id") or not s.get("advisor_id"):
|
||||||
|
raise ValueError("班级ID和顾问ID必须已经存在才可以绑定")
|
||||||
if s1_deleted and s1_deleted.is_deleted == True:
|
if s1_deleted and s1_deleted.is_deleted == True:
|
||||||
s1_deleted.name = s.get("name")
|
s1_deleted.name = s.get("name")
|
||||||
s1_deleted.age = s.get("age")
|
s1_deleted.age = s.get("age")
|
||||||
@@ -90,10 +92,14 @@ def add_student_dao( s , db):
|
|||||||
return s1_deleted
|
return s1_deleted
|
||||||
s1 = Students( **s )
|
s1 = Students( **s )
|
||||||
db.add(s1)
|
db.add(s1)
|
||||||
|
except ValueError as e:
|
||||||
|
# 业务校验异常:回滚并返回错误信息
|
||||||
|
db.rollback()
|
||||||
|
return {"code": 400, "msg": str(e)}
|
||||||
except Exception:
|
except Exception:
|
||||||
# 这里可以加日志
|
# 这里可以加日志
|
||||||
db.rollback()
|
db.rollback()
|
||||||
return False
|
return {"code": 500, "msg": f"系统异常: {str(e)}"}
|
||||||
else:
|
else:
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(s1)
|
db.refresh(s1)
|
||||||
|
|||||||
Reference in New Issue
Block a user