From be2892f41975cedc28bc585447107aca058b1075 Mon Sep 17 00:00:00 2001 From: XingQue Date: Mon, 10 Aug 2026 10:02:44 +0800 Subject: [PATCH] =?UTF-8?q?revert:=20=E6=92=A4=E5=9B=9E=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=B8=93=E5=8C=BA=E4=B8=8E=E5=90=8E=E5=8F=B0=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84=E5=90=8E=E7=AB=AF=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- backend/views/system.py | 5 ++-- jituan/services/club_rbac.py | 30 ++++++------------------ jituan/services/club_shangpin_leixing.py | 23 ++++++------------ 3 files changed, 17 insertions(+), 41 deletions(-) diff --git a/backend/views/system.py b/backend/views/system.py index 76c09c6..8368ef8 100644 --- a/backend/views/system.py +++ b/backend/views/system.py @@ -254,13 +254,14 @@ class GetProductTypeZoneView(APIView): } if club_scoped: - # 具体俱乐部:已上架+未上架全部返回,前端展示下架/上架/换图 - admin_payload = build_club_leixing_admin_list(request, include_disabled=True) + # 具体俱乐部:仅本俱乐部已上架类型(与抢单端一致) + admin_payload = build_club_leixing_admin_list(request) type_list = [] for item in (admin_payload.get('list') or []): type_list.append({ **item, 'product_count': zone_count_map.get(item['id'], 0), + 'club_enabled': True, }) else: type_list = [] diff --git a/jituan/services/club_rbac.py b/jituan/services/club_rbac.py index 38c6800..7adbf43 100644 --- a/jituan/services/club_rbac.py +++ b/jituan/services/club_rbac.py @@ -57,9 +57,7 @@ def filter_kefu_users_by_admin_scope(qs, request): """ 后台用户列表:按任职俱乐部过滤,而非仅 User.ClubID。 同一账号有多俱乐部任职时,在任一已分配俱乐部视图下均可见。 - 含:本店任职、本店功能角色、集团级任职、白名单超管;封禁账号也返回。 """ - from jituan.constants import SUPER_ADMIN_PHONES from jituan.models import AdminAssignment scope = resolve_club_scope(request) @@ -69,28 +67,14 @@ def filter_kefu_users_by_admin_scope(qs, request): assigned_uids = list( AdminAssignment.query.filter(status=1, club_id=club_id).values_list('yonghuid', flat=True) ) - group_uids = list( - AdminAssignment.query.filter(status=1) - .filter(Q(club_id__isnull=True) | Q(club_id='')) - .values_list('yonghuid', flat=True) - ) - role_uuids = list( - Role.objects.filter(ClubID=club_id).values_list('RoleUUID', flat=True) - ) - role_user_uuids = list( - UserRole.objects.filter(RoleUUID__in=role_uuids).values_list('UserUUID', flat=True) - ) if role_uuids else [] - - q = ( - Q(UserUID__in=assigned_uids) - | Q(UserUID__in=group_uids) - | Q(UserUUID__in=role_user_uuids) - | Q(Phone__in=list(SUPER_ADMIN_PHONES)) - | Q(ClubID=club_id) - ) if club_id == CLUB_ID_DEFAULT: - q = q | Q(ClubID__isnull=True) | Q(ClubID='') - return qs.filter(q) + return qs.filter( + Q(UserUID__in=assigned_uids) + | Q(ClubID=club_id) + | Q(ClubID__isnull=True) + | Q(ClubID='') + ) + return qs.filter(Q(UserUID__in=assigned_uids) | Q(ClubID=club_id)) def filter_kefu_users_qs(qs, request): diff --git a/jituan/services/club_shangpin_leixing.py b/jituan/services/club_shangpin_leixing.py index d370f07..29d41c1 100644 --- a/jituan/services/club_shangpin_leixing.py +++ b/jituan/services/club_shangpin_leixing.py @@ -81,12 +81,7 @@ def build_club_leixing_list_for_api(club_id): return rows -def build_club_leixing_admin_list(request, include_disabled=False): - """ - 后台类型列表。 - include_disabled=False:仅已上架(小程序配置页)。 - include_disabled=True:已上架+未上架全部返回并带 club_enabled(类型专区页)。 - """ +def build_club_leixing_admin_list(request): if club_read_blocked(request): return { 'club_id': resolve_club_id_from_request(request), @@ -96,22 +91,18 @@ def build_club_leixing_admin_list(request, include_disabled=False): } club_id = resolve_club_id_from_request(request) cfg_map = _config_map(club_id) - rows = [] + enabled = [] for lx in ShangpinLeixing.query.exclude(shenhezhuangtai=2).order_by('-paixu', 'id'): cfg = cfg_map.get(lx.id) - enabled = bool(_is_visible(club_id, lx.id, cfg)) - if not include_disabled and not enabled: + if not _is_visible(club_id, lx.id, cfg): continue item = build_leixing_item(lx, cfg) - item['club_enabled'] = enabled - rows.append(item) - if include_disabled: - rows.sort(key=lambda x: (0 if x.get('club_enabled') else 1, -int(x.get('paixu') or 0), x['id'])) - else: - rows.sort(key=lambda x: (-int(x.get('paixu') or 0), x['id'])) + item['club_enabled'] = True + enabled.append(item) + enabled.sort(key=lambda x: (-int(x['paixu'] or 0), x['id'])) return { 'club_id': club_id, - 'list': rows, + 'list': enabled, 'scope': resolve_club_scope(request), }