前端不再写死运营数据: - 首页 Banner/保障条/教程卡 改由 /api/home/index 下发(fa_banner + fa_config), 数据缺失或停用自动回落内置兜底文案 - 订单状态提示改由后端 OrderStatus::tip() 下发 status_tip,前后端一套口径 后台可管(FastAdmin 生成器): - 新增 13 个业务后台模块:运营位/订单/师傅/商家/优惠券/评价/消息/服务/服务类目/申诉/开票/提现/结算单 (controller + model + view + fa_auth_rule 菜单 78 条) 修复: - nginx /admin/* 改为 301 到 /admin.php/*,否则后台菜单点开全部 404 验证:tests/phase5_data_sync.js 新增 16 项联动断言;全量回归 202 项断言 0 失败
2.8 KiB
2.8 KiB
Phase 5:后端功能模块 ↔ 前端模块数据同源
1. 数据同源(前端不再写死)
| 前端位置 | 数据来源 | 后台维护入口 |
|---|---|---|
| 首页大促 Banner(角标/标题/副标题/时间) | fa_banner 表(status=normal,按 weigh 倒序,取第 1 条) |
后台 → 首页运营位 |
| 首页服务保障条(4 项) | fa_config 键 home_assure,英文逗号分隔 |
后台 → 常规管理 → 系统配置 |
| 首页教程卡(标题/副标题) | fa_config 键 home_tutorial,格式 `标题 |
副标题` |
| 订单状态提示文案 | common/library/OrderStatus::tip() 随接口下发 status_tip |
代码内统一维护 |
接口约定(/api/home/index):
{
"banners": [{"id":1,"badge":"家装季","title":"双11 狂欢大促","subtitle":"下单立减 · 满额再返券","date_text":"10.23 - 11.15","image":"","link":""}],
"assures": ["平台认证","先行赔付","极速上门","售后无忧"],
"tutorial": {"title":"下单找师傅教程","sub":"3 分钟看懂,下单不踩坑"}
}
任一数据缺失/停用都会回落到代码内置兜底文案,前端不会白屏。
2. 后台管理模块(13 个)
由 FastAdmin 官方生成器产出(controller + model + view + 菜单):
cd /www/wwwroot/yjyf.gzyakj.com.cn
PHP=/www/server/php/74/bin/php
for t in fa_banner fa_order fa_master fa_merchant fa_coupon fa_review fa_message \
fa_service fa_service_cat fa_appeal fa_invoice fa_withdraw fa_settle; do
$PHP think crud -t $t
done
for c in banner order master merchant coupon review message service appeal \
invoice withdraw settle; do
$PHP think menu -c $c
done
$PHP think menu -c service/cat
crud只生成文件,不会写菜单;必须再执行menu才会出现在后台左侧导航。
3. nginx 后台短地址
/admin/* 必须外部 301 到 /admin.php/*(内部 rewrite 会让 FastAdmin 依据 REQUEST_URI 生成的
相对 URL 丢失 admin.php 前缀,导致菜单点开 404):
location ~ ^/admin(/.*)?$ {
return 301 /admin.php$1$is_args$args;
}
配置位于 /www/server/panel/vhost/rewrite/yjyf.gzyakj.com.cn.conf,改动前已备份为 .bak.<时间戳>。
4. 写库字符集(重要)
服务器 mysql 客户端默认字符集非 utf8mb4,直接用
mysql -e "UPDATE ... SET value='中文'" 会把中文二次编码成乱码。务必加:
mysql --default-character-set=utf8mb4 -uyjyf -pyjyf yjyf -e "..."
# 或:mysql --default-character-set=utf8mb4 ... < file.sql
5. 验证
node tests/phase5_data_sync.js # 16 项:后台改数据 → 前端接口即时反映
覆盖:服务上下架、Banner 增改与停用兜底、保障条、教程卡、发券/下架券、订单状态提示、后台模块完整性。