第一次提交
This commit is contained in:
+123
@@ -0,0 +1,123 @@
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from model.scores import Scores
|
||||
|
||||
def add_score(db: Session, id: str, exam_round: int, score: int): #1.按考核序次录入考核成绩(包含字段:学生ID、考核序次、成绩)
|
||||
try:
|
||||
judgement_id = (db.query(Scores).
|
||||
filter(Scores.id == id,Scores.is_deleted == False).
|
||||
first()) # 通过外键class Student校验学生ID是否存在
|
||||
if not judgement_id:
|
||||
return {"code": 404, "msg": f"学生ID:{id}不存在,请去录入学生信息!"}
|
||||
|
||||
judgement_id_er = (db.query(Scores).
|
||||
filter(Scores.id == id,
|
||||
Scores.exam_round == exam_round,
|
||||
Scores.is_deleted == False).
|
||||
first()) # 本表校验同一学生、同一考核序次是否已录入
|
||||
if judgement_id_er:
|
||||
return {"code": 400, "msg": f"学生ID:{id}第{exam_round}次考核成绩已存在,请勿重复录入!"}
|
||||
|
||||
if score < 60: # 创建分数小于等于60分的记录并警告
|
||||
record = Scores(id=id,
|
||||
exam_round=exam_round,
|
||||
score=score,
|
||||
is_warning=True) #写入学生ID,考核序次,成绩,标记警告
|
||||
db.add(record)
|
||||
db.commit()
|
||||
db.refresh(record)
|
||||
return {"code": 200, "msg": f"学生ID:{id}第{exam_round}次考核成绩{score}分录入成功!成绩小于60分,需要多关注!"}
|
||||
else: # 创建分数大于等于60分的记录
|
||||
record = Scores(id=id,
|
||||
exam_round=exam_round,
|
||||
score=score) #写入学生ID,考核序次,成绩
|
||||
db.add(record)
|
||||
db.commit()
|
||||
db.refresh(record)
|
||||
return {"code": 200, "msg": f"学生ID:{id}第{exam_round}次考核成绩{score}分录入成功!"}
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
return {"code": 500, "msg": f"考核成绩录入失败: {e}"}
|
||||
|
||||
|
||||
def query_id(db: Session, id: str): #2.按学生ID过滤,成绩降序,考核序次升序,返回全部信息
|
||||
try:
|
||||
query_id = (db.query(Scores).
|
||||
filter(Scores.id == id,Scores.is_deleted == False).
|
||||
order_by(Scores.score.desc(),Scores.exam_round.asc()).
|
||||
all())
|
||||
if not query_id:
|
||||
return {"code": 404, "msg": "未查询到相关结果"}
|
||||
data = [{"id": o.id, "exam_round": o.exam_round, "score": o.score}for o in query_id]
|
||||
return {"code": 200, "msg": data}
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
return {"code": 500, "msg": f"未查询到相关结果:{e}"}
|
||||
|
||||
|
||||
def query_er(db: Session, exam_round: int): #3.按考核序次过滤,成绩降序,学生ID升序,返回全部信息
|
||||
try:
|
||||
query_er = (db.query(Scores).
|
||||
filter(Scores.exam_round == exam_round,Scores.is_deleted == False).
|
||||
order_by(Scores.score.desc(),Scores.id.asc()).
|
||||
all())
|
||||
if not query_er:
|
||||
return {"code": 404, "msg": "未查询到相关结果"}
|
||||
data = [{"id": p.id, "exam_round": p.exam_round, "score": p.score}for p in query_er]
|
||||
return {"code": 200, "msg": data}
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
return {"code": 500, "msg": f"未查询到相关结果: {e}"}
|
||||
|
||||
def query_sc(db: Session, score: int): #4.按成绩过滤,学生ID升序,考核序次升序,返回全部信息
|
||||
try:
|
||||
query_sc = (db.query(Scores).
|
||||
filter(Scores.score == score,Scores.is_deleted == False).
|
||||
order_by(Scores.id.asc(),Scores.exam_round.asc()).
|
||||
all())
|
||||
if not query_sc:
|
||||
return {"code": 404, "msg": "未查询到相关结果"}
|
||||
data = [{"id": q.id, "exam_round": q.exam_round, "score": q.score}for q in query_sc]
|
||||
return {"code": 200, "msg": data}
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
return {"code": 500, "msg": f"未查询到相关结果: {e}"}
|
||||
|
||||
|
||||
def update_sc(db: Session, id: str, exam_round: int, score: int): #5.根据学生ID、考核序次修改成绩
|
||||
try:
|
||||
update_sc = (db.query(Scores).
|
||||
filter(Scores.id == id,
|
||||
Scores.exam_round == exam_round,
|
||||
Scores.is_deleted == False).
|
||||
first())
|
||||
if not update_sc:
|
||||
return {"code": 404, "msg": "该成绩记录不存在"}
|
||||
update_sc.score = score
|
||||
update_sc.is_warning = score < 60
|
||||
db.commit()
|
||||
db.refresh(update_sc)
|
||||
return {"code": 200, "msg": f"学生ID:{id} 第{exam_round}次成绩已修改为{score}分!"}
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
return {"code": 500, "msg": f"考核成绩修改失败: {e}"}
|
||||
|
||||
|
||||
def delete_sc(db: Session, id: str, exam_round: int): #6.根据学生ID、考核序次删除成绩
|
||||
try:
|
||||
delete_sc = (db.query(Scores).
|
||||
filter(Scores.id == id,
|
||||
Scores.exam_round == exam_round,
|
||||
Scores.is_deleted == False).
|
||||
first())
|
||||
if not delete_sc:
|
||||
return {"code": 404, "msg": "成绩记录不存在"}
|
||||
delete_sc.is_deleted = True # 逻辑删除
|
||||
db.commit()
|
||||
db.refresh(delete_sc)
|
||||
return {"code": 200, "msg": f"学生ID:{id}第{exam_round}次成绩已删除!"}
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
return {"code": 500, "msg": f"考核成绩删除失败: {e}"}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user