删除目录「model」
This commit is contained in:
@@ -1,116 +0,0 @@
|
||||
# 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
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
|
||||
# model/score.py
|
||||
from sqlalchemy import Column, Integer, Float, ForeignKey, DateTime
|
||||
from sqlalchemy.orm import relationship
|
||||
from datetime import datetime
|
||||
from database import Base
|
||||
|
||||
|
||||
class Score(Base):
|
||||
__tablename__ = "score"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True) # 主键
|
||||
student_id = Column(Integer, ForeignKey("student.id"), nullable=False) #外键
|
||||
exam_seq = Column(Integer, nullable=False)
|
||||
score = Column(Float, nullable=False)
|
||||
is_warning = Column(Integer, default=0) #低分预警 0正常 1不及格
|
||||
is_deleted = Column(Integer, default=0) #是否被逻辑删除
|
||||
|
||||
create_time = Column(DateTime, default=datetime.now)
|
||||
student = relationship("Student", back_populates="scores")
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user