From 8f867588feaec49a58258c7c9f32f0ddc5a249dd Mon Sep 17 00:00:00 2001 From: XingQue Date: Wed, 22 Jul 2026 19:41:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E5=8D=95=E5=BD=92=E5=B1=9E=E5=8F=AA?= =?UTF-8?q?=E6=98=A0=E5=B0=84=E6=8A=A2=E5=8D=95=E7=B1=BB=E5=9E=8BID?= =?UTF-8?q?=EF=BC=8C=E6=8A=BC=E9=87=91/=E4=BC=9A=E5=91=98=E8=A6=81?= =?UTF-8?q?=E6=B1=82=E4=BB=8D=E7=94=A8=E5=95=86=E5=93=81=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=81=BF=E5=85=8D=E8=A2=AB=E5=95=86?= =?UTF-8?q?=E5=AE=B6=E7=AB=AF=E7=B1=BB=E5=9E=8B=E8=A6=86=E7=9B=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- utils/shangpin_guishu.py | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/utils/shangpin_guishu.py b/utils/shangpin_guishu.py index a67e754..9641a4f 100644 --- a/utils/shangpin_guishu.py +++ b/utils/shangpin_guishu.py @@ -33,30 +33,35 @@ def parse_guishu_leixing_id(raw, shenhezhuangtai=None): def resolve_order_qiangdan_fields(shangpin): """ 点单写入 Dingdan 的抢单相关字段: - - 商品或所属类型配置了 guishu_leixing_id → 用该商家端类型的 id/yaoqiuleixing/huiyuan_id/yongjin - - 否则沿用商品自身字段 + - 抢单要求(yaoqiuleixing / huiyuan_id / yongjin)一律用商品自身后台配置 + - 若商品或所属类型配置了 guishu_leixing_id → 仅把 leixing_id 映射到商家端类型 + (抢单池按商家端类型展示;押金金额仍按商品配置,不覆盖) """ + # 商品自身抢单要求(后台商品/类型配置的会员或押金门槛) + yaoqiu = getattr(shangpin, 'yaoqiuleixing', None) + huiyuan_id = getattr(shangpin, 'huiyuan_id', '') or '' + yongjin = getattr(shangpin, 'yongjin', None) + if yongjin is None: + yongjin = 0 + + leixing_id = getattr(shangpin, 'leixing_id', None) + guishu_id = getattr(shangpin, 'guishu_leixing_id', None) - if not guishu_id and getattr(shangpin, 'leixing_id', None): - own_type = ShangpinLeixing.objects.filter(id=shangpin.leixing_id).only( + if not guishu_id and leixing_id: + own_type = ShangpinLeixing.objects.filter(id=leixing_id).only( 'guishu_leixing_id', ).first() if own_type: guishu_id = own_type.guishu_leixing_id if guishu_id: - merchant = ShangpinLeixing.objects.filter(id=guishu_id, shenhezhuangtai=3).first() + merchant = ShangpinLeixing.objects.filter(id=guishu_id, shenhezhuangtai=3).only('id').first() if merchant: - return { - 'leixing_id': merchant.id, - 'yaoqiuleixing': merchant.yaoqiuleixing, - 'huiyuan_id': merchant.huiyuan_id or '', - 'yongjin': merchant.yongjin if merchant.yongjin is not None else 0, - } + leixing_id = merchant.id return { - 'leixing_id': shangpin.leixing_id, - 'yaoqiuleixing': getattr(shangpin, 'yaoqiuleixing', None), - 'huiyuan_id': getattr(shangpin, 'huiyuan_id', '') or '', - 'yongjin': getattr(shangpin, 'yongjin', 0) or 0, + 'leixing_id': leixing_id, + 'yaoqiuleixing': yaoqiu, + 'huiyuan_id': huiyuan_id, + 'yongjin': yongjin, }