添加 student/dao/score_dao.py
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# dao/score_dao.py
|
||||
from sqlalchemy.orm import Session
|
||||
from model.score import Score
|
||||
from model.student import Student
|
||||
|
||||
|
||||
# 查
|
||||
|
||||
# 查一个学生所有成绩
|
||||
|
||||
def get_score(db: Session, student_id: int):
|
||||
return db.query(Score).filter(
|
||||
Score.student_id == student_id,
|
||||
Score.is_deleted == 0,
|
||||
).order_by(Score.exam_seq.asc()).all()
|
||||
|
||||
|
||||
|
||||
# 查某学生的某次成绩
|
||||
def get_one_score(db: Session, student_id: int, exam_seq: int):
|
||||
|
||||
return db.query(Score).filter(
|
||||
Score.student_id == student_id,
|
||||
Score.exam_seq == exam_seq,
|
||||
Score.is_deleted == 0,
|
||||
).first()
|
||||
|
||||
|
||||
|
||||
# 查不及格的
|
||||
def get_warning(db: Session):
|
||||
return db.query(Score).filter(
|
||||
Score.is_warning == 1,
|
||||
Score.is_deleted == 0,
|
||||
).all()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 录
|
||||
|
||||
|
||||
# 录信息
|
||||
def add_score(db: Session, student_id: int, exam_seq: int, score: float):
|
||||
|
||||
stu = db.query(Student).filter(Student.id == student_id).first()
|
||||
if not stu:
|
||||
return None, "学生不存在"
|
||||
|
||||
|
||||
exists = get_one_score(db, student_id, exam_seq)
|
||||
if exists:
|
||||
return None, "该学生这次成绩已录过"
|
||||
|
||||
|
||||
|
||||
new_score = Score(
|
||||
student_id=student_id,
|
||||
exam_seq=exam_seq,
|
||||
score=score,
|
||||
is_warning=1 if score < 60 else 0,
|
||||
is_deleted=0,
|
||||
)
|
||||
db.add(new_score)
|
||||
db.commit()
|
||||
db.refresh(new_score)
|
||||
return new_score, None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 改
|
||||
|
||||
# 改成绩
|
||||
|
||||
def update_score(db: Session, student_id: int, exam_seq: int, new_score: float):
|
||||
|
||||
|
||||
obj = get_one_score(db, student_id, exam_seq)
|
||||
if not obj:
|
||||
return None, "成绩不存在或已删除"
|
||||
|
||||
obj.score = new_score
|
||||
|
||||
# 如果不及格 预警重置
|
||||
obj.is_warning = 1 if new_score < 60 else 0
|
||||
|
||||
db.commit()
|
||||
db.refresh(obj)
|
||||
return obj, None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 逻辑删除
|
||||
|
||||
|
||||
def delete_score(db: Session, student_id: int, exam_seq: int):
|
||||
# 把删除的学生0改成1
|
||||
|
||||
obj = get_one_score(db, student_id, exam_seq)
|
||||
|
||||
if not obj:
|
||||
return None, "成绩不存在或已删除"
|
||||
|
||||
|
||||
# 0 → 1
|
||||
obj.is_deleted = 1
|
||||
db.commit()
|
||||
return obj, None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user