feat: 点单商品审核展示模式可在后台配置

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-06-27 02:53:51 +08:00
parent c26ddfa8d8
commit dd418146dc
5 changed files with 54 additions and 13 deletions

View File

@@ -0,0 +1,20 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('peizhi', '0018_xcx_xieyi_must_sign'),
]
operations = [
migrations.AddField(
model_name='xcxsyspeizhi',
name='shangpin_shenhe_mode',
field=models.PositiveSmallIntegerField(
default=2,
help_text='1=正常运营(shenhezhuangtai=1)2=审核专用(shenhezhuangtai=2)',
verbose_name='点单商品展示模式',
),
),
]

View File

@@ -696,6 +696,12 @@ class XcxSysPeizhi(models.Model):
notify_base_url = models.CharField(
max_length=300, blank=True, default='https://wenhe.nmslb.com/hqhd', verbose_name='业务回调根URL'
)
# 点单页 /shangpin/shangpinhuoqu 按此值筛选类型/专区/商品的 shenhezhuangtai
shangpin_shenhe_mode = models.PositiveSmallIntegerField(
default=2,
verbose_name='点单商品展示模式',
help_text='1=正常运营(shenhezhuangtai=1)2=审核专用(shenhezhuangtai=2)',
)
update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
class Meta:

View File

@@ -113,6 +113,7 @@ class XcxSysPeizhiQueryView(APIView):
'weixin_cert_path': row.weixin_cert_path if row else wx_cfg.WEIXIN_CERT_PATH,
'weixin_key_path': row.weixin_key_path if row else wx_cfg.WEIXIN_KEY_PATH,
'notify_base_url': row.notify_base_url if row else wx_cfg.NOTIFY_BASE_URL,
'shangpin_shenhe_mode': row.shangpin_shenhe_mode if row else wx_cfg.SHANGPIN_SHENHE_MODE,
'from_database': bool(row),
}
return Response({'code': 0, 'msg': 'success', 'data': data})
@@ -129,7 +130,7 @@ class XcxSysPeizhiUpdateView(APIView):
'weixin_official_token', 'weixin_official_encoding_aes_key', 'weixin_template_id',
'weixin_template_max_per_minute', 'weixin_template_batch_size', 'weixin_broadcast_enabled',
'weixin_broadcast_workers', 'weixin_mchid', 'weixin_shanghu_miyao', 'weixin_notify_url',
'weixin_cert_path', 'weixin_key_path', 'notify_base_url',
'weixin_cert_path', 'weixin_key_path', 'notify_base_url', 'shangpin_shenhe_mode',
})
def post(self, request):
@@ -149,6 +150,11 @@ class XcxSysPeizhiUpdateView(APIView):
row.weixin_broadcast_enabled = bool(val)
elif key in ('weixin_template_max_per_minute', 'weixin_template_batch_size', 'weixin_broadcast_workers'):
row.__setattr__(key, int(val))
elif key == 'shangpin_shenhe_mode':
mode = int(val)
if mode not in (1, 2):
continue
row.shangpin_shenhe_mode = mode
else:
row.__setattr__(key, str(val).strip())
row.save()

View File

@@ -5,6 +5,7 @@ from rest_framework import status
from rest_framework.throttling import AnonRateThrottle
from django.db import models
from shangpin.models import ShangpinLeixing, ShangpinZhuanqu, Shangpin
from utils.xcx_sys_config import get_shangpin_shenhe_zhuangtai
import logging
from rest_framework.permissions import AllowAny # 新增这行
@@ -30,16 +31,12 @@ class ShangpinHuoquView(APIView):
try:
logger.info("收到商品数据获取请求")
# 1. 查询商品类型(只查询正常状态的类型,并排序)
# 正常运营:只显示 shenhezhuangtai=2 的商品类型
leixing_queryset = ShangpinLeixing.objects.filter(
shenhezhuangtai=2 # 只取正常状态
).order_by('-paixu', 'id') # 先按paixu降序再按id升序
shenhe_filter = get_shangpin_shenhe_zhuangtai()
logger.info("点单商品展示模式 shenhezhuangtai=%s", shenhe_filter)
# 注意:审核期间使用下面这行代码(先注释掉)
'''leixing_queryset = ShangpinLeixing.objects.filter(
shenhezhuangtai=2 # 审核期间:只取审核专用状态
).order_by('-paixu', 'id')'''
leixing_queryset = ShangpinLeixing.objects.filter(
shenhezhuangtai=shenhe_filter,
).order_by('-paixu', 'id')
shangpinleixing_data = []
for leixing in leixing_queryset:
@@ -57,8 +54,8 @@ class ShangpinHuoquView(APIView):
if visible_leixing_ids:
zhuanqu_queryset = ShangpinZhuanqu.objects.filter(
leixing_id__in=visible_leixing_ids,
shenhezhuangtai=2 # 🔴【添加】只筛选审核状态为2的专区
).order_by('-paixu', 'id') # 先按paixu降序再按id升序
shenhezhuangtai=shenhe_filter,
).order_by('-paixu', 'id')
else:
zhuanqu_queryset = ShangpinZhuanqu.objects.none()
@@ -79,7 +76,7 @@ class ShangpinHuoquView(APIView):
# 注意这里使用values()只获取指定字段,提高查询效率
shangpin_queryset = Shangpin.objects.filter(
zhuanqu_id__in=visible_zhuanqu_ids,
shenhezhuangtai=2 # 🔴【添加】只筛选审核状态为2的商品
shenhezhuangtai=shenhe_filter,
).values(
'id', 'biaoqian', 'jiage', 'leixing_id',
'zhuanqu_id', 'tupian_url', 'duiwai_xiaoliang', 'paixu'

View File

@@ -119,5 +119,17 @@ class WxConfig:
def NOTIFY_BASE_URL(self):
return _val('notify_base_url', None, 'https://wenhe.nmslb.com/hqhd').rstrip('/')
@property
def SHANGPIN_SHENHE_MODE(self):
row = _load_row()
if row is not None and row.shangpin_shenhe_mode in (1, 2):
return int(row.shangpin_shenhe_mode)
return 2
wx_cfg = WxConfig()
def get_shangpin_shenhe_zhuangtai():
"""点单页商品接口筛选 shenhezhuangtai1=正常2=审核专用"""
return wx_cfg.SHANGPIN_SHENHE_MODE