diff --git a/students/api/students_api.py b/students/api/students_api.py index 9dec3db..5072dcc 100644 --- a/students/api/students_api.py +++ b/students/api/students_api.py @@ -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) ): diff --git a/students/dao/students_dao.py b/students/dao/students_dao.py index 7b80c76..79888e6 100644 --- a/students/dao/students_dao.py +++ b/students/dao/students_dao.py @@ -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