diff --git a/dao/wl_student_dao.py b/dao/wl_student_dao.py index c2aa714..d306860 100644 --- a/dao/wl_student_dao.py +++ b/dao/wl_student_dao.py @@ -1,31 +1,31 @@ from sqlalchemy.orm import Session from sqlalchemy import func -from model.wl_student_model import student -from model.wl_class_model import Class # 你同学写的 +from model.wl_student_model import Student +from model.wl_class_model import Class_ # 你同学写的 from scheme.wl_student_scheme import StudentCreate, StudentUpdate # ---- 学号生成 ---- def generate_stu_no(db: Session, class_id: int, seq: int = None) -> str: #非测试就解除下面5行测试,注释date_str = "20260912" - # cls = db.query(class_).filter_by(class_id=class_id).first() - # if not cls or not cls.start_time: - # raise ValueError("班级不存在或未设置开班时间") - # date_str = cls.start_time.strftime("%Y%m%d") + cls = db.query(Class_).filter_by(class_id=class_id).first() + if not cls or not cls.start_time: + raise ValueError("班级不存在或未设置开班时间") + date_str = cls.start_time.strftime("%Y%m%d") # 直接写死一个日期字符串用于测试 - date_str = "20260912" + # date_str = "20260912" if seq is None: - count = db.query(func.count(student.stu_id)) \ - .filter(student.class_id == class_id).scalar() or 0 + count = db.query(func.count(Student.stu_id)) \ + .filter(Student.class_id == class_id).scalar() or 0 seq = count + 1 return f"{date_str}{seq:03d}" # ---- 增 ---- -def create_student(db: Session, data: StudentCreate) -> student: +def create_student(db: Session, data: StudentCreate) -> Student: stu_no = generate_stu_no(db, data.class_id) - stu = student(stu_no=stu_no, **data.model_dump()) + stu = Student(stu_no=stu_no, **data.model_dump()) db.add(stu) db.commit() db.refresh(stu) @@ -35,29 +35,30 @@ def create_student(db: Session, data: StudentCreate) -> student: # ---- 查(多条件)---- def search_students(db: Session, stu_no=None, stu_name=None, class_id=None, advisor_id=None, status=None): - q = db.query(student).filter(student.is_deleted == 0) # 若加了逻辑删除字段 + q = db.query(Student).filter(Student.is_deleted == 0) # 若加了逻辑删除字段 if stu_no: - q = q.filter(student.stu_no.like(f"%{stu_no}%")) + q = q.filter(Student.stu_no.like(f"%{stu_no}%")) if stu_name: - q = q.filter(student.stu_name.like(f"%{stu_name}%")) + q = q.filter(Student.stu_name.like(f"%{stu_name}%")) if class_id: - q = q.filter(student.class_id == class_id) + q = q.filter(Student.class_id == class_id) if advisor_id: - q = q.filter(student.advisor_id == advisor_id) - if status: - q = q.filter(student.status == status) + q = q.filter(Student.advisor_id == advisor_id) + #学生model没有status,先注释 + # if status: + # q = q.filter(Student.status == status) return q.all() -def get_student_by_no(db: Session, stu_no: str) -> student | None: - return db.query(student).filter( - student.stu_no == stu_no, - student.is_deleted == 0 +def get_student_by_no(db: Session, stu_no: str) -> Student | None: + return db.query(Student).filter( + Student.stu_no == stu_no, + Student.is_deleted == 0 ).first() # ---- 改 ---- -def update_student(db: Session, stu_no: str, data: StudentUpdate) -> student | None: +def update_student(db: Session, stu_no: str, data: StudentUpdate) -> Student | None: stu = get_student_by_no(db, stu_no) if not stu: return None diff --git a/main.py b/main.py index 10e1ed1..d885b0c 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,6 @@ #项目初始化入口 from fastapi import FastAPI -from api import wl_student_api # 周学灵的路由 +from api import wl_student_api,wl_class_api # 周学灵、熊浩钦的路由 from database import Base, engine from model import wl_student_model as student_model from model import wl_class_model,wl_advisor_model @@ -9,7 +9,7 @@ Base.metadata.create_all(bind=engine) app = FastAPI(title="沃林学生管理系统") app.include_router(wl_student_api.router) - +app.include_router(wl_class_api.router) if __name__ == "__main__": import uvicorn diff --git a/model/wl_class_model.py b/model/wl_class_model.py index 678ad65..65d1600 100644 --- a/model/wl_class_model.py +++ b/model/wl_class_model.py @@ -5,4 +5,6 @@ class Class_(Base): __tablename__ = "class_info" class_id = Column(Integer, primary_key=True, autoincrement=True, comment="班级编号") - start_time = Column(Date, comment="开课时间") \ No newline at end of file + start_time = Column(Date, comment="开课时间") + # 逻辑删除标记(0代表正常,1代表已删除) + is_deleted = Column(Integer, default=0, comment="逻辑删除标记") \ No newline at end of file