diff --git a/main.py b/main.py index cd5a45d..b1909a7 100644 --- a/main.py +++ b/main.py @@ -21,7 +21,7 @@ def main(): if __name__ == "__main__": import uvicorn - uvicorn.run("main:app", host="0.0.0.0", port=52000) + uvicorn.run("main:app", host="0.0.0.0", port=51000) """students api IPv4 地址 . . . . . . . . . . . . : 192.168.6.40 diff --git a/StudentsQuery.sql b/students/StudentsQuery.sql similarity index 100% rename from StudentsQuery.sql rename to students/StudentsQuery.sql diff --git a/students/dao/students_dao.py b/students/dao/students_dao.py index 117c70c..474da49 100644 --- a/students/dao/students_dao.py +++ b/students/dao/students_dao.py @@ -7,52 +7,80 @@ from fastapi import HTTPException # 查询 def get_student_dao( s , db): 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('adnisor_id'): + q = q.filter(Students.adnisor_id == s.get("adnisor_id") ) + if s.get('phone'): + q = q.filter(Students.phone == s.get("phone")) s1 = q.all() if s1: - return [{ "sid": i.sid - , "student_name": i.student_name - , "student_phone":i.student_phone - , "class_name": i.class_name - , "job_open_time": i.job_open_time - , "offer_issue_time": i.offer_issue_time - , "company_name": i.company_name - , "salary": i.salary + return [{ 'id':i.id + , 'num':i.num + , 'name':i.name + , 'age':i.age + , 'sex':i.sex + , 'home_Place':i.home_Place + , 'college':i.college + , 'specialty':i.specialty + , 'enrollment_time':i.enrollment_time + , 'graduate_time':i.graduate_time + , 'education':i.education + # 外键字段 + , 'class_id':i.class_id + , 'adnisor_id':i.adnisor_id + # 额外字段 + , 'phone':i.phone } for i in s1 ] # 新增 def add_student_dao( s , db): try: - phone = s.get("student_phone") - s1_deleted = db.query( Students ).filter( Students.student_phone == phone ).first() + phone = s.get("phone") + s1_deleted = db.query( Students ).filter( Students.phone == phone ).first() if s1_deleted and s1_deleted.is_deleted == False: return False if not phone: return False if s1_deleted and s1_deleted.is_deleted == True: - s1_deleted.student_name = s.get("student_name") - s1_deleted.student_phone = s.get("student_phone") - s1_deleted.class_name = s.get("class_name") - s1_deleted.job_open_time = s.get("job_open_time") - s1_deleted.offer_issue_time = s.get("offer_issue_time") - s1_deleted.company_name = s.get("company_name") - s1_deleted.salary = s.get("salary") + s1_deleted.name = s.get("name") + s1_deleted.age = s.get("age") + s1_deleted.sex = s.get("sex") + s1_deleted.home_Place = s.get("home_Place") + s1_deleted.college = s.get("college") + s1_deleted.specialty = s.get("specialty") + s1_deleted.enrollment_time = s.get("enrollment_time") + s1_deleted.graduate_time = s.get("graduate_time") + s1_deleted.education = s.get("education") + # 外键字段 + s1_deleted.class_id = s.get("class_id") + s1_deleted.adnisor_id = s.get("adnisor_id") + # 额外字段 + s1_deleted.phone = s.get("phone") + s1_deleted.create_date = datetime.now() s1_deleted.update_date = datetime.now() s1_deleted.is_deleted = False @@ -76,29 +104,29 @@ def update_student_dao( s , db): try: phone = s.get("student_phone") if phone is not None and phone != '': - s1_con = db.query( Students ).filter( Students.student_phone == phone - ,Students.sid != s.get("sid") + s1_con = db.query( Students ).filter( Students.phone == phone + ,Students.id != s.get("id") ,Students.is_deleted == False ).first() if s1_con: return False - s1_sid = db.query( Students ).filter( Students.sid == s.get("sid") + s1_id = db.query( Students ).filter( Students.id == s.get("id") ,Students.is_deleted == False ).first() - if not s1_sid: + if not s1_id: return False - if s.get("student_name") is not None: - s1_sid.student_name = s.get("student_name") - if s.get("student_phone") is not None: - s1_sid.student_phone = s.get("student_phone") + if s.get("name") is not None: + s1_id.name = s.get("name") + if s.get("phone") is not None: + s1_id.student_phone = s.get("phone") if s.get("class_name") is not None: - s1_sid.class_name = s.get("class_name") + s1_id.class_name = s.get("class_name") if s.get("job_open_time") is not None: - s1_sid.job_open_time = s.get("job_open_time") + s1_id.job_open_time = s.get("job_open_time") if s.get("offer_issue_time") is not None: - s1_sid.offer_issue_time = s.get("offer_issue_time") + s1_id.offer_issue_time = s.get("offer_issue_time") if s.get("company_name") is not None: - s1_sid.company_name = s.get("company_name") + s1_id.company_name = s.get("company_name") if s.get("salary") is not None: - s1_sid.salary = s.get("salary") + s1_id.salary = s.get("salary") except Exception: db.rollback() return False diff --git a/students/model/students_model.py b/students/model/students_model.py index aeb79cd..47b76b5 100644 --- a/students/model/students_model.py +++ b/students/model/students_model.py @@ -4,7 +4,7 @@ import datetime from students.databases import * from datetime import datetime from sqlalchemy.dialects.mysql import DATETIME -from sqlalchemy import Enum +from students.schema.students_request import SexEnum class Students(Base): __tablename__ = 'students' @@ -13,13 +13,13 @@ class Students(Base): , autoincrement=True , comment='学生ID,自增主键' ) - num = Column(Integer + num = Column(String(50) , nullable=False , unique=True , comment='学生编号' ) - name = Column(String(20) + name = Column(String(50) , comment='学生姓名' , nullable=False ) @@ -27,7 +27,7 @@ class Students(Base): , comment='年龄' , nullable=False) - sex = Column(Enum('男','女') + sex = Column(Enum(SexEnum) , comment='性别' , nullable=False) diff --git a/students/schema/students_request.py b/students/schema/students_request.py index 8159141..6f65fd7 100644 --- a/students/schema/students_request.py +++ b/students/schema/students_request.py @@ -2,38 +2,74 @@ from pydantic import BaseModel , Field , field_validator from datetime import datetime +import enum + +class SexEnum(enum.Enum): + m = '男' + f = '女' + # 查询 class StudentsQuery(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 + adnisor_id:int | None = None + # 额外字段 + phone:str | None = None + +class EducationEnum(enum.Enum): + zhuanke = '专科' + benke = '本科' + shuoshi = '硕士' + boshi = '博士' # 新建 class StudentsResponse(BaseModel): - student_name:str = Field(...,min_length=1) - student_phone:str = Field(...,min_length=11,max_length=11) - class_name:str = Field(...,min_length=1) - job_open_time:datetime | None = None - offer_issue_time:datetime | None = None - company_name:str | None = None - salary:int | None = None + 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='学生年龄') + sex:SexEnum + home_Place:str | None = None + college:str | None = None + specialty:str | None = None + enrollment_time:datetime | None = None + graduate_time:datetime | None = None + education:EducationEnum + # 外键字段 + class_id:int = Field(..., gt=0, description='班级ID') + adnisor_id:int | None = None + # 额外字段 + phone:str = Field(...,min_length=11,max_length=11,description='学生手机号') # 更新 class StudentsUpdate(BaseModel): - sid:int = Field(...,gt=0) - 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 = 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='学生年龄') + 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 = Field(..., gt=0, description='班级ID') + adnisor_id:int | None = None + # 额外字段 + phone:str = Field(...,min_length=11,max_length=11,description='学生手机号') # 删除 class StudentsDelete(BaseModel):