diff --git a/api/student.py b/api/student.py index 681c08b..2a701f7 100644 --- a/api/student.py +++ b/api/student.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends, HTTPException,Query,Path from sqlalchemy.orm import Session from core.database import get_db -from schemas.student import StudentCreate, StudentUpdate +from schemas.student import StudentCreate, StudentUpdate, Gender from dao import student as student_dao student_router = APIRouter() @@ -51,6 +51,7 @@ def update_student( @student_router.get("", summary="分页查询学生列表") def get_students( # 三个查询条件都可以不传 + gender:Gender = Query(default=None), student_no: str | None = Query(default=None,description="按学号精确查询"), student_name: str | None = Query(default=None,description="按名字模糊查询"), class_id: int | None = Query(default=None,gt=0,description="按班级号精确查询"), @@ -67,6 +68,7 @@ def get_students( class_id=class_id, page=page, page_size=page_size, + gender = gender ) data = [ { @@ -95,37 +97,37 @@ def get_students( "data": data, } -@student_router.get("/{id}", summary="查询学生详情") -def get_student(id: int = Path(gt=0), - db: Session = Depends(get_db)): - # 根据路径中的 ID 查询学生 - student = student_dao.get_student_by_id(id, db) - - if not student: - # 404 表示请求的数据不存在 - raise HTTPException(status_code=404, detail="学生不存在") - - result = { - "id": student.id, - "student_no": student.student_no, - "student_name": student.student_name, - "class_id": student.class_id, - "consultant_id": student.consultant_id, - "native_place": student.native_place, - "graduation_school": student.graduation_school, - "major": student.major, - "enrollment_date": student.enrollment_date, - "graduation_date": student.graduation_date, - "education": student.education, - "age": student.age, - "gender": student.gender, - } - - return { - "code": 200, - "detail": "查询成功", - "data": result, - } +# @student_router.get("/{id}", summary="查询学生详情") +# def get_student(id: int = Path(gt=0), +# db: Session = Depends(get_db)): +# # 根据路径中的 ID 查询学生 +# student = student_dao.get_student_by_id(id, db) +# +# if not student: +# # 404 表示请求的数据不存在 +# raise HTTPException(status_code=404, detail="学生不存在") +# +# result = { +# "id": student.id, +# "student_no": student.student_no, +# "student_name": student.student_name, +# "class_id": student.class_id, +# "consultant_id": student.consultant_id, +# "native_place": student.native_place, +# "graduation_school": student.graduation_school, +# "major": student.major, +# "enrollment_date": student.enrollment_date, +# "graduation_date": student.graduation_date, +# "education": student.education, +# "age": student.age, +# "gender": student.gender, +# } +# +# return { +# "code": 200, +# "detail": "查询成功", +# "data": result, +# } @student_router.delete("/{id}", summary="逻辑删除学生") def delete_student(id: int, db: Session = Depends(get_db)): diff --git a/dao/student.py b/dao/student.py index 3fc6d18..931de24 100644 --- a/dao/student.py +++ b/dao/student.py @@ -1,6 +1,9 @@ from models.student import Student from sqlalchemy.orm import Session +from schemas.student import Gender + + #新建学生 def create_students(d: dict, db: Session): stu = Student(**d) @@ -62,6 +65,7 @@ def get_students( class_id: int | None = None, page: int = 1, page_size: int = 10, + gender: Gender = None, ): # 第一步:只查询没有被删除的学生 query = db.query(Student).filter(Student.is_deleted == 0) @@ -71,6 +75,10 @@ def get_students( # 学号使用精确查询 query = query.filter(Student.student_no == student_no) + if gender: + #查询枚举性别 + query = query.filter(Student.gender == gender) + if student_name: # 姓名使用模糊查询,例如“张”可以查到“张三” query = query.filter(Student.student_name.like(f"%{student_name}%")) diff --git a/schemas/student.py b/schemas/student.py index a916070..8ac364c 100644 --- a/schemas/student.py +++ b/schemas/student.py @@ -1,4 +1,6 @@ from datetime import date +from enum import Enum + from pydantic import BaseModel, ConfigDict, Field, model_validator from typing import Literal @@ -40,3 +42,6 @@ class StudentUpdate(BaseModel): age: int | None = Field(default=None, ge=0, le=150) gender: Literal["男", "女"] | None = None +class Gender(str,Enum): + g1 = '男' + g2 = '女' \ No newline at end of file