等级分销与货源集市多渠道规则
等级分销和货源集市是同一商品的不同供货渠道,不再分别生成代理商品,也不再把商品永久锁定到某一个渠道。
商品关系
- 同一“下级商户 + 直属上级 + 上级商品”只能有一条
goods_agent_relation。 - 已从任一渠道对接后,其他入口统一显示“已对接”。
goods_agent_relation.source、relation_id、cost_price保留用于兼容旧客户端,含义调整为当前解析结果,不是永久绑定来源。- 商户主动解除商品对接后,渠道恢复不会自动重新创建商品。
渠道关系
agent_relation_channel 独立保存上下级之间的渠道授权;goods_agent_supply_channel 保存已对接商品在该渠道下的实时价格和有效性。
channel_type=1:等级分销,价格来自启用的goods_agent_price。channel_type=2:货源集市,价格来自goods.hall_price,同时校验名片、访问权限和大厅分类。
每个渠道独立保存状态、范围、价格、继续分销权限、失效原因和报价版本。调整等级只替换等级渠道,不删除大厅渠道。
当前供货价
系统从所有有效渠道选择最低价。价格相同时:
- 当前渠道仍有效则保持当前渠道。
- 当前渠道失效则按优先级选择。
- 优先级相同按渠道 ID 选择,避免反复切换。
例如等级价 39 元、大厅价 42 元时使用 39 元;等级渠道失效而大厅仍有效时自动切换到 42 元。全部渠道失效才显示“无对接权限”。
继续向下分销
- 商户自己销售时,从全部有效渠道选择最低供货价。
- 商户继续向下分销时,只能从
can_proxy=1的有效渠道中选择成本基准。 - 货源集市渠道默认
can_proxy=0。 - 没有允许继续分销的渠道时,代理商品不能继续开放等级或大厅供货。
distribution_enabled保存商户自己的分销开关,proxy_supply_available表示上游 PROXY 渠道是否可用,effective_can_proxy为两者共同计算的最终能力。- 上游 PROXY 能力失效只更新最终能力,不覆盖商户开关,也不清空等级价、大厅价或分类;RETAIL 渠道仍有效时,商户仍可正常零售。
状态变化
调整等级、关闭等级商品、价格变化、大厅权限变化、封禁/解封、总分销权限和上级商品状态变化,统一调用供货渠道解析器:
text
渠道变化
→ 重新计算有效渠道
→ 选择最低有效供货价
→ 对比原供货价
→ 更新商品兼容字段和业务状态- 有其他有效渠道:保持商品对接并自动切换。
- 全部渠道失效:自动下架,显示“无对接权限”。
- 拉黑或全局停供:自动下架,显示“停供已下架”。
- 上级商品下架:显示“上级已下架”。
- 权限恢复后重新计算全部渠道、最低有效供货价和继续分销权限,并清除已经解除的异常标记;商品保持当前下架状态,不自动替商户上架,必须由商户确认后手动上架。
涨价规则
- 新成本导致售价不足最低利润:无论是否开启涨价自动下架,都下架并显示“售价待调整”。
- 新成本上涨、售价仍有利润、开启涨价自动下架:下架并显示“售价待调整”。
- 新成本上涨、售价仍有利润、未开启:只更新成本,保持原上下架状态。
- 成本下降或不变:更新成本,不自动改变上下架状态。
兼容说明
旧商户端可以继续读取:
source:当前实际渠道类型。cost_price:当前最低有效供货价。can_proxy:兼容字段,等同当前effective_can_proxy,不能再作为商户开关的唯一存储。proxy_status/proxy_status_text:当前业务状态。
新版接口会额外返回 distribution_enabled、proxy_supply_available、effective_can_proxy、current_channel_id、supply_version 和 supply_channels。旧客户端忽略新增字段即可。