forked from wolin_ck666_999/StuManagerSys
Merge pull request 'Ck' (#2) from ck into main
Reviewed-on: wolin_ck666_999/StuManagerSys#2
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
from fastapi import APIRouter,Depends,UploadFile,File,Query
|
||||
from model.teaModel import Session
|
||||
from dao.teaDao import insert_teachers_dao,update_teachers_dao,delete_teachers_dao,get_teachers_limit_dao,get_teachers_name_dao
|
||||
from schema.teaSchema import RequestModel, ResponseModel
|
||||
|
||||
t_router = APIRouter()
|
||||
|
||||
def get_db():
|
||||
db = Session()
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@t_router.get("/teachers",tags=['教师接口信息'],summary='分页查询教师接口')
|
||||
def get_teachers(p:int=Query(default=0,ge=0,description='页码,0表示查询全部'),
|
||||
n:int=Query(default=0,ge=0,description='每页条数,0表示查询全部'),
|
||||
db=Depends(get_db)):
|
||||
db_teachers = get_teachers_limit_dao(p,n,db)
|
||||
return ResponseModel(data=db_teachers,total=len(db_teachers))
|
||||
|
||||
@t_router.get("/teachers/{name}",tags=['教师接口信息'],summary='分页查询教师接口')
|
||||
def get_name_teachers(name:str,db=Depends(get_db)):
|
||||
db_teachers = get_teachers_name_dao(name,db)
|
||||
return ResponseModel(data=db_teachers,total=len(db_teachers))
|
||||
|
||||
@t_router.post("/teachers",tags=['教师接口信息'],summary='新增教师接口')
|
||||
def insert_teachers(req:RequestModel,db=Depends(get_db)):
|
||||
rq= req.model_dump()
|
||||
n,m = insert_teachers_dao(rq,db)
|
||||
# print('打印获取的值:',n,m)
|
||||
return ResponseModel(total=n,msg=m)
|
||||
|
||||
@t_router.put("/teachers/{t_id}",tags=['教师接口信息'],summary='更新教师接口')
|
||||
def update_teachers(req:RequestModel,t_id:int,db=Depends(get_db),):
|
||||
rq= req.model_dump()
|
||||
n,m = update_teachers_dao(rq,db,t_id)
|
||||
return ResponseModel(total=n,msg=m)
|
||||
|
||||
@t_router.delete("/teachers/{t_id}",tags=['教师接口信息'],summary='删除教师接口')
|
||||
def delete_teachers(t_id:int,db=Depends(get_db)):
|
||||
n,m =delete_teachers_dao(t_id,db)
|
||||
return ResponseModel(msg=m,total=n)
|
||||
|
||||
@t_router.post('/files',tags=['文件接口信息'],summary='上传文件接口')
|
||||
async def upload_files(f:UploadFile=File(),db=Depends(get_db)):
|
||||
# print('UploadFile上传文件,读取该对象:',f)
|
||||
text =await f.read()
|
||||
l =text.decode('utf-8').split('\n')
|
||||
lg = 0
|
||||
dt = []
|
||||
print('长度为',lg,l)
|
||||
for i in l:
|
||||
if '名字' in i:
|
||||
continue
|
||||
p = i.split()
|
||||
if not p: # 判断如果p为[],跳过
|
||||
continue
|
||||
l2 = ['t_name','t_age','t_phone','t_sex','class_id']
|
||||
d =dict()
|
||||
for j in range(len(p)):
|
||||
d[l2[j]]=p[j]
|
||||
insert_teachers_dao(d,db)
|
||||
lg = lg + 1
|
||||
dt.append(d)
|
||||
return ResponseModel(msg='上传成功',total=lg,data=dt)
|
||||
@@ -0,0 +1,63 @@
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from fastapi import HTTPException
|
||||
from model.teaModel import Teacher
|
||||
|
||||
def get_teachers_limit_dao(p,n,db):
|
||||
if p == 0 and n == 0:
|
||||
r = db.query(Teacher).all()
|
||||
else:
|
||||
if p < 1:
|
||||
p = 1
|
||||
r = db.query(Teacher).offset((p-1)*n).limit(n).all()
|
||||
return [ {'id':i.id,'t_name':i.t_name,'t_sex':i.t_sex,'t_age':i.t_age} for i in r]
|
||||
|
||||
|
||||
def get_teachers_name_dao(name,db):
|
||||
try:
|
||||
r = db.query(Teacher).filter(Teacher.t_name==name).all()
|
||||
except SQLAlchemyError as e:
|
||||
db.rollback()
|
||||
raise HTTPException(status_code=500, detail=f'查询失败:{str(e)}')
|
||||
else:
|
||||
return [ {'id':i.id,'t_name':i.t_name,'t_sex':i.t_sex,'t_age':i.t_age} for i in r]
|
||||
|
||||
def insert_teachers_dao(req,db):
|
||||
try:
|
||||
exist = db.query(Teacher).filter(Teacher.t_phone==req['t_phone']).first()
|
||||
if exist:
|
||||
raise HTTPException(status_code=400,detail='该手机号码已存在,不可重复使用')
|
||||
t = Teacher(**req)
|
||||
db.add(t)
|
||||
except SQLAlchemyError as e:
|
||||
db.rollback()
|
||||
raise HTTPException(status_code=500,detail=f'添加失败:{str(e)}')
|
||||
else:
|
||||
db.commit()
|
||||
return True,'添加成功'
|
||||
|
||||
def update_teachers_dao(req,db,t_id):
|
||||
try:
|
||||
db.query(Teacher).filter(Teacher.id == t_id).update(req)
|
||||
except SQLAlchemyError as e:
|
||||
db.rollback()
|
||||
raise HTTPException(status_code=500,detail=f'更新失败:{str(e)}')
|
||||
else:
|
||||
db.commit()
|
||||
return True,'更新成功'
|
||||
|
||||
def delete_teachers_dao(t_id,db):
|
||||
try:
|
||||
r = db.query(Teacher).filter(Teacher.id == t_id).all()
|
||||
if not r:
|
||||
raise HTTPException(status_code=404,detail='记录不存在')
|
||||
for i in r:
|
||||
if i.is_delete == 0:
|
||||
db.query(Teacher).filter(Teacher.id == i.id).update({'is_delete':True})
|
||||
else:
|
||||
raise HTTPException(status_code=400,detail='该记录已删除,不可重复删除')
|
||||
except SQLAlchemyError as e:
|
||||
db.rollback()
|
||||
raise HTTPException(status_code=500,detail=f'删除失败:{str(e)}')
|
||||
else:
|
||||
db.commit()
|
||||
return True,'删除成功'
|
||||
@@ -0,0 +1,28 @@
|
||||
from sqlalchemy import Integer, String, Column, DateTime, Enum as SQLEnum,Boolean,create_engine
|
||||
from sqlalchemy.orm import declarative_base,sessionmaker
|
||||
|
||||
from enum import Enum
|
||||
from datetime import datetime
|
||||
|
||||
tea_url ='mysql+pymysql://root:123456@127.0.0.1:3306/ai0824_stu?charset=utf8'
|
||||
|
||||
engine = create_engine(tea_url,pool_size=100, echo=False)
|
||||
Base = declarative_base()
|
||||
class Sex(Enum):
|
||||
w = '女'
|
||||
m = '男'
|
||||
|
||||
class Teacher(Base):
|
||||
__tablename__ = 's_teacher'
|
||||
id =Column(Integer, primary_key=True,autoincrement=True)
|
||||
t_name = Column(String(100),comment='教师名称')
|
||||
t_age = Column(Integer,comment='年龄')
|
||||
t_phone = Column(String(20),unique=True,comment='电话')
|
||||
t_sex = Column(SQLEnum(Sex,values_callable=lambda x: [e.value for e in x]),comment='性别')
|
||||
class_id = Column(String(100),comment='带班编号')
|
||||
create_time = Column(DateTime,default=datetime.now,comment='创建时间')
|
||||
update_time = Column(DateTime,default=datetime.now,onupdate=datetime.now,comment='更新时间')
|
||||
is_delete = Column(Boolean,default=False,comment='判断是否删除')
|
||||
|
||||
Base.metadata.create_all(engine)
|
||||
Session = sessionmaker(bind=engine,autoflush=False,autocommit=False)
|
||||
@@ -0,0 +1,16 @@
|
||||
from pydantic import BaseModel,Field
|
||||
from model.teaModel import Sex
|
||||
|
||||
|
||||
class RequestModel(BaseModel):
|
||||
t_name: str=Field(min_length=2,max_length=20)
|
||||
t_sex:Sex
|
||||
t_age: int=Field(gt=0)
|
||||
t_phone: str=Field(min_length=11)
|
||||
class_id: str
|
||||
|
||||
class ResponseModel(BaseModel):
|
||||
code: int = 200
|
||||
msg: str = '操作成功'
|
||||
total: int = 0
|
||||
data: list=Field(default=[])
|
||||
Reference in New Issue
Block a user