From 56e19aef6faf183f13f9d77255a2c493cd31375b Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 16 Jan 2025 15:42:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=92=E8=89=B2=E7=9A=84?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/user.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/app/api/endpoints/user.py b/app/api/endpoints/user.py index f187983..3d0f3cf 100644 --- a/app/api/endpoints/user.py +++ b/app/api/endpoints/user.py @@ -17,6 +17,7 @@ from pydantic import BaseModel, Field from typing import List from typing import Optional from datetime import datetime +from sqlalchemy import text router = APIRouter() @@ -331,16 +332,20 @@ def issue_register_coupons(db: Session, user_id: int): async def get_user_list( skip: int = 0, limit: int = 10, + role: Optional[str] = None, db: Session = Depends(get_db), - admin: UserDB = Depends(get_admin_user) # 仅管理员可访问 + admin: UserDB = Depends(get_admin_user) ): - """获取用户列表(管理员) - Args: - skip: 跳过记录数 - limit: 返回记录数 - """ - total = db.query(UserDB).count() - users = db.query(UserDB).order_by( + """获取用户列表(管理员)""" + query = db.query(UserDB) + + # 如果指定了角色,添加角色筛选条件 + if role: + # 修复 JSON_CONTAINS 语法 + query = query.filter(text(f"JSON_CONTAINS(roles, '\"{role}\"')")) + + total = query.count() + users = query.order_by( UserDB.create_time.desc() ).offset(skip).limit(limit).all()