Merge branch 'main' into zhangyi
# Conflicts: # models/class_teacher.py # models/teacher.py
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
from models.class_model import Classes
|
||||
|
||||
|
||||
def post_classes_dao( c , db ):
|
||||
try :
|
||||
cc = Classes( **c )
|
||||
db.add( cc )
|
||||
except :
|
||||
db.rollback()
|
||||
return False
|
||||
else :
|
||||
db.commit()
|
||||
return True
|
||||
|
||||
def update_classes_dao( class_id , db , updates ):
|
||||
try :
|
||||
db.query( Classes ).filter( Classes.id==class_id , Classes.is_deleted==0 ) .update( updates )
|
||||
except :
|
||||
db.rollback()
|
||||
return False
|
||||
else :
|
||||
db.commit()
|
||||
return True
|
||||
|
||||
# def get_classes_dao( class_id , class_name , db ):
|
||||
# try :
|
||||
# r = db.query( Classes ).filter( Classes.id==class_id , Classes.is_deleted==0 ) .all()
|
||||
# except :
|
||||
# db.rollback()
|
||||
@@ -0,0 +1,82 @@
|
||||
from models.consultant import Consultant
|
||||
from schemas.consultant import ConsultantCreate, ConsultantUpdate
|
||||
from sqlalchemy.orm import Session
|
||||
def create_consultant(db:Session, obj_in: ConsultantCreate):
|
||||
try:
|
||||
db_obj = Consultant(**obj_in.model_dump())
|
||||
db.add(db_obj)
|
||||
except:
|
||||
db.rollback()
|
||||
return False
|
||||
else:
|
||||
db.commit()
|
||||
return db_obj
|
||||
# 查询全部可分页(过滤已删除)
|
||||
def get_consultant_list(
|
||||
db: Session,
|
||||
page: int = 1,
|
||||
page_size: int = 20,
|
||||
name: str | None = None,
|
||||
phone: str | None = None
|
||||
):
|
||||
page_size = max(1, min(page_size, 100))
|
||||
skip = (page - 1) * page_size
|
||||
|
||||
query = db.query(Consultant).filter(Consultant.is_deleted == 0)
|
||||
# 有传参数才追加过滤条件
|
||||
if name:
|
||||
query = query.filter(Consultant.consultant_name.like(f"%{name}%"))
|
||||
if phone:
|
||||
query = query.filter(Consultant.phone.like(f"%{phone}%"))
|
||||
|
||||
total = query.count()
|
||||
items = query.offset(skip).limit(page_size).all()
|
||||
|
||||
return {
|
||||
"items": items,
|
||||
"total": total,
|
||||
"page": page,
|
||||
"page_size": page_size
|
||||
}
|
||||
|
||||
|
||||
|
||||
# 根据id查单条
|
||||
def get_consultant_by_id(db:Session, cid: int):
|
||||
return db.query(Consultant).filter(Consultant.id == cid, Consultant.is_deleted == 0 ).first()
|
||||
|
||||
|
||||
# 修改
|
||||
def update_consultant(db: Session, cid: int, update_data: dict):
|
||||
try:
|
||||
db_obj = db.query(Consultant).filter(
|
||||
Consultant.id == cid,
|
||||
Consultant.is_deleted == 0
|
||||
).first()
|
||||
if not db_obj:
|
||||
return None
|
||||
# 循环赋值
|
||||
for k, v in update_data.items():
|
||||
setattr(db_obj, k, v)
|
||||
db.commit()
|
||||
db.refresh(db_obj) # 刷新从数据库拿最新数据(updated_at)
|
||||
return db_obj
|
||||
except Exception:
|
||||
db.rollback()
|
||||
return None
|
||||
|
||||
|
||||
|
||||
# 逻辑删除(只改is_deleted=1)
|
||||
def delete_consultant(db:Session, cid: int):
|
||||
try:
|
||||
db_obj = get_consultant_by_id(db, cid)
|
||||
if not db_obj:
|
||||
return None
|
||||
db_obj.is_deleted = 1
|
||||
except:
|
||||
db.rollback()
|
||||
return None
|
||||
else:
|
||||
db.commit()
|
||||
return db_obj
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
from DoubaoTeam.schemas.statistics import NoExist
|
||||
from sqlalchemy import func
|
||||
|
||||
#`GET /statistics/students/age-over-30`
|
||||
#查询所有超过 30 岁的学员信息
|
||||
|
||||
def age_over_thirty(Student,db):
|
||||
student_list=db.query(Student).filter(Student.age>=30).all()
|
||||
if not student_list :
|
||||
raise NoExist('无目标年龄大于30岁')
|
||||
return student_list
|
||||
|
||||
def gender_count(Student,db):
|
||||
result=db.query(Student.class_id,Student.gender,func.count(Student.id)).group_by(Student.class_id,Student.gender).all()
|
||||
if not result :
|
||||
raise NoExist('班里招点人吧,要倒闭了')
|
||||
dict1 = {}
|
||||
for i,j,k in result:
|
||||
if i not in dict1 :
|
||||
dict1[i]={'男':0,'女':0}
|
||||
dict[i][j]+=k
|
||||
return dict1
|
||||
#查询每次考试成绩都在 80 分以上的学生编号、姓名和成绩
|
||||
def score_over_eighty(Score,Student,db):
|
||||
student_list=db.query(Student.id, Student.student_name)\
|
||||
.join(Student,Score.student_id==Student.id).group_by(Student.student_no,Student.student_name)\
|
||||
.having(func.min(Score.score)>80).all()
|
||||
for i in student_list:
|
||||
student_list2 = db.query(Student.student_no, Student.student_name,Score.score).join(Student,Score.student_id==Student.id).filter(i.id==Student.id).all()
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
from schemas.student import *
|
||||
from core.database import get_db
|
||||
from models.student import *
|
||||
from utils.code_generator import generate_no
|
||||
|
||||
|
||||
def create_students(d,db):
|
||||
stu = Student(**d)
|
||||
try:
|
||||
db.add(stu)
|
||||
generate_no("student_no", "STU", stu, db)
|
||||
db.commit()
|
||||
except:return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user