From a27c326e9456072e227b1080ccedda57da81c814 Mon Sep 17 00:00:00 2001 From: Orangeeee Date: Tue, 22 Sep 2026 21:57:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86students=5Fdao?= =?UTF-8?q?=E9=87=8Cadd=5Fstudent=5Fdao=E7=9A=84=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- students/api/students_api.py | 2 +- students/dao/students_dao.py | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) 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