fix(distribution): 修复分站搜不到已审核商品并实现审核通过自动铺货
问题:分站上架商品审核通过后主站能搜到、分站看不到,且没有自动同步。 根因:分站前台/搜索只认 distribution_site_accounts 中 display_status='enabled' 的货架行,而主站前台不按站点过滤。货架行此前只由「号主在该站上架」或站长手动 「一键同步主站商品」写入,审核通过不回写;同时一键同步的失效清理把「非 published+approved」的货架行一律置为 disabled,商品重新在售后也不会恢复。 - 新增 EnsureListingShelvedTx:商品变为 published+approved 时自动铺到所有 display_account_enabled=true 的站点货架(缺行新增、系统下架恢复、人工下架不动), 经 ListingShelfSyncer 接口注入,避免 listing 反向依赖 distribution - 新增 distribution_site_accounts.display_disabled_by(operator/system/空)区分下架 来源;人工上下架各入口写入来源标记 - 一键同步的失效清理收紧为只清理「货源记录已删除」的孤儿行,并支持恢复系统下架行, 结果新增 reenabled_count - 新增迁移 000074 回填存量缺失货架行,部署后无需逐站手动同步 - 修复 CreateSite 显式传 false/0 的配置(不允许自动展示、结算冷却 0 天)被 GORM default 标签忽略而静默回落默认值 - 前端:去掉会跨站串扰的 localStorage 站点码回退,站点探测完成后再挂载应用, 避免分站发布因缺少站点码被记成主站商品;同步弹窗文案与统计项同步更新 - 补充分销货架自动铺货、清理口径、建站零值落库与审核铺货回归测试
This commit is contained in:
+27
-1
@@ -234,7 +234,30 @@ offline
|
||||
|
||||
关闭展示不删除账号、不影响历史订单,只阻止新展示或新订单,并写入审计日志。
|
||||
|
||||
一个账号是否允许同时挂载多个分销网站:待确认。第一版建议一个账号在同一时刻只归属一个可售分销网站,避免重复出售和归因冲突。
|
||||
#### 6.3.1 货源与自动铺货(已实现)
|
||||
|
||||
所有站点与主站共用同一套货源(`rental_listings` / `game_accounts`),分站货架不是独立商品库,
|
||||
而是「同一批已审核商品在本站的展示关系 + 本站加价」。据此确定铺货规则:
|
||||
|
||||
- 商品变为 `published + approved`(审核通过、后台直接上架、免审上架、编辑后重新上架)时,
|
||||
自动为所有 `status='active' AND display_account_enabled=true` 的站点写入/恢复货架行
|
||||
(`listing.Approve` → `distribution.EnsureListingShelvedTx`),不需要站长手动「一键同步主站商品」。
|
||||
- `display_account_enabled` 的语义是「本站是否参与自动铺货」:关闭后该站不自动接新货,
|
||||
仍可由站长手动同步与选品。
|
||||
- 新增行加价 `shelf_ratio_delta = 0`(等于主站原价),站长可在货架页自主加价;
|
||||
自动铺货不会覆盖已有加价。
|
||||
- 站长人工下架是选品决策,自动铺货与手动同步都不会覆盖;因此
|
||||
`distribution_site_accounts.display_disabled_by` 记录下架来源
|
||||
(`operator` = 站长人工、`system` = 系统自动、空 = 展示中或历史数据)。
|
||||
- 分站前台/搜索只要求 `published + approved` 且货架行 `enabled`;商品暂时下架、出租、
|
||||
待审核都不需要改动货架行(前台条件本身就会隐藏),否则商品重新在售后会永久从分站消失。
|
||||
- 「一键同步主站商品」保留为兜底与修复入口:补全缺失货架行、恢复系统下架/历史无标记的行,
|
||||
`clean_stale_listings` 只清理「商品记录已被删除」的孤儿货架行。
|
||||
|
||||
货源归属与展示归属是两个概念:`rental_listings.distribution_site_id` 表示「这条货是谁收的」
|
||||
(唯一),而 `distribution_site_accounts` 表示「这条货在哪些站的货架上卖」(可多站)。
|
||||
具体分成口径由 `resolveDistributionMode` 按「买入站 × 货源站」判定
|
||||
(同站自卖 / 主站收号分站卖 / 分站收号主站卖 / 三方跨站),避免重复出售与归因冲突。
|
||||
|
||||
### 6.4 不纳入分销网的业务
|
||||
|
||||
@@ -838,6 +861,9 @@ distribution.hao858.com {
|
||||
4. 分站货架自主提价溢价(`shelf_markup_cent`)100% 独享归卖方分站,不参与三方切分;
|
||||
5. 兑换比例提价语义明确(比例越小售价越高,提价使分站售价增加)。
|
||||
- 管理 API 覆盖站点、规则、售出/收号订单查询、财务快照、账号展示开关、支付通道绑定和结算批次。
|
||||
- 货架铺货与展示口径(详见 6.3.1):商品变为 `published + approved` 时自动铺到所有开启自动展示的站点货架,
|
||||
不再依赖站长手动同步;`distribution_site_accounts.display_disabled_by` 记录下架来源,自动铺货不覆盖站长人工下架;
|
||||
`clean_stale_listings` 只清理商品记录已删除的孤儿货架行。
|
||||
- 生产与测试口径一致:结算批次入账、站点提现与冷却期自动释放不再按 `APP_ENV` 冻结(原 `liveMoneyMovementEnabled` 生产保护已移除)。
|
||||
- 新建站点的默认结算冷却天数由系统配置 `distribution.default_settlement_hold_days` 统一控制(默认 7 天,0=立即释放,最大 365),管理端可在系统配置页调整;站点级 `settlement_hold_days` 仍可单独覆盖。
|
||||
- `distribution-admin` 基于 React + TypeScript + Vite + Ant Design,覆盖经营大盘、双视图资产管理、选品货架、订单中心、品牌装修与钱包明细。
|
||||
|
||||
Reference in New Issue
Block a user