From a26c4320ddb391755f518d34985a698969681401 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Wed, 25 Jun 2025 18:38:35 +0800 Subject: [PATCH] refactor: user filter --- apps/users/serializers/user.py | 33 ++++++++++++++++++++++++++------- apps/users/views/user.py | 4 ++-- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 2ab9b3aa..4dd31f32 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -177,16 +177,35 @@ class UserManageSerializer(serializers.Serializer): raise ExceptionCodeConstants.NICKNAME_IS_EXIST.value.to_app_api_exception() class Query(serializers.Serializer): - email_or_username = serializers.CharField(required=False, allow_null=True, - label=_('Email or username')) + username = serializers.CharField( + required=False, + label=_("Username"), + max_length=20, + allow_blank=True + ) + nick_name = serializers.CharField( + required=False, + label=_("Nick Name"), + max_length=20, + allow_blank=True + ) + email = serializers.CharField( + required=False, + label=_("Email"), + allow_blank=True, + ) def get_query_set(self): - email_or_username = self.data.get('email_or_username') + username = self.data.get('username') + nick_name = self.data.get('nick_name') + email = self.data.get('email') query_set = QuerySet(User) - if email_or_username is not None: - query_set = query_set.filter( - Q(username__contains=email_or_username) | Q(email__contains=email_or_username) | Q( - nick_name__contains=email_or_username)) + if username is not None: + query_set = query_set.filter(username__contains=username) + if nick_name is not None: + query_set = query_set.filter(nick_name__contains=nick_name) + if email is not None: + query_set = query_set.filter(email__contains=email) query_set = query_set.order_by("-create_time") return query_set diff --git a/apps/users/views/user.py b/apps/users/views/user.py index eb770eae..227e514d 100644 --- a/apps/users/views/user.py +++ b/apps/users/views/user.py @@ -19,6 +19,7 @@ from common.constants.cache_version import Cache_Version from common.constants.permission_constants import PermissionConstants, Permission, Group, Operate, RoleConstants from common.log.log import log from common.result import result +from common.utils.common import query_params_to_single_dict from maxkb.const import CONFIG from models_provider.api.model import DefaultModelResponse from tools.serializers.tool import encryption @@ -274,8 +275,7 @@ class UserManage(APIView): @has_permissions(PermissionConstants.USER_READ, RoleConstants.ADMIN) def get(self, request: Request, current_page, page_size): d = UserManageSerializer.Query( - data={'email_or_username': request.query_params.get('email_or_username', None), - 'user_id': str(request.user.id)}) + data={**query_params_to_single_dict(request.query_params)}) return result.success(d.page(current_page, page_size))