Files
saasshop/README.md

118 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 本地部署说明(当前环境)
## 访问地址
- 应用首页:`http://192.168.10.199:9001/`
- 总台管理:`http://192.168.10.199:9001/admin/login`
- 站点后台:`http://192.168.10.199:9001/site-admin/login`
- 商家后台:`http://192.168.10.199:9001/merchant-admin/login`
- phpMyAdmin`http://192.168.10.199:888/`
## 应用目录
- Laravel 项目:`/var/www/sites/app`
## 技术栈
- Nginx 1.22
- PHP 8.2 FPM
- MariaDB 10.11
- Redis 7
- Laravel 12
## 已配置内容
- Laravel 已接入 MySQL 数据库 `appdb`
- Laravel 已接入 Redis缓存 / 队列)
- `9001` 已指向 Laravel `public/`
- `888` 已指向 phpMyAdmin
- 当前项目已完成总台管理、站点后台、商家后台三层后台基础骨架
- 当前数据库与代码基线已统一使用 `merchant / merchants / merchant_id` 语义
## 已实现功能概览(截至 2026-03-11
### 1) 三层后台(总台/站点/商家)基础骨架
- 总台管理(`/admin`
- 登录 + 登录态校验中间件
- 仪表盘与运营定位说明
- 站点管理:列表 + 新增(基础骨架)
- 商品巡检:列表 + 新增/更新/删除(基础骨架)
- 订单监控:列表 + 状态更新 + 详情页(基础骨架)
- 系统配置/渠道配置页面:已接入数据库读取(骨架)
- 支付配置基线:已落库并在渠道配置页展示(骨架)
- 站点后台(`/site-admin`
- 登录
- 站点范围内的商品/订单最小查询能力(骨架,逐步推进中)
- 商家后台(`/merchant-admin`
- 仪表盘统计(已接入 Redis 缓存与失效)
- 商品:列表 + 新增/编辑/删除(含分类展示/选择)
- 订单:列表 + 详情 + 状态更新(含订单明细)
- 用户:列表
### 2) 商品分类 + 订单明细数据结构
- `product_categories`:商品分类表(站点维度)
- `products.category_id`:商品关联分类
- `order_items`:订单明细(多商品场景)
- Seeder已补演示分类/商品/订单明细数据
### 3) Redis 缓存(第一阶段)
- `.env` 已切换 `CACHE_STORE=redis`
- 缓存 key 辅助类:`App\Support\CacheKeys`
- 已缓存:商家仪表盘统计、商家商品列表
- 已实现基础缓存失效:商品新增/更新/删除、订单状态更新
### 4) 商品导入失败明细留痕 + 定时清理
- 导入失败 CSV 文件保存到本地磁盘(`storage/app/private/...`
- 总台/商家后台提供下载入口
- 已补定时清理脚本:每天东八区 `04:30` 清理 30 天前失败文件
### 5) 收费闭环(骨架已落地,持续完善中)
围绕 `plans + site_subscriptions + platform_orders` 建立“可运营可治理”的最小闭环。
- 核心表/模型/迁移
- `plans`(套餐)
- `site_subscriptions`(站点订阅)
- `platform_orders`(平台订单)
- 订阅激活服务(最小闭环)
- `SubscriptionActivationService::activateOrder()`
- 支持:新购创建订阅;续费延长订阅到期(未过期基于 ends_at已过期从 now 起算)
- 幂等保护:同一订单重复同步不会重复续期(基于 meta.subscription_activation
- 平台订单(总台治理核心页)
- 列表:筛选/摘要卡/异常定位(回执、退款、对账差额、同步状态、失败原因 Top 等)
- 详情:支付/退款回执留痕、退款汇总口径统一、订阅关联、同步动作、审计记录
- 工具:导出 CSV、批量同步订阅、批量仅标记生效、清除同步失败标记均支持筛选条件透传
- 订阅详情(总台治理页)
- 订阅维度治理摘要:回执/退款汇总 + 对账差额 + 同步状态聚合
- 与平台订单列表一键联动跳转(保持筛选上下文)
- 支持从订单/订单列表进入并回跳back
### 6) 测试覆盖Feature Tests 为主)
- 平台订单:列表/详情/筛选/导出/批量工具/回执退款口径/失败原因联动
- 订阅详情:治理摘要与联动链接
- 订阅激活:续期延长口径与幂等保护
> 更详细的边界与页面清单可参考:`docs/ADMIN_BASELINE.md`、`docs/FOUNDATION_PROGRESS_2026-03-08.md`。
## 数据库连接
- DB_HOST=`127.0.0.1`
- DB_PORT=`3306`
- DB_DATABASE=`appdb`
- DB_USERNAME=`appuser`
- 密码存放于:`/app/working.secret/appdb.env`
## phpMyAdmin
- 使用 MySQL 账号登录(推荐直接用 `appuser`
- 地址:`http://192.168.10.199:888/`
## 商品导入失败明细文件
- 商品批量导入失败明细 CSV 通过 Laravel `local` 磁盘保存
- 当前 `local` 磁盘根目录为:`/var/www/sites/app/storage/app/private`
- 总台管理失败文件目录:`/var/www/sites/app/storage/app/private/imports/product-failures/platform/`
- 商家后台失败文件目录:`/var/www/sites/app/storage/app/private/imports/product-failures/merchant_<merchant_id>/`
- 页面下载入口:
- 总台:`/admin/products/import-failures/{file}`
- 商家:`/merchant-admin/products/import-failures/{file}`
- 文件内容包含:`row_number + 原始导入字段 + error`
- 已补定时清理脚本:`/usr/local/bin/saasshop_import_failures_cleanup.sh`
- 当前保留策略:默认保留 30 天,每天东八区 `04:30` 自动清理一次过期 failure CSV
## 注意
- 敏感凭证不要写进公开文档或长期记忆
- 当前项目已进入 SaaS 电商基础框架阶段,后续优先继续补经营能力、配置能力与筛选能力