From 7684fe346be13679a3644449a3006ad0f1a23efa Mon Sep 17 00:00:00 2001 From: XingQue Date: Tue, 21 Jul 2026 22:35:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E5=8D=95=E8=8E=B7=E5=8F=96=E5=95=86?= =?UTF-8?q?=E5=93=81=EF=BC=9A=E6=89=93=E6=89=8B=E4=B8=94=E6=9C=89=E9=82=80?= =?UTF-8?q?=E8=AF=B7=E4=BA=BA=E4=B9=9F=E5=BC=BA=E5=88=B6=E5=8F=AA=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E9=9A=90=E8=97=8F=E5=BC=8F=E5=95=86=E5=93=81=EF=BC=8C?= =?UTF-8?q?=E4=B8=8E=E6=89=AB=E7=A0=81=E6=A0=87=E8=AE=B0=E5=90=8C=E7=AD=89?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- shangpin/views.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/shangpin/views.py b/shangpin/views.py index 89969f9..8767879 100644 --- a/shangpin/views.py +++ b/shangpin/views.py @@ -7,7 +7,7 @@ from django.db import models from shangpin.models import ShangpinLeixing, ShangpinZhuanqu, Shangpin from utils.xcx_sys_config import get_shangpin_shenhe_zhuangtai from utils.jwt_auth import OptionalYonghuidJWTAuthentication -from yonghu.models import UserMain +from yonghu.models import UserMain, UserDashou import logging from rest_framework.permissions import AllowAny # 新增这行 @@ -22,8 +22,9 @@ class ShangpinHuoquView(APIView): 一次性返回商品类型、商品专区、商品列表 筛选规则: - - 已登录且扫过管事二维码(guanshi_saoma=1):只返回 shenhezhuangtai=4(隐藏式), - 与后台「点单商品展示/体验」开关无关 + - 已登录且满足任一条件,只返回 shenhezhuangtai=4(隐藏式),与体验开关无关: + 1) 扫过管事二维码 guanshi_saoma=1 + 2) 已是打手且有邀请人 yaoqingren - 其它:按全局审核开关返回 1 或 2(原逻辑不变) """ @@ -33,20 +34,31 @@ class ShangpinHuoquView(APIView): permission_classes = [AllowAny] def _resolve_shenhe_filter(self, request): - """先查用户扫码标记;扫过则强制 4,否则走全局体验开关。""" + """扫码标记或打手有邀请人 → 强制隐藏式4;否则走体验开关。""" user = request.user if getattr(user, 'is_authenticated', False): + yonghuid = getattr(user, 'yonghuid', '') saoma = UserMain.objects.filter(pk=user.pk).values_list('guanshi_saoma', flat=True).first() if saoma == 1: logger.info( - '点单商品:用户已扫管事码,强制隐藏式 shenhezhuangtai=4 yonghuid=%s', - getattr(user, 'yonghuid', ''), + '点单商品:已扫管事码,强制隐藏式4 yonghuid=%s', + yonghuid, + ) + return 4 + # 打手且有邀请人:与扫码同等效果 + has_inviter = UserDashou.objects.filter(user_id=user.pk).exclude( + yaoqingren__isnull=True, + ).exclude(yaoqingren='').exists() + if has_inviter: + logger.info( + '点单商品:打手有邀请人,强制隐藏式4 yonghuid=%s', + yonghuid, ) return 4 logger.info( - '点单商品:用户未扫管事码 guanshi_saoma=%s yonghuid=%s', + '点单商品:未扫码且无打手邀请人 guanshi_saoma=%s yonghuid=%s', saoma, - getattr(user, 'yonghuid', ''), + yonghuid, ) shenhe = get_shangpin_shenhe_zhuangtai() logger.info('点单商品:按体验开关 shenhezhuangtai=%s', shenhe)