点单归属只映射抢单类型ID,押金/会员要求仍用商品后台配置,避免被商家端类型覆盖。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-22 19:41:01 +08:00
parent edcb235828
commit 8f867588fe

View File

@@ -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,
}