diff --git a/PythonProject/api/employment_api.py b/PythonProject/api/employment_api.py new file mode 100644 index 0000000..e69de29 diff --git a/PythonProject/api/student_api.py b/PythonProject/api/student_api.py index b71aafc..db947bf 100644 --- a/PythonProject/api/student_api.py +++ b/PythonProject/api/student_api.py @@ -1,11 +1,44 @@ -from fastapi import APIRouter -from dao.student_dao import select_age +from fastapi import APIRouter,Depends,HTTPException from schema.student_schema import StudentResponse +from dao.student_dao import delete_student_dao,add_student_dao,update_student_dao,get_student_dao,select_age +from schema.student_schema import StudentRequest,StudentResponse +from model.student_model import Student_Model +from util.database import get_db -studentapi = APIRouter() -@studentapi.get("/age",response_model=StudentResponse,tags=['统计分析模块'],description='根据年龄查询学生信息') +StudentAPI = APIRouter() + +@StudentAPI.get("/age",response_model=StudentResponse,tags=['统计分析模块'],description='根据年龄查询学生信息') def get_students(min_age:int|None=None,max_age:int|None=None): l = select_age(min_age,max_age) return [i for i in l] +@StudentAPI.get('',description='查询学生信息') +def get_students(stu_id:int|None=None + ,stu_name:str|None=None + ,class_id:int|None=None + ,db=Depends(get_db) + ,page:int=1 + ,page_size:int=10): + r=get_student_dao(stu_id,stu_name,class_id,db,page,page_size) + if r: + return r + raise HTTPException(status_code=404,detail='学生不存在') + +@StudentAPI.put('/{stu_id}') +def update_orders(s:StudentRequest,stu_id:int,db=Depends(get_db)): + d = s.model_dump(exclude_unset=True) + r = update_student_dao( stu_id=stu_id,update_data=d,db=db ) + if not r: + raise HTTPException(status_code=500, detail='没有更新!') + return {'code':200,'totals':r,'detail':'更新成功'} + +@StudentAPI.delete('/{stu_id}') +def del_student(stu_id:int,db=Depends(get_db)): + rows=delete_student_dao( stu_id=stu_id,db=db ) + if not rows: + raise HTTPException(status_code=500,detail='没有删除') + return {'code':200,'totals':rows,'detail':'删除成功'} + + + diff --git a/PythonProject/dao/employment_dao.py b/PythonProject/dao/employment_dao.py new file mode 100644 index 0000000..e69de29 diff --git a/PythonProject/dao/student_dao.py b/PythonProject/dao/student_dao.py index 5188ffb..ab173e9 100644 --- a/PythonProject/dao/student_dao.py +++ b/PythonProject/dao/student_dao.py @@ -9,49 +9,61 @@ def select_age(min_age,max_age,session=Depends(get_db)): raise HTTPException(status_code=400, detail="请至少传入一个参数") session = session.query(Student_Model) if min_age is not None: - session = session.filter(Student_Model.age >= min_age) + session = session.filter(Student_Model.age >= min_age,Student_Model.delete_status == 0) if max_age is not None: - session = session.filter(Student_Model.age <= max_age) + session = session.filter(Student_Model.age <= max_age,Student_Model.delete_status == 0) return session.all() except HTTPException: raise except Exception: raise HTTPException(status_code=500,detail="查询异常") -def delete_student_dao(stu_id,db): +def add_student_dao(o,db=Depends(get_db)): try: - rows = db.query(Student_Model).filter(Student_Model.stu_id == stu_id).delete() + o1 = Student_Model( **o) + db.add(o1) + except: + db.rollback() + return False + else: + db.commit() + return True + +def delete_student_dao(stu_id,db=Depends(get_db)): + try: + rows = db.query(Student_Model).filter(Student_Model.stu_id == stu_id,Student_Model.delete_status == 0)\ + .update({'delete_status':1}) + db.commit() except: db.rollback() rows = 0 - else: - db.commit() finally: return rows -def update_student_dao(stu_id,update_data,db): +def update_student_dao(stu_id,update_data,db=Depends(get_db)): try: - rows = db.query( Student_Model ).filter( Student_Model.stu_id == stu_id ).update( update_data ) + rows = db.query( Student_Model ).filter( Student_Model.stu_id == stu_id,Student_Model.delete_status == 0).update( update_data ) except: db.rollback() return False else: db.commit() return rows + def get_student_dao(stu_id:Optional[int] ,stu_name:Optional[str] ,class_id:Optional[int] - ,db: Session ,page: int ,page_size: int + ,db=Depends(get_db) ) -> tuple[List[Dict[str, Any]], int]: q = db.query(Student_Model) if stu_id: - q = q.filter(Student_Model.stu_id == stu_id) + q = q.filter(Student_Model.stu_id == stu_id,Student_Model.delete_status == 0) if stu_name: - q = q.filter(Student_Model.stu_name.like(f"%{stu_name}%")) + q = q.filter(Student_Model.stu_name.like(f"%{stu_name}%"),Student_Model.delete_status == 0) if class_id: - q= q.filter(Student_Model.class_id == class_id) + q= q.filter(Student_Model.class_id == class_id,Student_Model.delete_status == 0) total = q.count() r = q.offset((page - 1) * page_size).limit(page_size).all() data = [] @@ -63,3 +75,5 @@ def get_student_dao(stu_id:Optional[int] ,'update_date': i.update_date }) return data, total + + diff --git a/PythonProject/dao/teacher_dao.py b/PythonProject/dao/teacher_dao.py index c02a3f7..b624a12 100644 --- a/PythonProject/dao/teacher_dao.py +++ b/PythonProject/dao/teacher_dao.py @@ -16,7 +16,7 @@ def add_teacher(req:Teacher_RequestModel,session=Depends(get_db)): def select_teacher(session=Depends(get_db)): try: - teacher_list=session.query(Teacher_Model).all() + teacher_list=session.query(Teacher_Model).filter(Teacher_Model.delete_status==0).all() return teacher_list except: raise HTTPException(status_code=500,detail="查询异常!") @@ -24,15 +24,16 @@ def select_teacher(session=Depends(get_db)): def update_teacher(id:int,req:Teacher_RequestModel,session=Depends(get_db)): try: session.query(Teacher_Model).filter(Teacher_Model.teac_id==id)\ - .update(req.model_dump(exclude_unset=True)) + .filter(Teacher_Model.delete_status==0).update(req.model_dump(exclude_unset=True)) session.commit() except: raise HTTPException(status_code=500,detail="更新异常!") def delete_teacher(id:int,session=Depends(get_db)): try: - session.query(Teacher_Model).filter(Teacher_Model.teac_id==id).delete() + session.query(Teacher_Model).filter(Teacher_Model.teac_id==id,Teacher_Model.delete_status==0)\ + .update({'delete_status':1}) session.commit() except: raise HTTPException(status_code=500,detail="删除异常") - return {'code':200,'details':'删除成功'} \ No newline at end of file + return {'code':200,'details':'删除成功'} diff --git a/PythonProject/model/cla_model.py b/PythonProject/model/cla_model.py index 3371f7e..286bd92 100644 --- a/PythonProject/model/cla_model.py +++ b/PythonProject/model/cla_model.py @@ -1,6 +1,6 @@ - -from sqlalchemy import DateTime,Date,Column,Integer,ForeignKey,Boolean,String +from sqlalchemy import DATETIME,Date,Column,Integer,ForeignKey,String from util.database import Base,engine +from datetime import datetime class ClassManagement(Base): __tablename__ = "wl_class" @@ -15,14 +15,13 @@ class ClassManagement(Base): class_teacher_id = Column(Integer,ForeignKey('wl_teacher.id'),comment='授课教师') - Entry_date= Column(DateTime,comment='录入时间') + Entry_date= Column(DATETIME,default=datetime.now,comment='录入时间') - update_date = Column(DateTime,comment='更新时间') + update_date = Column(DATETIME,default=datetime.now,onupdate=datetime.now,comment='更新时间') - delete_status = Column( - Integer,default=0,comment='删除状态:0未删除,1已删除') + delete_status = Column(Integer,default=0,comment='删除状态:0未删除,1已删除') - delete_time = Column(DateTime, nullable=True, comment='删除时间') + delete_time = Column(DATETIME,default=datetime.now,onupdate=datetime.now,comment='删除时间') Base.metadata.create_all(engine) diff --git a/PythonProject/model/employment_model.py b/PythonProject/model/employment_model.py index 5d1abe3..e5930f8 100644 --- a/PythonProject/model/employment_model.py +++ b/PythonProject/model/employment_model.py @@ -56,4 +56,6 @@ class Employment_info(Base): delete_status = Column( Integer,default=0,comment='删除状态:0未删除,1已删除') + delete_time = Column(DATETIME,default=datetime.now,onupdate=datetime.now,comment='删除时间') + Base.metadata.create_all(engine) \ No newline at end of file diff --git a/PythonProject/model/grade_model.py b/PythonProject/model/grade_model.py index 50856a3..a1235e1 100644 --- a/PythonProject/model/grade_model.py +++ b/PythonProject/model/grade_model.py @@ -1,4 +1,4 @@ -from sqlalchemy import Column, Integer, Numeric, DateTime,ForeignKey +from sqlalchemy import Column, Integer, Numeric, DATETIME,ForeignKey from datetime import datetime from util.database import Base,engine @@ -24,12 +24,12 @@ class WlScore(Base): score=Column(Numeric(5, 2) , comment="成绩") - create_time = Column(DateTime + create_time = Column(DATETIME , nullable=False , default=datetime.now , comment="作成时间") - update_time = Column(DateTime + update_time = Column(DATETIME , nullable=False , default=datetime.now , onupdate=datetime.now @@ -38,5 +38,6 @@ class WlScore(Base): delete_status = Column( Integer,default=0,comment='删除状态:0未删除,1已删除') -Base.metadata.create_all(engine) + delete_time = Column(DATETIME,default=datetime.now,onupdate=datetime.now,comment='删除时间') +Base.metadata.create_all(engine) diff --git a/PythonProject/model/student_model.py b/PythonProject/model/student_model.py index d44ebe5..1a11e87 100644 --- a/PythonProject/model/student_model.py +++ b/PythonProject/model/student_model.py @@ -47,4 +47,6 @@ class Student_Model(Base): delete_status = Column( Integer,default=0,comment='删除状态:0未删除,1已删除') + delete_time = Column(DATETIME,default=datetime.now,onupdate=datetime.now,comment='删除时间') + Base.metadata.create_all(engine) diff --git a/PythonProject/model/teacher_model.py b/PythonProject/model/teacher_model.py index d91c4a3..257366d 100644 --- a/PythonProject/model/teacher_model.py +++ b/PythonProject/model/teacher_model.py @@ -22,5 +22,7 @@ class Teacher_Model(Base): delete_status = Column( Integer,default=0,comment='删除状态:0未删除,1已删除') + delete_time = Column(DATETIME,default=datetime.now,onupdate=datetime.now,comment='删除时间') + Base.metadata.create_all(engine) diff --git a/PythonProject/schema/cla_schema.py b/PythonProject/schema/cla_schema.py new file mode 100644 index 0000000..5d64fcb --- /dev/null +++ b/PythonProject/schema/cla_schema.py @@ -0,0 +1,34 @@ +from datetime import date +from pydantic import BaseModel +from sqlalchemy import DATETIME + +class claRequest(BaseModel): + + class_name : str|None = None + + start_class_date :date + + head_teacher_id : int|None = None + + class_teacher_id : int|None = None + + Entry_date : DATETIME + + update_date : DATETIME + + delete_status : int|None = None + + delete_time : DATETIME + +class claResponse(BaseModel): + + code:int = 200 + + detail:str = 'ok' + + class_name = str + + head_teacher_id = int + + class_teacher_id = int + diff --git a/PythonProject/schema/employment_schema.py b/PythonProject/schema/employment_schema.py new file mode 100644 index 0000000..e69de29 diff --git a/PythonProject/schema/teacher_schema.py b/PythonProject/schema/teacher_schema.py index 79a6167..696276b 100644 --- a/PythonProject/schema/teacher_schema.py +++ b/PythonProject/schema/teacher_schema.py @@ -10,8 +10,6 @@ class Teacher_RequestModel(BaseModel): teac_position:str delete_status:int - - class Teacher_ResponseModel(BaseModel): code:int=200 detail:str='OK!' diff --git a/需求文档.md b/需求文档.md index 84d2090..741fc92 100644 --- a/需求文档.md +++ b/需求文档.md @@ -23,10 +23,10 @@ dao层(每一个功能就是一个函数,判断能否功能复用) 通用模块 学生模块 -实现增加学生的功能 **xxx 做成中** -实现查询学生的功能:需要能进行多条件查询 **xxx 做成中** -实现更新学生信息的功能 **xxx 做成中** -实现删除学生信息的功能 (更新删除状态这个列,即软删除)**xxx 做成中** +实现增加学生的功能 **msj 做成中** +实现查询学生的功能:需要能进行多条件查询 **msj 做成中** +实现更新学生信息的功能 **msj 做成中** +实现删除学生信息的功能 (更新删除状态这个列,即软删除)**msj 做成中** 成绩模块 实现增加学生成绩的功能 **hzl 做成中**