6.6 KiB
6.6 KiB
站点后台最小落地方案(第一阶段)
目标
在当前已存在 总台管理(/admin) 与 商家后台(/merchant-admin) 的基础上,新增一层 站点后台(/site-admin),让业务结构从“总台 + 商家”演进到更清晰的四级结构:
- 总台管理
- 站点后台
- 商家后台
- 买家侧前台 / 多端
第一阶段目标不是一次性做完整第三套后台,而是先把 信息架构、路由骨架、权限边界、最小可见页面 搭起来,避免后续继续把“站点”只当成总台里的一个列表概念。
当前判断
1. 现有 Merchant 可作为第一阶段“站点承接层”
当前系统中的 Merchant 已经关联:
- 管理员
- 用户
- 商品
- 订单
- 商品分类
- 导入历史
因此第一阶段无需立刻新增 sites 表或把所有 merchant_id 重构为 site_id。
2. 第一阶段采用“显示层先站点化,底层暂借 Merchant 承接”
建议策略:
- 对外显示 / 页面文案 / 信息架构:使用“站点”口径
- 底层代码 / 数据库 / 外键字段:暂时保留
Merchant / merchant_id / merchants
这样可以在不打散现有稳定基线的前提下,先把“站点后台”独立成一层真实后台。
推荐落地方式
新增独立后台前缀
建议新增:
- 登录页:
/site-admin/login - 后台首页:
/site-admin
而不是继续把站点能力塞在 /admin/merchants 页面里硬扩。
原因
如果继续只放在 /admin/merchants:
- 它更像总台中的一个管理页面
- 难以形成独立后台边界
- 后续站点仪表盘、站点商品、站点订单、站点商家治理容易继续堆在总台下,结构会越来越混
新增 /site-admin 的收益:
- 总台 / 站点 / 商家 三层后台职责更清晰
- 权限边界更容易测试
- 路由与布局更稳定,后续扩页面更自然
- 可先做骨架,后续逐页填能力
第一阶段职责边界
总台管理(/admin)
面向平台运营方,负责:
- 平台级配置
- 多站点治理
- 全站点级巡检与统计
- 站点开通 / 状态维护
- 渠道与系统能力
站点后台(/site-admin)
面向站点运营方,负责:
- 当前站点仪表盘
- 当前站点范围的商品巡检
- 当前站点范围的订单监控
- 当前站点范围的商家管理
- 站点级运营入口与治理入口
商家后台(/merchant-admin)
面向商家经营方,负责:
- 当前商家商品经营
- 当前商家订单处理
- 当前商家用户查看
- 当前商家导入导出与日常运营
第一阶段建议页面
必做骨架页
/site-admin/login- 站点后台登录页/site-admin- 站点仪表盘/site-admin/merchants- 站点商家管理(占位 / 首版列表)/site-admin/products- 站点商品巡检(占位 / 首版列表)/site-admin/orders- 站点订单监控(占位 / 首版列表)
可后置
/site-admin/users/site-admin/product-categories/site-admin/settings/*/site-admin/products/import-histories
第一阶段重点是把后台层级立起来,不要求所有运营能力一次补齐。
第一阶段技术实现建议
1. 路由
建议新增路由分组:
Route::prefix('site-admin')- 登录 / 退出登录
Route::middleware('site.admin.auth')
2. 控制器命名空间
建议新增:
App\Http\Controllers\SiteAdmin\AuthControllerApp\Http\Controllers\SiteAdmin\DashboardControllerApp\Http\Controllers\SiteAdmin\MerchantControllerApp\Http\Controllers\SiteAdmin\ProductControllerApp\Http\Controllers\SiteAdmin\OrderController
第一阶段可复用总台控制器中的部分查询逻辑,但不要直接共用视图布局。
3. 视图目录
建议新增:
resources/views/site_admin/layouts/app.blade.phpresources/views/site_admin/auth/login.blade.phpresources/views/site_admin/dashboard.blade.phpresources/views/site_admin/merchants/index.blade.phpresources/views/site_admin/products/index.blade.phpresources/views/site_admin/orders/index.blade.php
4. 中间件与上下文
建议新增:
App\Http\Middleware\SiteAdminAuthApp\Http\Controllers\Concerns\ResolvesSiteContext
第一阶段建议:
- session 中新增
admin_scope = site - session 中预留
admin_site_id - 在底层尚未拆
sites表之前,可暂时把admin_site_id映射到当前merchant_id或映射到“当前选中站点”上下文
第一阶段数据策略
结论
不立刻改表,不立刻拆实体。
当前继续沿用:
merchantsmerchant_idMerchant模型
同时在设计上约定:
- 第一阶段
Merchant= 站点承接层 - 第二阶段如需独立“站点 -> 商家”两层实体关系,再单开数据结构重构方案
这样做的优点:
- 不打断现有商品 / 订单 / 分类 / 导入历史闭环
- 不破坏当前测试基线
- 可以先把三层后台信息架构跑起来
第一阶段账号与权限建议
建议新增角色语义
- 总台管理员:平台级
- 站点管理员:站点级
- 商家管理员:商家级
第一阶段最小实现建议
现阶段先不做完整 RBAC,先做边界:
- 总台管理员不能登录站点后台(除非显式赋权)
- 商家管理员不能登录站点后台
- 站点管理员不能进入总台管理
- 站点管理员进入站点后台后,所有查询都受当前站点作用域限制
第一阶段测试建议
新增 Feature 测试:
SiteAdminAccessTest.php- 站点后台登录页可访问
- 站点管理员可登录
/site-admin
SiteAdminProtectedPagesTest.php- 未登录访问
/site-admin/*跳转/site-admin/login - 错作用域账号访问返回 403
- 未登录访问
SiteAdminBusinessPagesTest.php- 仪表盘 / 站点商家 / 站点商品 / 站点订单页可访问
- 页面关键标题与入口存在
推荐实施顺序
第 1 步
先搭骨架:
- route
- controller
- middleware
- layout
- login
- dashboard
第 2 步
补最小站点业务页:
- merchants
- products
- orders
第 3 步
补访问测试与权限边界测试
第 4 步
再决定是否把总台 /admin/merchants 页面逐步改造成“站点入口页 / 站点开通页”
当前推荐结论
站点后台应正式提上,且推荐以 /site-admin 作为独立后台层新增;第一阶段先复用 Merchant 作为站点承接层,不急着动数据库实体拆分。
这条路线最符合当前项目节奏:
- 先打底
- 先把层级立住
- 先保证稳定
- 再逐步把站点能力做实