增添查询所有成绩接口,dao层运行代码-曾凯
This commit is contained in:
+12
-3
@@ -1,7 +1,7 @@
|
|||||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from core.database import get_db
|
from core.database import get_db
|
||||||
from dao.score import post_score_dao, update_score_dao, get_score_dao, delete_score_dao, exist_student_exam_dao
|
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 schemas.score import ScoreCreate, ScoreUpdate, ScorePageResp
|
from schemas.score import ScoreCreate, ScoreUpdate, ScorePageResp
|
||||||
|
|
||||||
scores_router = APIRouter(prefix="/scores", tags=["成绩接口"])
|
scores_router = APIRouter(prefix="/scores", tags=["成绩接口"])
|
||||||
@@ -12,14 +12,13 @@ def create_score(req: ScoreCreate, db: Session = Depends(get_db)):
|
|||||||
# 业务校验:联合唯一
|
# 业务校验:联合唯一
|
||||||
if exist_student_exam_dao(req.student_id, req.exam_seq, db):
|
if exist_student_exam_dao(req.student_id, req.exam_seq, db):
|
||||||
raise HTTPException(status_code=400, detail="该学生本次考试成绩已存在,不能重复录入")
|
raise HTTPException(status_code=400, detail="该学生本次考试成绩已存在,不能重复录入")
|
||||||
|
|
||||||
ok = post_score_dao(req.model_dump(), db)
|
ok = post_score_dao(req.model_dump(), db)
|
||||||
if not ok:
|
if not ok:
|
||||||
raise HTTPException(status_code=400, detail="新增成绩失败,请检查学生id是否存在")
|
raise HTTPException(status_code=400, detail="新增成绩失败,请检查学生id是否存在")
|
||||||
return {"msg": "新增成功"}
|
return {"msg": "新增成功"}
|
||||||
|
|
||||||
|
|
||||||
@scores_router.get("", response_model=ScorePageResp, summary="查询成绩接口")
|
@scores_router.get("", response_model=ScorePageResp, summary="个人成绩查询接口")
|
||||||
def list_score(
|
def list_score(
|
||||||
score_id: int|None=None,
|
score_id: int|None=None,
|
||||||
student_id: int |None=None,
|
student_id: int |None=None,
|
||||||
@@ -32,6 +31,16 @@ def list_score(
|
|||||||
return {"total": total, "data": data_list}
|
return {"total": total, "data": data_list}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@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="更新成绩接口")
|
@scores_router.put("{score_id}", summary="更新成绩接口")
|
||||||
def modify_score(score_id: int, req: ScoreUpdate, db: Session = Depends(get_db)):
|
def modify_score(score_id: int, req: ScoreUpdate, db: Session = Depends(get_db)):
|
||||||
update_dict = req.model_dump(exclude_unset=True)
|
update_dict = req.model_dump(exclude_unset=True)
|
||||||
|
|||||||
+22
-1
@@ -1,4 +1,3 @@
|
|||||||
from sqlalchemy import DECIMAL
|
|
||||||
from models.score import Score
|
from models.score import Score
|
||||||
|
|
||||||
def post_score_dao(data_dict, db):
|
def post_score_dao(data_dict, db):
|
||||||
@@ -59,6 +58,28 @@ def get_score_dao(score_id, student_id, exam_seq, page, page_size, db):
|
|||||||
]
|
]
|
||||||
return total, res_list
|
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):
|
def delete_score_dao(score_id, db):
|
||||||
"""逻辑删除,更新is_deleted=1"""
|
"""逻辑删除,更新is_deleted=1"""
|
||||||
|
|||||||
Reference in New Issue
Block a user