Merge remote-tracking branch 'origin/geyuan1' into lon_students_merge_code_test

# Conflicts:
#	class_management/dao/class_management_dao.py
#	class_management/main.py
#	students/README_students.md
This commit is contained in:
Orangeeee
2026-09-23 02:18:24 +08:00
8 changed files with 47 additions and 33 deletions
+11 -7
View File
@@ -28,13 +28,17 @@ def delete_tea(id:int|None,db=Depends(get_db)):
raise HTTPException(status_code=500,detail='删除失败!') raise HTTPException(status_code=500,detail='删除失败!')
return {'detail':'删除成功!'} return {'detail':'删除成功!'}
@tea_api.put('/tea/{id}',summary='更新老师信息',description='输入更改的信息,可以为空') @tea_api.put('/tea/{id}', summary='更新老师信息', description='输入更改的信息,可以为空')
def update_tea(id:int,tea:NewTeaRequest,db=Depends(get_db)): def update_tea(id: int, tea: NewTeaRequest = Depends(), db=Depends(get_db)):
t = tea.model_dump(exclude_unset= True) t = tea.model_dump(exclude_unset=True)
r = update_tea_dao(id=id,t=t,db=db) r = update_tea_dao(id=id, t=t, db=db)
if not r: if r == 'NOT_FOUND':
raise HTTPException(status_code=404,detail='老师不存在') raise HTTPException(status_code=404, detail='老师不存在')
return {'detail':'更新成功'} if r == 'NO_CHANGE':
raise HTTPException(status_code=400, detail='没有要更新的内容')
if isinstance(r, str) and r.startswith('ERROR'):
raise HTTPException(status_code=400, detail=r)
return {'detail': '更新成功'}
#根据任意信息删除 #根据任意信息删除
@tea_api.delete('/tea',summary='根据任意信息逻辑删除',description='输入任意信息删除') @tea_api.delete('/tea',summary='根据任意信息逻辑删除',description='输入任意信息删除')
+19 -12
View File
@@ -29,15 +29,22 @@ def add_tea_dao(t,db):
#更新 #更新
def update_tea_dao(id,t, db): def update_tea_dao(id, t, db):
try: try:
row = db.query(Tea).filter(Tea.id == id,Tea.is_delete ==False ).update(t) if not t:
except: return 'NO_CHANGE'
db.rollback() obj = db.query(Tea).filter(Tea.id == id, Tea.is_delete == False).first()
return False if not obj:
else: return 'NOT_FOUND'
for k, v in t.items():
if hasattr(obj, k):
setattr(obj, k, v)
db.commit() db.commit()
return row return 'OK'
except Exception as e:
db.rollback()
print('更新失败原因', repr(e))
return f'ERROR: {e}'
#查询 #查询
def get_tea_dao(t,db): def get_tea_dao(t,db):
@@ -50,8 +57,8 @@ def get_tea_dao(t,db):
query = query.filter(Tea.sex == t.get('sex') ) query = query.filter(Tea.sex == t.get('sex') )
if t.get('class_id'): if t.get('class_id'):
query = query.filter(Tea.class_id == t.get('class_id') ) query = query.filter(Tea.class_id == t.get('class_id') )
if t.get('sub'): if t.get('subject_id'):
query = query.filter(Tea.sub == t.get('sub') ) query = query.filter(Tea.subject_id == t.get('subject_id') )
if t.get('home_place'): if t.get('home_place'):
query = query.filter(Tea.home_place == t.get('home_place') ) query = query.filter(Tea.home_place == t.get('home_place') )
if t.get('specialty'): if t.get('specialty'):
@@ -67,7 +74,7 @@ def get_tea_dao(t,db):
if t.get('phone'): if t.get('phone'):
query = query.filter(Tea.phone == t.get('phone') ) query = query.filter(Tea.phone == t.get('phone') )
r = query.all() r = query.all()
return [{'id':i.id,'name':i.name,'class_id':i.class_id,'sub':i.sub,'sex':i.sex,'home_place':i.home_place return [{'id':i.id,'name':i.name,'class_id':i.class_id,'sub':i.subject_id,'sex':i.sex,'home_place':i.home_place
,'specialty':i.specialty,'start_time':i.start_time,'work_experience':i.work_experience ,'specialty':i.specialty,'start_time':i.start_time,'work_experience':i.work_experience
,'collage':i.collage,'phone':i.phone} for i in r] ,'collage':i.collage,'phone':i.phone} for i in r]
@@ -98,8 +105,8 @@ def delete_other_tea_dao(t,db):
query1 = query1.filter(Tea.sex == t.get('sex')) query1 = query1.filter(Tea.sex == t.get('sex'))
if t.get('class_id'): if t.get('class_id'):
query1 = query1.filter(Tea.class_id == t.get('class_id')) query1 = query1.filter(Tea.class_id == t.get('class_id'))
if t.get('sub'): if t.get('subject_id'):
query1 = query1.filter(Tea.sub == t.get('sub')) query1 = query1.filter(Tea.subject_id == t.get('subject_id'))
if t.get('home_place'): if t.get('home_place'):
query1 = query1.filter(Tea.home_place == t.get('home_place')) query1 = query1.filter(Tea.home_place == t.get('home_place'))
if t.get('collage'): if t.get('collage'):
+1 -1
View File
@@ -15,7 +15,7 @@ if __name__ == "__main__":
Base.metadata.create_all(engine1) Base.metadata.create_all(engine1)
import uvicorn import uvicorn
uvicorn.run('main:app', host='0.0.0.0', port=57000) uvicorn.run('main:app', host='0.0.0.0', port=56000)
""" """
IPv4 地址 . . . . . . . . . . . . : 192.168.1.51 IPv4 地址 . . . . . . . . . . . . : 192.168.1.51
子网掩码 . . . . . . . . . . . . : 255.255.255.0 子网掩码 . . . . . . . . . . . . : 255.255.255.0
@@ -17,6 +17,7 @@ def add_class_dao(c,db):
return False return False
else: else:
db.commit() db.commit()
db.refresh(c1)
return True return True
+2 -2
View File
@@ -11,9 +11,9 @@ DB_HOST = os.getenv("DB_HOST", "localhost")
DB_PORT = os.getenv("DB_PORT", "3306") DB_PORT = os.getenv("DB_PORT", "3306")
DB_NAME = os.getenv("DB_NAME", "student_manage_system") DB_NAME = os.getenv("DB_NAME", "student_manage_system")
class_management_rul = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}?charset=utf8mb4" class_management_url = "mysql+pymysql://root:123456@localhost:3306/student_manage_system?charset=utf8mb4"
engine = create_engine(class_management_rul) engine = create_engine(class_management_url)
SessionLocal = sessionmaker(bind=engine,autocommit=False, autoflush=False) SessionLocal = sessionmaker(bind=engine,autocommit=False, autoflush=False)
Base = declarative_base() Base = declarative_base()
+7 -5
View File
@@ -3,16 +3,18 @@ from class_management.api.class_management_api import class_api
from class_management.model.class_management_model import ClassInfo from class_management.model.class_management_model import ClassInfo
from class_management.database import Base,engine from class_management.database import Base,engine
# 合并接口 # 合并接口
Classes_API = APIRouter() Classes_API = APIRouter()
Classes_API.include_router(class_api) Classes_API.include_router(class_api)
# 自测接口
app = FastAPI()
app.include_router(class_api)
if __name__ =='__main__': if __name__ =='__main__':
# 自测接口
app = FastAPI()
app.include_router(class_api)
Base.metadata.create_all(engine) Base.metadata.create_all(engine)
import uvicorn import uvicorn
+4 -4
View File
@@ -15,10 +15,10 @@ def get_stuinfo( #查询学生就业信息
,min_salary:int|None=Query(None,description='最小薪资范围') ,min_salary:int|None=Query(None,description='最小薪资范围')
,max_salary:int|None=Query(None,description='最大薪资范围') ,max_salary:int|None=Query(None,description='最大薪资范围')
,somewhere:str|None=Query(None,description='公司地区') ,somewhere:str|None=Query(None,description='公司地区')
,employment_open_start: date | None = Query(None,description='就业开放起始时间') ,employment_open_start: date|None = Query(None,description='就业开放起始时间')
,employment_open_end: date | None = Query(None,description='就业开放结束时间') ,employment_open_end: date|None = Query(None,description='就业开放结束时间')
,offer_recived_start: date | None = Query(None,description='offer下发起始时间') ,offer_recived_start: date|None = Query(None,description='offer下发起始时间')
,offer_recived_end: date | None = Query(None,description='offer下发结束时间') ,offer_recived_end: date|None = Query(None,description='offer下发结束时间')
,db=Depends(get_db) ,db=Depends(get_db)
): #查询条件 ): #查询条件
r=get_emp_dao( #调用函数 r=get_emp_dao( #调用函数
+2 -2
View File
@@ -30,7 +30,7 @@ class Students(Base_all):
, comment='年龄' , comment='年龄'
, nullable=False) , nullable=False)
sex = Column(Enum(SexEnum, values_callable=lambda e: [i.value for i in e]) sex = Column(Enum(SexEnum)
, comment='性别' , comment='性别'
, nullable=False) , nullable=False)
@@ -49,7 +49,7 @@ class Students(Base_all):
graduate_time = Column(DATETIME graduate_time = Column(DATETIME
, comment='毕业时间') , comment='毕业时间')
education = Column(Enum(EducationEnum, values_callable=lambda e: [i.value for i in e]) education = Column(Enum(EducationEnum)
, comment='学历' , comment='学历'
, nullable=True) , nullable=True)