From e76cee4bd6a7a64ba2719d1ae1a29ce9e1cc617e Mon Sep 17 00:00:00 2001 From: Orangeeee Date: Tue, 22 Sep 2026 21:42:44 +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 --- main.py | 12 ++++++------ students/api/students_api.py | 6 +++--- students/dao/students_dao.py | 12 +++++++++--- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/main.py b/main.py index bbc63d7..1994f12 100644 --- a/main.py +++ b/main.py @@ -9,12 +9,12 @@ from databases import * app = FastAPI(title="学生管理系统") -app.include_router(Classes_API,tags=["classes"]) -app.include_router(Scores_API,tags=["scores"]) -app.include_router(Shtudent_Jiuye,tags=["Employments"]) -app.include_router(Students_API,tags=["students"]) -app.include_router(Teachers_API,tags=["teachers"]) -app.include_router(StatCalc_API,tags=["StatCalc"]) +app.include_router(Classes_API,tags=["班级管理模块"]) +app.include_router(Scores_API,tags=["学生考核成绩管理模块"]) +app.include_router(Shtudent_Jiuye,tags=["学生就业管理模块"]) +app.include_router(Students_API,tags=["学生管理模块"]) +app.include_router(Teachers_API,tags=["老师管理模块"]) +app.include_router(StatCalc_API,tags=["统计分析模块"]) if __name__ == "__main__": diff --git a/students/api/students_api.py b/students/api/students_api.py index d7c4186..9dec3db 100644 --- a/students/api/students_api.py +++ b/students/api/students_api.py @@ -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" diff --git a/students/dao/students_dao.py b/students/dao/students_dao.py index 4d1ac7e..7b80c76 100644 --- a/students/dao/students_dao.py +++ b/students/dao/students_dao.py @@ -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)