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