后端 (Laravel 10 + Sanctum): - RBAC 四层权限系统 (users→roles→permissions→menus) - 门店隔离中间件 (BelongsToStore Trait + StoreIsolation Middleware) - 操作日志中间件 (自动记录写操作) - 权限检查中间件 (CheckPermission) - 16张数据库表迁移 (系统基础+RBAC+字典+配置) - 11个 Eloquent Model - Auth API (登录/登出/用户信息) - 系统设置模块 CRUD (门店/部门/职务/用户/角色/菜单/权限/字典/日志) - 45条 RESTful API 路由 - InitSeeder 初始数据 (超管/角色/76权限/31菜单) 前端 (Vue 3 + Element Plus + Vite): - Axios 请求封装 + Token 注入 - Pinia 状态管理 (user + permission store) - 动态路由 (服务端菜单→前端路由自动生成) - 后台布局 (侧边栏+顶栏+主内容区) - 登录页 + 仪表盘首页 - 系统设置 7 个 CRUD 页面 技术方案文档 (7卷): - 技术总览/数据库设计/API规范/RBAC设计/模块详设/小程序设计/部署方案
10 KiB
10 KiB
宫中有喜 — 技术方案总览
一、项目概述
| 项 | 值 |
|---|---|
| 项目名称 | 宫中有喜月子会所综合管理系统 |
| 系统类型 | 多门店 SaaS 管理平台 + 客户端小程序 |
| 后端 | PHP 8.1+ / Laravel 10 |
| 数据库 | MySQL 8.0 |
| 前端(后台) | Vue 3 + Element Plus(SPA,自适应) |
| 前端(客户端) | 微信小程序(uni-app,可复用 Vue 组件) |
| API 风格 | RESTful JSON,统一前缀 /api/v1/ |
| 部署 | Nginx + PHP-FPM / Docker Compose |
二、框架选型理由
后端:Laravel 10
- Eloquent ORM:模型关联、软删除、Scope 过滤(门店隔离天然支持)
- 中间件体系:RBAC 权限、门店隔离、操作日志 一站式拦截
- 队列 & 事件:短信、推送、异步报表 开箱即用
- Sanctum:后台 SPA token + 小程序 API token 双模认证
- Migration & Seeder:数据库版本控制,多人协作无冲突
- 生态成熟:社区、文档、第三方包(Excel 导出、PDF、微信SDK)齐全
前端:Vue 3 + Element Plus
- 与 Laravel 前后分离配合成熟
- Element Plus 提供完整后台组件(表格、表单、日历、审批流)
- 响应式布局满足 Web + Mobile 自适应需求
客户端:uni-app
- 一套代码编译微信小程序 + H5
- Vue 3 语法,与后台前端技术栈统一,降低学习成本
- 丰富的插件市场(微信支付、地图、视频播放等)
三、系统架构图
┌─────────────────────────────────────────────────┐
│ 客户端 │
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ 微信小程序 │ │ 后台管理 SPA (Vue3) │ │
│ │ (uni-app) │ │ Element Plus │ │
│ └──────┬───────┘ └───────────┬──────────────┘ │
└─────────┼──────────────────────┼────────────────┘
│ HTTPS │ HTTPS
▼ ▼
┌─────────────────────────────────────────────────┐
│ Nginx 反向代理 / 负载均衡 │
│ 静态资源 + API 路由 + WebSocket │
└─────────────────────┬───────────────────────────┘
│
┌─────────────────────▼───────────────────────────┐
│ Laravel 10 API 层 │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ │
│ │ 认证 │ │ RBAC │ │ 门店 │ │ 操作日志 │ │
│ │中间件 │ │中间件 │ │隔离 │ │中间件 │ │
│ └───┬────┘ └───┬────┘ └───┬────┘ └────┬─────┘ │
│ └──────────┴──────────┴────────────┘ │
│ ┌──────────────────────────────────────────┐ │
│ │ Controller 层 (13模块) │ │
│ │ CRM | 房务 | 护理 | 月子餐 | 产康 │ │
│ │ 月嫂 | 进销存 | 财务 | 人事 | 协同 │ │
│ │ 报表 | 知识库 | 系统设置 │ │
│ └──────────────────┬───────────────────────┘ │
│ ┌──────────────────▼───────────────────────┐ │
│ │ Service 层 (业务逻辑) │ │
│ └──────────────────┬───────────────────────┘ │
│ ┌──────────────────▼───────────────────────┐ │
│ │ Model 层 (Eloquent ORM) │ │
│ └──────────────────┬───────────────────────┘ │
└─────────────────────┼───────────────────────────┘
│
┌─────────────────────▼───────────────────────────┐
│ 数据层 │
│ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ MySQL 8 │ │ Redis │ │ 文件存储 │ │
│ │ 主业务库 │ │ 缓存/队列│ │ (本地/OSS) │ │
│ └──────────┘ └──────────┘ └───────────────┘ │
└─────────────────────────────────────────────────┘
四、项目目录结构
saas/
├── backend/ # Laravel 后端
│ ├── app/
│ │ ├── Http/
│ │ │ ├── Controllers/
│ │ │ │ ├── Admin/ # 后台管理接口
│ │ │ │ │ ├── Crm/ # 5.1 CRM模块
│ │ │ │ │ ├── Room/ # 5.2 房务模块
│ │ │ │ │ ├── Care/ # 5.3 护理模块
│ │ │ │ │ ├── Meal/ # 5.4 月子餐模块
│ │ │ │ │ ├── Service/# 5.5 服务产康
│ │ │ │ │ ├── Nanny/ # 5.6 月嫂模块
│ │ │ │ │ ├── Stock/ # 5.7 进销存
│ │ │ │ │ ├── Finance/# 5.8 财务模块
│ │ │ │ │ ├── Hr/ # 5.9 人事薪资
│ │ │ │ │ ├── Office/ # 5.10 办公协同
│ │ │ │ │ ├── Report/ # 5.11 统计报表
│ │ │ │ │ ├── Kb/ # 5.12 知识库
│ │ │ │ │ └── System/ # 5.13 系统设置
│ │ │ │ └── Client/ # 微客宝客户端接口
│ │ │ ├── Middleware/
│ │ │ │ ├── StoreIsolation.php
│ │ │ │ ├── CheckPermission.php
│ │ │ │ └── OperationLog.php
│ │ │ └── Requests/ # 表单验证
│ │ ├── Models/ # Eloquent 模型
│ │ ├── Services/ # 业务逻辑层
│ │ ├── Enums/ # 枚举常量
│ │ ├── Events/ # 事件
│ │ ├── Listeners/ # 监听器
│ │ ├── Jobs/ # 队列任务
│ │ └── Traits/ # 公用 Trait
│ ├── database/
│ │ ├── migrations/ # 数据库迁移
│ │ └── seeders/ # 种子数据
│ ├── routes/
│ │ ├── api.php # 后台 API 路由
│ │ └── client.php # 客户端 API 路由
│ └── config/
│
├── frontend/ # Vue 3 后台前端
│ ├── src/
│ │ ├── views/ # 页面(按模块分目录)
│ │ ├── components/ # 公共组件
│ │ ├── api/ # 接口封装
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── router/ # 路由(动态菜单)
│ │ ├── utils/ # 工具函数
│ │ └── assets/ # 静态资源
│ └── vite.config.js
│
├── miniapp/ # uni-app 微信小程序
│ ├── pages/ # 页面
│ ├── components/ # 组件
│ ├── api/ # 接口
│ ├── stores/ # 状态
│ └── static/ # 静态资源
│
├── docs/ # 技术文档
│ ├── 01-technical-overview.md
│ ├── 02-database-design.md
│ ├── 03-api-specification.md
│ ├── 04-rbac-design.md
│ ├── 05-module-details.md
│ ├── 06-miniapp-design.md
│ └── 07-deployment.md
│
├── docker-compose.yml
└── README.md
五、开发阶段规划
第一阶段:基础框架(2周)
- Laravel 项目搭建 + 数据库迁移框架
- RBAC 权限系统(用户、角色、权限、菜单)
- 门店隔离中间件
- 操作日志中间件
- 审批流引擎基础
- Vue 3 后台框架 + 动态路由 + 登录认证
- 系统设置模块(门店、部门、角色、用户)
第二阶段:核心业务(4周)
- CRM 模块(线索、客户、签约、问卷)
- 房务模块(房态、预定、入离住)
- 护理模块(档案、计划、记录、异常、指标)
- 月子餐模块(排餐、送餐、评价)
第三阶段:增值 & 供应链(3周)
- 服务与产康模块
- 月嫂模块
- 进销存模块
第四阶段:财务 & 人事(2周)
- 财务模块
- 人事薪资模块
第五阶段:协同 & 报表(2周)
- 办公协同模块
- 统计报表模块
- 知识库模块
第六阶段:微客宝小程序(3周)
- uni-app 项目搭建
- 首页(商城、点餐、学堂、月嫂、活动)
- 共伴成长(护理记录、数据图表)
- 个人中心(账户、订单、服务、评价)
第七阶段:联调 & 部署(2周)
- 前后端联调
- 微信支付对接
- 性能优化
- Docker 部署
- 上线验收