From 9c24a229c739a4f75a563aad7153f6166f333a15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E5=87=AF?= <1368058312@qq.com> Date: Wed, 23 Sep 2026 17:59:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E4=BC=98=E5=8C=96get=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=BB=A5=E5=8F=8A=E4=BF=AE=E6=94=B9delete=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=BF=87=E5=90=8E=E8=BF=98=E6=98=BE=E7=A4=BA=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=88=90=E5=8A=9F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/score.py | 10 +--------- dao/score.py | 55 ++++++++++++++++++++++++---------------------------- 2 files changed, 26 insertions(+), 39 deletions(-) diff --git a/api/score.py b/api/score.py index 7302b5e..31d1ed8 100644 --- a/api/score.py +++ b/api/score.py @@ -1,7 +1,7 @@ from fastapi import APIRouter, Depends, HTTPException, Query from sqlalchemy.orm import Session from core.database import get_db -from dao.score import post_score_dao, update_score_dao, get_score_dao, get_all_scores_dao,delete_score_dao, exist_student_exam_dao +from dao.score import post_score_dao, update_score_dao, get_score_dao,delete_score_dao, exist_student_exam_dao from schemas.score import ScoreCreate, ScoreUpdate, ScorePageResp scores_router = APIRouter(prefix="/scores", tags=["成绩接口"]) @@ -32,14 +32,6 @@ def list_score( -@scores_router.get("/all", response_model=ScorePageResp, - summary="所有学生成绩接口", - ) -def list_all_scores(page: int = Query(1, ge=1), - page_size: int = Query(10, ge=1, le=100), - db: Session = Depends(get_db)): - total, data_list = get_all_scores_dao(page, page_size, db) - return {"total": total, "data": data_list} @scores_router.put("{score_id}", summary="更新成绩接口") def modify_score(score_id: int, req: ScoreUpdate, db: Session = Depends(get_db)): diff --git a/dao/score.py b/dao/score.py index eecfa60..5fb2138 100644 --- a/dao/score.py +++ b/dao/score.py @@ -34,14 +34,25 @@ def update_score_dao(score_id, db, updates): def get_score_dao(score_id, student_id, exam_seq, page, page_size, db): - """分页查询成绩,多条件过滤,只查未删除""" + """分页查询成绩,多条件过滤,只查未删除 + 规则: + - score_id == 0 → 查所有学生成绩(仅分页,不加 id 过滤) + - 三个筛选条件全为空(None) → 直接返回空,不查库 + - 其他情况 → 按传入条件过滤 + """ q = db.query(Score).filter(Score.is_deleted == 0) - if score_id: - q = q.filter(Score.id == score_id) - if student_id: - q = q.filter(Score.student_id == student_id) - if exam_seq: - q = q.filter(Score.exam_seq == exam_seq) + + if score_id == 0: + pass # score_id=0 → 查全部(分页) + elif score_id is None and not student_id and not exam_seq: + return 0, [] # 三个参数都没传 → 返回空 + else: + if score_id: + q = q.filter(Score.id == score_id) + if student_id: + q = q.filter(Score.student_id == student_id) + if exam_seq: + q = q.filter(Score.exam_seq == exam_seq) total = q.count() rows = q.offset((page - 1) * page_size).limit(page_size).all() @@ -62,36 +73,20 @@ def get_score_dao(score_id, student_id, exam_seq, page, page_size, db): ] return total, res_list -def get_all_scores_dao(page, page_size, db): - r = db.query(Score).filter(Score.is_deleted == 0)\ - .order_by(Score.student_id, Score.exam_seq) - total = r.count() # 总条数 - rows = r.offset((page-1)*page_size).limit(page_size).all()# 分页 - res_list_all = [ - { - "id": i.id, - "student_id": i.student_id, - "score": i.score, - "exam_seq": i.exam_seq, - "exam_date": i.exam_date, - "remark": i.remark, - "created_at": i.created_at, - "updated_at": i.updated_at, - "is_deleted": i.is_deleted - } - for i in rows - ] - return total,res_list_all + + def delete_score_dao(score_id, db): - """逻辑删除,更新is_deleted=1""" try: - db.query(Score).filter( + cnt = db.query(Score).filter( Score.id == score_id, Score.is_deleted == 0 - ).update({"is_deleted": 1}) + ).update({"is_deleted": 1}) # ← 接住返回值 + if cnt == 0: # ← 关键:一行都没匹配到 + db.rollback() + return False except Exception as err: print("删除成绩异常:", err) db.rollback()