删除了冗余查询接口,查询接口新增查询枚举性别功能

This commit is contained in:
wolin_liyujie
2026-09-23 20:10:52 +08:00
parent d90a89595f
commit 56df0ef7b0
3 changed files with 47 additions and 32 deletions
+34 -32
View File
@@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends, HTTPException,Query,Path
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from core.database import get_db 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 from dao import student as student_dao
student_router = APIRouter() student_router = APIRouter()
@@ -51,6 +51,7 @@ def update_student(
@student_router.get("", summary="分页查询学生列表") @student_router.get("", summary="分页查询学生列表")
def get_students( def get_students(
# 三个查询条件都可以不传 # 三个查询条件都可以不传
gender:Gender = Query(default=None),
student_no: str | None = Query(default=None,description="按学号精确查询"), student_no: str | None = Query(default=None,description="按学号精确查询"),
student_name: str | None = Query(default=None,description="按名字模糊查询"), student_name: str | None = Query(default=None,description="按名字模糊查询"),
class_id: int | None = Query(default=None,gt=0,description="按班级号精确查询"), class_id: int | None = Query(default=None,gt=0,description="按班级号精确查询"),
@@ -67,6 +68,7 @@ def get_students(
class_id=class_id, class_id=class_id,
page=page, page=page,
page_size=page_size, page_size=page_size,
gender = gender
) )
data = [ data = [
{ {
@@ -95,37 +97,37 @@ def get_students(
"data": data, "data": data,
} }
@student_router.get("/{id}", summary="查询学生详情") # @student_router.get("/{id}", summary="查询学生详情")
def get_student(id: int = Path(gt=0), # def get_student(id: int = Path(gt=0),
db: Session = Depends(get_db)): # db: Session = Depends(get_db)):
# 根据路径中的 ID 查询学生 # # 根据路径中的 ID 查询学生
student = student_dao.get_student_by_id(id, db) # student = student_dao.get_student_by_id(id, db)
#
if not student: # if not student:
# 404 表示请求的数据不存在 # # 404 表示请求的数据不存在
raise HTTPException(status_code=404, detail="学生不存在") # raise HTTPException(status_code=404, detail="学生不存在")
#
result = { # result = {
"id": student.id, # "id": student.id,
"student_no": student.student_no, # "student_no": student.student_no,
"student_name": student.student_name, # "student_name": student.student_name,
"class_id": student.class_id, # "class_id": student.class_id,
"consultant_id": student.consultant_id, # "consultant_id": student.consultant_id,
"native_place": student.native_place, # "native_place": student.native_place,
"graduation_school": student.graduation_school, # "graduation_school": student.graduation_school,
"major": student.major, # "major": student.major,
"enrollment_date": student.enrollment_date, # "enrollment_date": student.enrollment_date,
"graduation_date": student.graduation_date, # "graduation_date": student.graduation_date,
"education": student.education, # "education": student.education,
"age": student.age, # "age": student.age,
"gender": student.gender, # "gender": student.gender,
} # }
#
return { # return {
"code": 200, # "code": 200,
"detail": "查询成功", # "detail": "查询成功",
"data": result, # "data": result,
} # }
@student_router.delete("/{id}", summary="逻辑删除学生") @student_router.delete("/{id}", summary="逻辑删除学生")
def delete_student(id: int, db: Session = Depends(get_db)): def delete_student(id: int, db: Session = Depends(get_db)):
+8
View File
@@ -1,6 +1,9 @@
from models.student import Student from models.student import Student
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from schemas.student import Gender
#新建学生 #新建学生
def create_students(d: dict, db: Session): def create_students(d: dict, db: Session):
stu = Student(**d) stu = Student(**d)
@@ -62,6 +65,7 @@ def get_students(
class_id: int | None = None, class_id: int | None = None,
page: int = 1, page: int = 1,
page_size: int = 10, page_size: int = 10,
gender: Gender = None,
): ):
# 第一步:只查询没有被删除的学生 # 第一步:只查询没有被删除的学生
query = db.query(Student).filter(Student.is_deleted == 0) query = db.query(Student).filter(Student.is_deleted == 0)
@@ -71,6 +75,10 @@ def get_students(
# 学号使用精确查询 # 学号使用精确查询
query = query.filter(Student.student_no == student_no) query = query.filter(Student.student_no == student_no)
if gender:
#查询枚举性别
query = query.filter(Student.gender == gender)
if student_name: if student_name:
# 姓名使用模糊查询,例如“张”可以查到“张三” # 姓名使用模糊查询,例如“张”可以查到“张三”
query = query.filter(Student.student_name.like(f"%{student_name}%")) query = query.filter(Student.student_name.like(f"%{student_name}%"))
+5
View File
@@ -1,4 +1,6 @@
from datetime import date from datetime import date
from enum import Enum
from pydantic import BaseModel, ConfigDict, Field, model_validator from pydantic import BaseModel, ConfigDict, Field, model_validator
from typing import Literal from typing import Literal
@@ -40,3 +42,6 @@ class StudentUpdate(BaseModel):
age: int | None = Field(default=None, ge=0, le=150) age: int | None = Field(default=None, ge=0, le=150)
gender: Literal["男", "女"] | None = None gender: Literal["男", "女"] | None = None
class Gender(str,Enum):
g1 = '男'
g2 = '女'