优化了students_dao里add_student_dao的报错逻辑。

This commit is contained in:
Orangeeee
2026-09-22 21:42:44 +08:00
parent ff68a676c4
commit e76cee4bd6
3 changed files with 18 additions and 12 deletions
+3 -3
View File
@@ -27,15 +27,15 @@ def get_students( stu:StudentsQuery = Depends()
@s_api.post("/students"
,summary='新增学生资料'
,description=f'学生ID自动分配,学生姓名、学生手机号和班级是必填项,不能为空。\n '
f'时间格式:YYYY-MM-DD'
f'注意事项:\n'
f'时间格式:YYYY-MM-DD\n'
f'班级ID和顾问ID必须已经存在才可以绑定'
,response_model=StudentsResponse )
def add_student( stu:StudentsResponse = Depends()
, db=Depends(get_db)
):
s_dict = stu.model_dump(exclude_unset=True)
result = add_student_dao( s=s_dict , db=db )
if not result:
raise HTTPException(status_code=500, detail='手机号已有学生使用或必填项为空。')
return result
@s_api.put("/students"
+9 -3
View File
@@ -62,9 +62,11 @@ def add_student_dao( s , db):
phone = s.get("phone")
s1_deleted = db.query( Students ).filter( Students.phone == phone ).first()
if s1_deleted and s1_deleted.is_deleted == False:
return False
raise ValueError("该手机号已存在有效学生记录,请勿重复添加")
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:
s1_deleted.name = s.get("name")
s1_deleted.age = s.get("age")
@@ -90,10 +92,14 @@ def add_student_dao( s , db):
return s1_deleted
s1 = Students( **s )
db.add(s1)
except ValueError as e:
# 业务校验异常:回滚并返回错误信息
db.rollback()
return {"code": 400, "msg": str(e)}
except Exception:
# 这里可以加日志
db.rollback()
return False
return {"code": 500, "msg": f"系统异常: {str(e)}"}
else:
db.commit()
db.refresh(s1)