test二轮完成的版本,并入了浩钦的班级模块

This commit is contained in:
2026-09-13 17:20:15 +08:00
parent c4ae803a34
commit 8ad76cc68b
3 changed files with 29 additions and 26 deletions
+24 -23
View File
@@ -1,31 +1,31 @@
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from sqlalchemy import func from sqlalchemy import func
from model.wl_student_model import student from model.wl_student_model import Student
from model.wl_class_model import Class # 你同学写的 from model.wl_class_model import Class_ # 你同学写的
from scheme.wl_student_scheme import StudentCreate, StudentUpdate from scheme.wl_student_scheme import StudentCreate, StudentUpdate
# ---- 学号生成 ---- # ---- 学号生成 ----
def generate_stu_no(db: Session, class_id: int, seq: int = None) -> str: def generate_stu_no(db: Session, class_id: int, seq: int = None) -> str:
#非测试就解除下面5行测试,注释date_str = "20260912" #非测试就解除下面5行测试,注释date_str = "20260912"
# cls = db.query(class_).filter_by(class_id=class_id).first() cls = db.query(Class_).filter_by(class_id=class_id).first()
# if not cls or not cls.start_time: if not cls or not cls.start_time:
# raise ValueError("班级不存在或未设置开班时间") raise ValueError("班级不存在或未设置开班时间")
# date_str = cls.start_time.strftime("%Y%m%d") date_str = cls.start_time.strftime("%Y%m%d")
# 直接写死一个日期字符串用于测试 # 直接写死一个日期字符串用于测试
date_str = "20260912" # date_str = "20260912"
if seq is None: if seq is None:
count = db.query(func.count(student.stu_id)) \ count = db.query(func.count(Student.stu_id)) \
.filter(student.class_id == class_id).scalar() or 0 .filter(Student.class_id == class_id).scalar() or 0
seq = count + 1 seq = count + 1
return f"{date_str}{seq:03d}" 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_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.add(stu)
db.commit() db.commit()
db.refresh(stu) 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, def search_students(db: Session, stu_no=None, stu_name=None,
class_id=None, advisor_id=None, status=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: 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: 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: if class_id:
q = q.filter(student.class_id == class_id) q = q.filter(Student.class_id == class_id)
if advisor_id: if advisor_id:
q = q.filter(student.advisor_id == advisor_id) q = q.filter(Student.advisor_id == advisor_id)
if status: #学生model没有status,先注释
q = q.filter(student.status == status) # if status:
# q = q.filter(Student.status == status)
return q.all() return q.all()
def get_student_by_no(db: Session, stu_no: str) -> student | None: def get_student_by_no(db: Session, stu_no: str) -> Student | None:
return db.query(student).filter( return db.query(Student).filter(
student.stu_no == stu_no, Student.stu_no == stu_no,
student.is_deleted == 0 Student.is_deleted == 0
).first() ).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) stu = get_student_by_no(db, stu_no)
if not stu: if not stu:
return None return None
+2 -2
View File
@@ -1,6 +1,6 @@
#项目初始化入口 #项目初始化入口
from fastapi import FastAPI 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 database import Base, engine
from model import wl_student_model as student_model from model import wl_student_model as student_model
from model import wl_class_model,wl_advisor_model from model import wl_class_model,wl_advisor_model
@@ -9,7 +9,7 @@ Base.metadata.create_all(bind=engine)
app = FastAPI(title="沃林学生管理系统") app = FastAPI(title="沃林学生管理系统")
app.include_router(wl_student_api.router) app.include_router(wl_student_api.router)
app.include_router(wl_class_api.router)
if __name__ == "__main__": if __name__ == "__main__":
import uvicorn import uvicorn
+2
View File
@@ -6,3 +6,5 @@ class Class_(Base):
class_id = Column(Integer, primary_key=True, autoincrement=True, comment="班级编号") class_id = Column(Integer, primary_key=True, autoincrement=True, comment="班级编号")
start_time = Column(Date, comment="开课时间") start_time = Column(Date, comment="开课时间")
# 逻辑删除标记(0代表正常,1代表已删除)
is_deleted = Column(Integer, default=0, comment="逻辑删除标记")