Files
saasshop/README.md

6.4 KiB
Raw Permalink Blame History

本地部署说明(当前环境)

访问地址

  • 应用首页: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
  • phpMyAdminhttp://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 语义

已实现功能概览(持续更新)

最近版本更新Changelog

2026-03-15

  • 客服中心(工单)骨架落地(总台管理)
    • 新增:工单模型 SupportTicket + 表 support_tickets
    • 新增:/admin/support-tickets 工单列表占位页(后续接入列表/筛选/创建/指派)
    • 新增:总台 TopNav 菜单「客服中心」→「工单」
    • 新增 Feature 护栏:
      • AdminSupportTicketIndexPageShouldRenderTest
      • AdminTopNavShouldContainSupportCenterLinkTest

2026-03-15治理链路风险点处置

  • 回滚未完成的“平台订单 attach-subscription”半成品预埋避免脏改混入

下一步开发清单Top 5

  1. 客服中心:工单最小 CRUD列表真实数据 + 创建)+ 基础筛选status/priority/scope 预留)
  2. 治理命中 → 一键生成工单(优先:renewal_missing_subscription
  3. 工单编号生成策略ticket_no与索引/唯一性策略落地
  4. 权限与隔离:按 scopeplatform/site/merchant约束查询与操作先平台 scope 起步)
  5. 后台样式体系继续收敛admin-components.css 组件化)

已实现功能概览(截至 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.mddocs/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 电商基础框架阶段,后续优先继续补经营能力、配置能力与筛选能力