from sqlalchemy.orm import Session from model.wl_class_model import Class_ from model.wl_student_model import Student from fastapi import HTTPException # 老师模块加入后解除注释 # from model.teacher import WlTeacher # 1. 新增班级 def create_class(db: Session, class_data: dict): new_class = Class_(**class_data) db.add(new_class) db.commit() db.refresh(new_class) return new_class # 2. 查询班级列表(你的亮点:查出了班主任和授课老师) def get_classes(db: Session, skip: int = 0, limit: int = 100): # 先查出所有没被删除的班级 class_list = db.query(Class_).filter(Class_.is_deleted == 0).offset(skip).limit(limit).all() #下面的部分等导入老师模块后解除注释 # # 循环每个班级,去老师表里找对应的老师 # for c in class_list: # # 找班主任(role是"班主任"的第一个老师) # head_teacher = db.query(WlTeacher).filter( # WlTeacher.class_id == c.class_id, # WlTeacher.role == "班主任" # ).first() # # # 找授课老师(可能有多个,用逗号拼起来) # course_teachers = db.query(WlTeacher).filter( # WlTeacher.class_id == c.class_id, # WlTeacher.role == "任课" # ).all() # # # 把查到的名字塞给班级对象,方便传给前端 # c.head_teacher_name = head_teacher.t_name if head_teacher else "暂无" # # 下面这两行是初学者常用的拼接字符串写法 # if course_teachers: # names = [] # for t in course_teachers: # names.append(t.t_name) # c.course_teacher_names = ",".join(names) # else: # c.course_teacher_names = "暂无" return class_list # 3. 根据ID查班级 def get_class_by_id(db: Session, class_id: int): return db.query(Class_).filter(Class_.class_id == class_id, Class_.is_deleted == 0).first() # 4. 修改班级信息 def update_class(db: Session, class_id: int, class_data: dict): db_class = get_class_by_id(db, class_id) if not db_class: return None # 前端传了什么,就改什么(防止把没传的字段改成空值) for key, value in class_data.items(): setattr(db_class, key, value) db.commit() db.refresh(db_class) return db_class # 5. 逻辑删除班级(你的亮点:安全检查) def delete_class(db: Session, class_id: int): db_class = get_class_by_id(db, class_id) if not db_class: return {"code": 404, "msg": "班级不存在"} # 检查1:班里还有学生吗?(只要有1个,就不给删) student = db.query(Student).filter( Student.class_id == class_id, Student.is_deleted == 0 ).first() if student: raise HTTPException(status_code=400, detail="该班级还有学生,不能删除!") #导入老师模块后解除注释 # 检查2:班里还有老师吗? # teacher = db.query(WlTeacher).filter(WlTeacher.class_id == class_id).first() # if teacher: # return {"code": 400, "msg": "该班级还有老师,不能删除!"} # 检查通过,开始逻辑删除(贴个已删除标签) db_class.is_deleted = 1 db.commit() return {"code": 200, "msg": "班级删除成功"}