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:
@@ -247,6 +247,7 @@ export interface SyncSiteAccountsResult {
|
||||
synced_count: number
|
||||
skipped_count: number
|
||||
updated_count?: number
|
||||
reenabled_count?: number
|
||||
disabled_stale_count?: number
|
||||
total_active: number
|
||||
}
|
||||
|
||||
@@ -1292,10 +1292,10 @@ export default function Accounts() {
|
||||
checked={syncCleanStale}
|
||||
onChange={(e) => setSyncCleanStale(e.target.checked)}
|
||||
>
|
||||
<Typography.Text strong>自动下架主站已失效/已出租商品</Typography.Text>
|
||||
<Typography.Text strong>清理货源已删除的货架行</Typography.Text>
|
||||
</Checkbox>
|
||||
<div style={{ paddingLeft: 24, fontSize: 12, color: '#64748b', marginTop: 4 }}>
|
||||
推荐勾选。同步时自动将主站已下架、已出租或被删除的商品标记为已下架,避免历史幽灵商品滞留货架。
|
||||
推荐勾选。只把「商品记录已被删除」的历史货架行标记为已下架;已下架、已出租、待审核的商品会保留在货架,并随商品重新在售自动恢复展示,不会影响您的人工下架选品。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1370,8 +1370,8 @@ export default function Accounts() {
|
||||
<Col span={12}>
|
||||
<Card size="small" style={{ background: '#fffbe6', borderColor: '#ffe58f', textAlign: 'center' }}>
|
||||
<Statistic
|
||||
title="联动下架失效商品"
|
||||
value={syncResult?.disabled_stale_count ?? 0}
|
||||
title="恢复展示"
|
||||
value={syncResult?.reenabled_count ?? 0}
|
||||
valueStyle={{ color: '#faad14', fontWeight: 'bold' }}
|
||||
suffix="个"
|
||||
/>
|
||||
@@ -1380,7 +1380,17 @@ export default function Accounts() {
|
||||
<Col span={12}>
|
||||
<Card size="small" style={{ background: '#fafafa', borderColor: '#d9d9d9', textAlign: 'center' }}>
|
||||
<Statistic
|
||||
title="主站共享池在售"
|
||||
title="清理已删除货源"
|
||||
value={syncResult?.disabled_stale_count ?? 0}
|
||||
valueStyle={{ color: '#595959', fontWeight: 'bold' }}
|
||||
suffix="个"
|
||||
/>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col span={24}>
|
||||
<Card size="small" style={{ background: '#fafafa', borderColor: '#d9d9d9', textAlign: 'center' }}>
|
||||
<Statistic
|
||||
title="全网在售候选"
|
||||
value={syncResult?.total_active ?? 0}
|
||||
valueStyle={{ color: '#595959', fontWeight: 'bold' }}
|
||||
suffix="个"
|
||||
|
||||
@@ -323,7 +323,7 @@ export default function Storefront() {
|
||||
description={
|
||||
<span style={{ color: '#94a3b8' }}>
|
||||
{items.length === 0
|
||||
? '当前分销站点暂无上架商品,站长可通过分销后台一键同步主站商品。'
|
||||
? '当前分销站点暂无在售商品。全网新审核通过的商品会自动上架到本站货架。'
|
||||
: '未找到符合条件的账号商品,请更换搜索词重试。'}
|
||||
</span>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user