问题:分站上架商品审核通过后主站能搜到、分站看不到,且没有自动同步。 根因:分站前台/搜索只认 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 站点码回退,站点探测完成后再挂载应用, 避免分站发布因缺少站点码被记成主站商品;同步弹窗文案与统计项同步更新 - 补充分销货架自动铺货、清理口径、建站零值落库与审核铺货回归测试
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import 'element-plus/theme-chalk/el-message.css'
|
||
import 'element-plus/theme-chalk/el-message-box.css'
|
||
import 'vant/lib/index.css'
|
||
import './styles/base.css'
|
||
import './styles/pc.css'
|
||
import './styles/admin.css'
|
||
|
||
import { createPinia } from 'pinia'
|
||
import { createApp } from 'vue'
|
||
|
||
import App from './App.vue'
|
||
import router from './router'
|
||
import { useAdminSessionStore } from './stores/adminSession'
|
||
import { useDistributionSiteStore } from './stores/distributionSite'
|
||
import { useSessionStore } from './stores/session'
|
||
|
||
const app = createApp(App)
|
||
const pinia = createPinia()
|
||
|
||
app.use(pinia).use(router)
|
||
|
||
window.addEventListener('auth-storage-changed', () => {
|
||
useSessionStore(pinia).syncFromStorage()
|
||
useAdminSessionStore(pinia).syncFromStorage()
|
||
})
|
||
|
||
window.addEventListener('storage', event => {
|
||
if (event.storageArea === localStorage) {
|
||
useSessionStore(pinia).syncFromStorage()
|
||
useAdminSessionStore(pinia).syncFromStorage()
|
||
}
|
||
})
|
||
|
||
// 初始化分销站点租户配置(如 ?site=xxx 或独立域名访问)。
|
||
// 必须在挂载前完成:独立域名下的站点码由 /distribution/site-info 探测后写入 sessionStorage,
|
||
// 若在探测完成前渲染,分站页面的请求(包括发布商品)会缺少站点码而被当成主站发布。
|
||
async function bootstrap() {
|
||
await useDistributionSiteStore(pinia)
|
||
.initSite()
|
||
.catch(() => undefined)
|
||
await router.isReady()
|
||
app.mount('#app')
|
||
}
|
||
|
||
void bootstrap()
|