86 lines
2.7 KiB
Python
86 lines
2.7 KiB
Python
from sqlalchemy import and_
|
|||
|
|
from sqlalchemy.orm import Session
|
||
|
|
from model.classes import Class # ← 必须:操作 ORM 模型
|
||
|
|
from scheme.classes import ClassCreate, ClassUpdate # ← 必须:类型注解
|
||
|
|
|
||
|
|
class ClassDao:
|
||
|
|
# 新增
|
||
|
|
@staticmethod
|
||
|
|
def create_class_list(db:Session,data:ClassCreate):
|
||
|
|
cls = Class(
|
||
|
|
cid=data.cid,
|
||
|
|
class_name=data.class_name,
|
||
|
|
start_time=data.start_time,
|
||
|
|
headteacher=data.headteacher,
|
||
|
|
flag=1
|
||
|
|
)
|
||
|
|
db.add(cls)
|
||
|
|
db.commit()
|
||
|
|
db.refresh(cls)
|
||
|
|
return cls
|
||
|
|
|
||
|
|
# 查询,查询单个
|
||
|
|
@staticmethod
|
||
|
|
def get_class(db:Session,class_id:int):
|
||
|
|
return db.query(Class).filter(and_(Class.cid==class_id,Class.flag==1)).first()
|
||
|
|
# def get_all_class(db:Session):
|
||
|
|
# return db.query(Class).filter(Class.flag==1).all()
|
||
|
|
@staticmethod
|
||
|
|
def get_class_list(db:Session,cid:None,class_name:None,headteacher:None,page=1, size=10):
|
||
|
|
query = db.query(Class).filter(Class.flag == 1)
|
||
|
|
if cid:
|
||
|
|
query=query.filter(Class.cid == cid)
|
||
|
|
if class_name:
|
||
|
|
query=query.filter(Class.class_name == class_name)
|
||
|
|
if headteacher:
|
||
|
|
query=query.filter(Class.headteacher == headteacher)
|
||
|
|
total = query.count()
|
||
|
|
items=query.order_by(Class.cid).offset((page-1)*size).limit(size).all()
|
||
|
|
return total, items
|
||
|
|
|
||
|
|
# 查询全部
|
||
|
|
@staticmethod
|
||
|
|
def get_all_class(db:Session):
|
||
|
|
return db.query(Class).filter(Class.flag==1).all()
|
||
|
|
# 查询学生
|
||
|
|
@staticmethod
|
||
|
|
def get_class_student(db:Session,class_id:int):
|
||
|
|
cls = ClassDao.get_class(db,class_id)
|
||
|
|
if not cls:
|
||
|
|
return None
|
||
|
|
return {"id": Class.student.sid, "name": Class.student.name, "age": Class.student.age, "gender": Class.student.gender}
|
||
|
|
#查询老师
|
||
|
|
@staticmethod
|
||
|
|
def get_class_teacher(db:Session,class_id:int):
|
||
|
|
cls = ClassDao.get_class(db,class_id)
|
||
|
|
if not cls:
|
||
|
|
return None
|
||
|
|
return {"id":Class.teachers.id,"name":Class.teachers.name}
|
||
|
|
|
||
|
|
# 更新
|
||
|
|
@staticmethod
|
||
|
|
def update_class(db:Session,class_id:int,data:ClassUpdate):
|
||
|
|
cls = ClassDao.get_class(db,class_id)
|
||
|
|
if not cls:
|
||
|
|
return None
|
||
|
|
if cls.class_name:
|
||
|
|
cls.class_name = data.class_name
|
||
|
|
if cls.headteacher:
|
||
|
|
cls.headteacher = data.headteacher
|
||
|
|
db.commit()
|
||
|
|
return cls
|
||
|
|
|
||
|
|
# 删除
|
||
|
|
@staticmethod
|
||
|
|
def delete_class(db:Session,cid:int):
|
||
|
|
cls = ClassDao.get_class(db,cid)
|
||
|
|
if not cls:
|
||
|
|
return False
|
||
|
|
cls.flag=0
|
||
|
|
db.commit()
|
||
|
|
db.refresh(cls)
|
||
|
|
return cls
|
||
|
|
|
||
|
|
|
||
|
|
|