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

This commit is contained in:
Orangeeee
2026-09-22 23:02:42 +08:00
committed by geyuan
parent fa571a13da
commit 699867b0af
2 changed files with 12 additions and 6 deletions
+1 -1
View File
@@ -30,7 +30,7 @@ def get_students( stu:StudentsQuery = Depends()
f'注意事项:\n'
f'时间格式:YYYY-MM-DD\n'
f'班级ID和顾问ID必须已经存在才可以绑定'
,response_model=StudentsResponse )
)
def add_student( stu:StudentsResponse = Depends()
, db=Depends(get_db)
):
+11 -5
View File
@@ -66,7 +66,13 @@ def add_student_dao( s , db):
if not phone:
raise ValueError("手机号不能为空")
if not s.get("class_id") or not s.get("advisor_id"):
raise ValueError("班级ID和顾问ID必须已经存在才可以绑定")
raise ValueError("班级ID和顾问ID不能为空")
s1_class_id = db.query(Students).filter(Students.phone == phone).first()
s1_advisor_id = db.query(Students).filter(Students.phone == phone).first()
if not s1_class_id:
raise ValueError(f"班级ID {s.get("class_id")} 不存在,请先创建班级")
if not s1_advisor_id:
raise ValueError(f"顾问ID {s.get("advisor_id")} 不存在,请先创建顾问")
if s1_deleted and s1_deleted.is_deleted == True:
s1_deleted.name = s.get("name")
s1_deleted.age = s.get("age")
@@ -92,16 +98,16 @@ def add_student_dao( s , db):
return s1_deleted
s1 = Students( **s )
db.add(s1)
db.commit()
except ValueError as e:
# 业务校验异常:回滚并返回错误信息
db.rollback()
return {"code": 400, "msg": str(e)}
except Exception:
except Exception as e:
# 这里可以加日志
db.rollback()
return {"code": 500, "msg": f"系统异常: {str(e)}"}
else:
db.commit()
db.refresh(s1)
return s1
@@ -147,14 +153,14 @@ def update_student_dao( s , db):
# 额外字段
if s.get("phone") is not None:
s1_id.student_phone = s.get("phone")
s1_id.update_date = datetime.now()
db.commit()
except HTTPException:
raise
except Exception:
db.rollback()
raise
else:
s1_id.update_date = datetime.now()
db.commit()
db.refresh(s1_id) # 从数据库再拉一次数据
return s1_id