同步业务名称导致需要同步修改业务代码,现全部更新完毕,初步测试增删改查没有问题。

This commit is contained in:
Orangeeee
2026-09-22 10:08:56 +08:00
parent fe7c95fa78
commit c8961950ea
4 changed files with 125 additions and 78 deletions
+9 -5
View File
@@ -10,7 +10,8 @@ students_api = APIRouter()
@students_api.get("/students"
,summary='学生资料查询'
,description='筛选条件全为空即查询所有学生资料,输入薪资会查询大于输入薪资以上的学生'
,description=f'筛选条件全为空即查询所有学生资料,输入薪资会查询大于输入薪资以上的学生。\n '
f'时间格式:YYYY-MM-DD'
,response_model=list[StudentsQuery]
)
def get_students( stu:StudentsQuery = Depends()
@@ -25,7 +26,8 @@ def get_students( stu:StudentsQuery = Depends()
@students_api.post("/students"
,summary='新增学生资料'
,description='学生ID自动分配,学生姓名、学生手机号和班级是必填项,不能为空。'
,description=f'学生ID自动分配,学生姓名、学生手机号和班级是必填项,不能为空。\n '
f'时间格式:YYYY-MM-DD'
,response_model=StudentsResponse )
def add_student( stu:StudentsResponse = Depends()
, db=Depends(get_db)
@@ -38,7 +40,8 @@ def add_student( stu:StudentsResponse = Depends()
@students_api.put("/students"
,summary='学生资料更新'
,description='请输入需要更新信息的学生ID,学生手机号不可重复,填写即更新,为空即不更新。'
,description=f'请输入需要更新信息的学生ID,学生手机号不可重复,填写即更新,为空即不更新。\n '
f'时间格式:YYYY-MM-DD'
,response_model=StudentsUpdate )
def get_students( stu:StudentsUpdate = Depends()
, db=Depends(get_db)
@@ -51,11 +54,12 @@ def get_students( stu:StudentsUpdate = Depends()
@students_api.delete("/students"
,summary='删除学生资料'
,description='输入需要删除的学生信息,删除条件任选,但不可全为空,工资筛选能删除大于等于输入工资的所有人。'
,description=f'输入需要删除的学生信息,删除条件任选,但不可全为空,工资筛选能删除大于等于输入工资的所有人。\n '
f'时间格式:YYYY-MM-DD'
,response_model=list[StudentsDelete] ) # 逻辑删除/软删除
def delete_students( stu:StudentsDelete = Depends()
, db=Depends(get_db)
):
):
s_dict = stu.model_dump(exclude_unset=True)
result = delete_student_dao(s=s_dict, db=db)
return result
+81 -47
View File
@@ -31,8 +31,8 @@ def get_student_dao( s , db):
q = q.filter( Students.education == s.get("education") )
if s.get('class_id'):
q = q.filter(Students.class_id == s.get("class_id") )
if s.get('adnisor_id'):
q = q.filter(Students.adnisor_id == s.get("adnisor_id") )
if s.get('advisor_id'):
q = q.filter(Students.advisor_id == s.get("advisor_id") )
if s.get('phone'):
q = q.filter(Students.phone == s.get("phone"))
s1 = q.all()
@@ -50,7 +50,7 @@ def get_student_dao( s , db):
, 'education':i.education
# 外键字段
, 'class_id':i.class_id
, 'adnisor_id':i.adnisor_id
, 'advisor_id':i.advisor_id
# 额外字段
, 'phone':i.phone
} for i in s1
@@ -77,7 +77,7 @@ def add_student_dao( s , db):
s1_deleted.education = s.get("education")
# 外键字段
s1_deleted.class_id = s.get("class_id")
s1_deleted.adnisor_id = s.get("adnisor_id")
s1_deleted.advisor_id = s.get("advisor_id")
# 额外字段
s1_deleted.phone = s.get("phone")
@@ -102,78 +102,112 @@ def add_student_dao( s , db):
# 更新
def update_student_dao( s , db):
try:
phone = s.get("student_phone")
phone = s.get("phone")
if phone is not None and phone != '':
s1_con = db.query( Students ).filter( Students.phone == phone
,Students.id != s.get("id")
,Students.is_deleted == False ).first()
if s1_con:
return False
raise HTTPException(status_code=409, detail=f'手机号已被其他学生使用:{phone}')
s1_id = db.query( Students ).filter( Students.id == s.get("id")
,Students.is_deleted == False ).first()
if not s1_id:
return False
raise HTTPException(status_code=404, detail=f'学生不存在:id={s.get("id")}')
if s.get("num") is not None:
s1_id.name = s.get("num")
if s.get("name") is not None:
s1_id.name = s.get("name")
if s.get("age") is not None:
s1_id.age = s.get("age")
if s.get("sex") is not None:
s1_id.sex = s.get("sex")
if s.get("home_Place") is not None:
s1_id.home_Place = s.get("home_Place")
if s.get("college") is not None:
s1_id.college = s.get("college")
if s.get("specialty") is not None:
s1_id.specialty = s.get("specialty")
if s.get("enrollment_time") is not None:
s1_id.enrollment_time = s.get("enrollment_time")
if s.get("graduate_time") is not None:
s1_id.graduate_time = s.get("graduate_time")
if s.get("education") is not None:
s1_id.education = s.get("education")
# 外键字段
if s.get("class_id") is not None:
s1_id.class_id = s.get("class_id")
if s.get("advisor_id") is not None:
s1_id.advisor_id = s.get("advisor_id")
# 额外字段
if s.get("phone") is not None:
s1_id.student_phone = s.get("phone")
if s.get("class_name") is not None:
s1_id.class_name = s.get("class_name")
if s.get("job_open_time") is not None:
s1_id.job_open_time = s.get("job_open_time")
if s.get("offer_issue_time") is not None:
s1_id.offer_issue_time = s.get("offer_issue_time")
if s.get("company_name") is not None:
s1_id.company_name = s.get("company_name")
if s.get("salary") is not None:
s1_id.salary = s.get("salary")
except HTTPException:
raise
except Exception:
db.rollback()
return False
raise
else:
s1_sid.update_date = datetime.now()
s1_id.update_date = datetime.now()
db.commit()
db.refresh(s1_sid) # 从数据库再拉一次数据
return s1_sid
db.refresh(s1_id) # 从数据库再拉一次数据
return s1_id
# 逻辑删除/软删除
def delete_student_dao( s , db):
try:
if not any([s.get('sid')
,s.get("student_name")
,s.get("student_phone")
,s.get("class_name")
,s.get("job_open_time")
,s.get("offer_issue_time")
,s.get("company_name")
,s.get("salary")
if not any([ s.get("id")
,s.get("num")
,s.get("name")
,s.get("age")
,s.get("sex")
,s.get("home_Place")
,s.get("college")
,s.get("specialty")
,s.get("enrollment_time")
,s.get("graduate_time")
,s.get("education")
,s.get("class_id")
,s.get("advisor_id")
,s.get("phone")
]):
raise HTTPException(status_code=400, detail="输入需要删除的学生信息,删除条件任选,但不可全为空。")
q = db.query(Students).filter(Students.is_deleted == False)
if s.get('sid'):
q = q.filter(Students.sid == s.get("sid") )
if s.get('student_name'):
q = q.filter(Students.student_name == s.get("student_name") )
if s.get("student_phone"):
q = q.filter(Students.student_phone == s.get("student_phone") )
if s.get('class_name'):
q = q.filter(Students.class_name == s.get("class_name") )
if s.get('job_open_time'):
q = q.filter(Students.job_open_time == s.get("job_open_time") )
if s.get('offer_issue_time'):
q = q.filter(Students.offer_issue_time == s.get("offer_issue_time") )
if s.get('company_name'):
q = q.filter(Students.company_name == s.get("company_name") )
if s.get('salary'):
q = q.filter(Students.salary >= s.get("salary") )
if s.get('id'):
q = q.filter(Students.id == s.get("id") )
if s.get('num'):
q = q.filter(Students.num == s.get("num"))
if s.get('name'):
q = q.filter(Students.name == s.get("name") )
if s.get('age'):
q = q.filter(Students.age == s.get("age") )
if s.get('sex'):
q = q.filter(Students.sex == s.get("sex"))
if s.get('home_Place'):
q = q.filter(Students.home_Place == s.get("home_Place") )
if s.get('college'):
q = q.filter(Students.college == s.get("college") )
if s.get('specialty'):
q = q.filter(Students.specialty == s.get("specialty"))
if s.get('enrollment_time'):
q = q.filter(Students.enrollment_time == s.get("enrollment_time") )
if s.get('graduate_time'):
q = q.filter(Students.graduate_time == s.get("graduate_time"))
if s.get('education'):
q = q.filter(Students.education == s.get("education") )
if s.get('class_id'):
q = q.filter(Students.class_id == s.get("class_id") )
if s.get('advisor_id'):
q = q.filter(Students.advisor_id == s.get("v") )
if s.get("phone"):
q = q.filter(Students.phone == s.get("phone") )
s1_delete = q.all()
if not s1_delete:
raise HTTPException(status_code=404, detail="没有找到该学生。")
for i in s1_delete:
i.is_deleted = True
i.deleted_date = datetime.now()
s2_deleted =[{"sid":i.sid,"student_name":i.student_name,"student_phone":i.student_phone}for i in s1_delete]
# s2_deleted =[{"id":i.id,"name":i.name,"phone":i.phone}for i in s1_delete]
except HTTPException:
raise
except Exception:
@@ -181,4 +215,4 @@ def delete_student_dao( s , db):
raise HTTPException(status_code=500, detail="Internal server error")
else:
db.commit()
return s2_deleted
return s1_delete
+7 -5
View File
@@ -4,7 +4,8 @@ import datetime
from students.databases import *
from datetime import datetime
from sqlalchemy.dialects.mysql import DATETIME
from students.schema.students_request import SexEnum
from students.schema.students_request import SexEnum , EducationEnum
from sqlalchemy import Enum
class Students(Base):
__tablename__ = 'students'
@@ -27,7 +28,7 @@ class Students(Base):
, comment='年龄'
, nullable=False)
sex = Column(Enum(SexEnum)
sex = Column(Enum(SexEnum, values_callable=lambda e: [i.value for i in e])
, comment='性别'
, nullable=False)
@@ -46,15 +47,16 @@ class Students(Base):
graduate_time = Column(DATETIME
, comment='毕业时间')
education = Column(String(50)
, comment='学历')
education = Column(Enum(EducationEnum, values_callable=lambda e: [i.value for i in e])
, comment='学历'
, nullable=True)
# 外键字段
class_id = Column(Integer
, comment='学生班级'
, nullable=False )
adnisor_id = Column(Integer
advisor_id = Column(Integer
, comment='顾问ID')
# 额外字段
+28 -21
View File
@@ -8,7 +8,6 @@ class SexEnum(enum.Enum):
m = '男'
f = '女'
# 查询
class StudentsQuery(BaseModel):
id:int | None = None
@@ -24,15 +23,15 @@ class StudentsQuery(BaseModel):
education:str | None = None
# 外键字段
class_id:int | None = None
adnisor_id:int | None = None
advisor_id:int | None = None
# 额外字段
phone:str | None = None
class EducationEnum(enum.Enum):
zhuanke = '专科'
benke = '本科'
shuoshi = '硕士'
boshi = '博士'
z = '专科'
ben = '本科'
s = '硕士'
bo = '博士'
# 新建
class StudentsResponse(BaseModel):
@@ -48,16 +47,16 @@ class StudentsResponse(BaseModel):
education:EducationEnum
# 外键字段
class_id:int = Field(..., gt=0, description='班级ID')
adnisor_id:int | None = None
advisor_id:int | None = None
# 额外字段
phone:str = Field(...,min_length=11,max_length=11,description='学生手机号')
# 更新
class StudentsUpdate(BaseModel):
id:int = Field(..., gt=0 , description='学生ID' )
num:str = Field(..., min_length=1, max_length=50, description='学生编号' )
name:str = Field(..., min_length=1, max_length=50, description='学生姓名' )
age:int = Field(..., gt=0, lt=200, description='学生年龄')
num:str | None = None
name:str | None = None
age:int | None = None
sex:SexEnum | None = None
home_Place:str | None = None
college:str | None = None
@@ -66,18 +65,26 @@ class StudentsUpdate(BaseModel):
graduate_time:datetime | None = None
education:str | None = None
# 外键字段
class_id:int = Field(..., gt=0, description='班级ID')
adnisor_id:int | None = None
class_id:int | None = None
advisor_id:int | None = None
# 额外字段
phone:str = Field(...,min_length=11,max_length=11,description='学生手机号')
phone:str | None = None
# 删除
class StudentsDelete(BaseModel):
sid:int | None = None
student_name:str | None = None
student_phone: str | None = None
class_name:str | None = None
job_open_time:datetime | None = None
offer_issue_time:datetime | None = None
company_name:str | None = None
salary:int | None = None
id:int | None = None
num:str | None = None
name:str | None = None
age:int | None = None
sex:SexEnum | None = None
home_Place:str | None = None
college:str | None = None
specialty:str | None = None
enrollment_time:datetime | None = None
graduate_time:datetime | None = None
education:str | None = None
# 外键字段
class_id:int | None = None
advisor_id:int | None = None
# 额外字段
phone:str | None = None