Files
yuezi-saas/docs/03-api-specification.md
li 11c177a432 feat: 第一阶段基础框架搭建
后端 (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设计/模块详设/小程序设计/部署方案
2026-03-13 19:52:09 +08:00

22 KiB
Raw Permalink Blame History

宫中有喜 — API 接口规范

一、全局约定

1.1 基础信息

Base URL https://{domain}/api/v1/
客户端 Base URL https://{domain}/api/v1/client/
Content-Type application/json
认证方式 Bearer TokenSanctum
时区 Asia/Shanghai
编码 UTF-8

1.2 认证

# 后台登录
POST /api/v1/auth/login
Body: { "username": "admin", "password": "xxx" }
Response: { "code": 0, "data": { "token": "xxx", "user": {...} } }

# 小程序登录
POST /api/v1/client/auth/wechat-login
Body: { "code": "wx_code", "encrypted_data": "...", "iv": "..." }

# 退出
POST /api/v1/auth/logout
Header: Authorization: Bearer {token}

# 刷新用户信息
GET /api/v1/auth/me

1.3 统一响应格式

// 成功
{
    "code": 0,
    "message": "success",
    "data": { ... }
}

// 分页
{
    "code": 0,
    "data": {
        "list": [...],
        "total": 100,
        "page": 1,
        "page_size": 20
    }
}

// 失败
{
    "code": 40001,
    "message": "参数校验失败",
    "errors": {
        "phone": ["手机号格式不正确"]
    }
}

1.4 错误码规范

范围 含义
0 成功
4000140099 参数校验错误
4010040199 认证错误(token 无效/过期)
4030040399 权限不足
4040040499 资源不存在
4220042299 业务逻辑冲突
5000050099 服务器内部错误

1.5 分页与筛选

GET /api/v1/xxx?page=1&page_size=20&keyword=张&status=1&sort_by=created_at&sort_order=desc
参数 类型 说明
page int 页码,默认 1
page_size int 每页数量,默认 20,最大 100
keyword string 模糊搜索
sort_by string 排序字段
sort_order string asc / desc
store_id int 门店过滤(超级管理员可用)
start_date / end_date string 日期范围 YYYY-MM-DD

1.6 通用 Header

Header 说明
Authorization Bearer {token}
X-Store-Id 当前门店 ID(切换门店时)
Accept-Language zh-CN

二、后台管理 APIAdmin

2.1 系统设置模块 /system/

# 门店管理
GET    /system/stores              # 门店列表
POST   /system/stores              # 新建门店
GET    /system/stores/{id}         # 门店详情
PUT    /system/stores/{id}         # 编辑门店
DELETE /system/stores/{id}         # 删除门店

# 部门管理
GET    /system/departments         # 部门树
POST   /system/departments         # 新建部门
PUT    /system/departments/{id}    # 编辑部门
DELETE /system/departments/{id}    # 删除部门

# 职务管理
GET    /system/positions           # 职务列表
POST   /system/positions           # 新建职务
PUT    /system/positions/{id}      # 编辑
DELETE /system/positions/{id}      # 删除

# 用户管理
GET    /system/users               # 用户列表(支持部门筛选)
POST   /system/users               # 新建用户
GET    /system/users/{id}          # 用户详情
PUT    /system/users/{id}          # 编辑用户
PUT    /system/users/{id}/status   # 启用/禁用
PUT    /system/users/{id}/password # 重置密码
DELETE /system/users/{id}          # 删除用户

# 角色管理
GET    /system/roles               # 角色列表
POST   /system/roles               # 新建角色
GET    /system/roles/{id}          # 角色详情(含权限树)
PUT    /system/roles/{id}          # 编辑角色
DELETE /system/roles/{id}          # 删除角色
PUT    /system/roles/{id}/permissions  # 分配权限

# 菜单管理
GET    /system/menus               # 菜单树
POST   /system/menus               # 新建菜单
PUT    /system/menus/{id}          # 编辑菜单
DELETE /system/menus/{id}          # 删除菜单

# 权限管理
GET    /system/permissions         # 权限列表
POST   /system/permissions         # 新建权限

# 操作日志
GET    /system/operation-logs      # 操作日志列表

# 数据字典
GET    /system/dictionaries        # 字典类型列表
POST   /system/dictionaries        # 新建字典类型
GET    /system/dictionaries/{id}/items  # 字典项列表
POST   /system/dictionaries/{id}/items  # 新建字典项

# 系统配置
GET    /system/configs             # 获取系统配置
PUT    /system/configs             # 更新系统配置

2.2 CRM 模块 /crm/

# 线索管理
GET    /crm/leads                  # 线索列表
POST   /crm/leads                  # 新建线索
GET    /crm/leads/{id}             # 线索详情
PUT    /crm/leads/{id}             # 编辑线索
POST   /crm/leads/{id}/assign     # 分配线索
POST   /crm/leads/{id}/convert    # 线索转客户
POST   /crm/leads/import          # 批量导入
GET    /crm/leads/export           # 导出 Excel

# 跟进记录
GET    /crm/leads/{id}/follow-ups  # 跟进记录列表
POST   /crm/leads/{id}/follow-ups  # 新建跟进记录

# 客户管理
GET    /crm/customers              # 客户列表
POST   /crm/customers              # 新建客户
GET    /crm/customers/{id}         # 客户详情(含跟进、合同)
PUT    /crm/customers/{id}         # 编辑客户
DELETE /crm/customers/{id}         # 删除客户

# 合同/签约
GET    /crm/contracts              # 合同列表
POST   /crm/contracts              # 新建合同
GET    /crm/contracts/{id}         # 合同详情
PUT    /crm/contracts/{id}         # 编辑合同
POST   /crm/contracts/{id}/approve # 审批合同
GET    /crm/contracts/{id}/pdf     # 导出合同 PDF

# 满意度问卷
GET    /crm/surveys                # 问卷模板列表
POST   /crm/surveys                # 新建问卷
GET    /crm/surveys/{id}/results   # 问卷结果

# CRM 仪表盘
GET    /crm/dashboard              # CRM 统计数据

2.3 房务模块 /room/

# 楼层/房型
GET    /room/floors                # 楼层列表
POST   /room/floors                # 新建楼层
GET    /room/room-types            # 房型列表
POST   /room/room-types            # 新建房型

# 房间管理
GET    /room/rooms                 # 房间列表(含状态)
POST   /room/rooms                 # 新建房间
PUT    /room/rooms/{id}            # 编辑房间
GET    /room/rooms/board           # 房态看板(日历视图数据)

# 预定管理
GET    /room/reservations          # 预定列表
POST   /room/reservations          # 新建预定
PUT    /room/reservations/{id}     # 编辑预定
POST   /room/reservations/{id}/cancel  # 取消预定
POST   /room/reservations/{id}/checkin # 办理入住

# 入住管理
GET    /room/check-ins             # 在住列表
GET    /room/check-ins/{id}        # 入住详情
POST   /room/check-ins/{id}/extend # 延住
POST   /room/check-ins/{id}/change-room # 换房
POST   /room/check-ins/{id}/checkout    # 办理离店

# 房间日志
GET    /room/rooms/{id}/logs       # 房间操作日志

2.4 护理模块 /care/

# 护理档案
GET    /care/profiles              # 档案列表
POST   /care/profiles              # 新建档案
GET    /care/profiles/{id}         # 档案详情
PUT    /care/profiles/{id}         # 编辑档案

# 护理计划
GET    /care/plans                 # 计划列表
POST   /care/plans                 # 新建计划(含模板)
GET    /care/plans/{id}            # 计划详情
PUT    /care/plans/{id}            # 编辑计划
POST   /care/plans/{id}/activate  # 激活计划

# 护理记录
GET    /care/records               # 记录列表
POST   /care/records               # 新建记录
GET    /care/records/{id}          # 记录详情

# 异常登记
POST   /care/alerts                # 新建异常
GET    /care/alerts                # 异常列表
PUT    /care/alerts/{id}/resolve   # 处理异常

# 健康指标
GET    /care/health-metrics        # 指标记录列表
POST   /care/health-metrics        # 录入指标
GET    /care/health-metrics/chart  # 指标趋势图数据

# 护理模板
GET    /care/templates             # 护理模板列表
POST   /care/templates             # 新建模板

2.5 月子餐模块 /meal/

# 菜品管理
GET    /meal/dishes                # 菜品列表
POST   /meal/dishes                # 新建菜品
PUT    /meal/dishes/{id}           # 编辑菜品
DELETE /meal/dishes/{id}           # 删除菜品

# 餐单模板
GET    /meal/templates             # 餐单模板列表
POST   /meal/templates             # 新建餐单模板
GET    /meal/templates/{id}        # 模板详情

# 每日排餐
GET    /meal/daily-plans           # 每日排餐列表
POST   /meal/daily-plans           # 新建/复制排餐
PUT    /meal/daily-plans/{id}      # 编辑排餐
POST   /meal/daily-plans/batch-generate # 批量生成排餐

# 送餐记录
GET    /meal/deliveries            # 送餐记录列表
POST   /meal/deliveries/{id}/confirm   # 确认送达
POST   /meal/deliveries/{id}/feedback  # 餐品反馈

# 餐品评价
GET    /meal/reviews               # 评价列表
GET    /meal/reviews/stats         # 评价统计

2.6 服务与产康模块 /service/

# 服务项目
GET    /service/items              # 服务项目列表
POST   /service/items              # 新建项目
PUT    /service/items/{id}         # 编辑项目

# 服务套餐
GET    /service/packages           # 套餐列表
POST   /service/packages           # 新建套餐
PUT    /service/packages/{id}      # 编辑套餐

# 服务预约/订单
GET    /service/orders             # 订单列表
POST   /service/orders             # 新建预约
PUT    /service/orders/{id}        # 编辑
POST   /service/orders/{id}/confirm  # 确认
POST   /service/orders/{id}/complete # 完成
POST   /service/orders/{id}/cancel   # 取消

# 技师排班
GET    /service/therapist-schedules        # 排班列表
POST   /service/therapist-schedules        # 新建排班
GET    /service/therapist-schedules/board   # 排班看板

2.7 月嫂模块 /nanny/

# 月嫂档案
GET    /nanny/nannies              # 月嫂列表
POST   /nanny/nannies              # 新建月嫂
GET    /nanny/nannies/{id}         # 月嫂详情
PUT    /nanny/nannies/{id}         # 编辑月嫂
PUT    /nanny/nannies/{id}/status  # 更新状态

# 月嫂订单
GET    /nanny/orders               # 订单列表
POST   /nanny/orders               # 新建订单
GET    /nanny/orders/{id}          # 订单详情
POST   /nanny/orders/{id}/assign   # 指派月嫂
POST   /nanny/orders/{id}/complete # 完成

# 月嫂评价
GET    /nanny/reviews              # 评价列表
POST   /nanny/reviews              # 新建评价
GET    /nanny/nannies/{id}/reviews # 某月嫂评价

# 月嫂排班
GET    /nanny/schedules            # 排班列表
POST   /nanny/schedules            # 新建排班

2.8 进销存模块 /stock/

# 仓库管理
GET    /stock/warehouses           # 仓库列表
POST   /stock/warehouses           # 新建仓库

# 物资管理
GET    /stock/materials            # 物资列表
POST   /stock/materials            # 新建物资
PUT    /stock/materials/{id}       # 编辑物资
GET    /stock/materials/categories # 物资分类

# 库存查询
GET    /stock/inventories          # 库存列表
GET    /stock/inventories/alerts   # 库存预警

# 采购订单
GET    /stock/purchase-orders              # 采购单列表
POST   /stock/purchase-orders              # 新建采购单
GET    /stock/purchase-orders/{id}         # 详情
POST   /stock/purchase-orders/{id}/approve # 审批
POST   /stock/purchase-orders/{id}/receive # 入库

# 出入库
POST   /stock/in-records           # 入库记录
POST   /stock/out-records          # 出库记录
GET    /stock/records              # 出入库流水

# 供应商
GET    /stock/suppliers            # 供应商列表
POST   /stock/suppliers            # 新建供应商
PUT    /stock/suppliers/{id}       # 编辑

2.9 财务模块 /finance/

# 资金账户
GET    /finance/accounts           # 账户列表
POST   /finance/accounts           # 新建账户
PUT    /finance/accounts/{id}      # 编辑

# 收支记录
GET    /finance/records            # 收支流水
POST   /finance/records            # 新建收支
GET    /finance/records/{id}       # 详情
POST   /finance/records/{id}/approve # 审核

# 客户账户
GET    /finance/customer-accounts          # 客户账户列表
GET    /finance/customer-accounts/{id}     # 客户账户详情
POST   /finance/customer-accounts/{id}/recharge # 充值
POST   /finance/customer-accounts/{id}/consume  # 消费
GET    /finance/customer-accounts/{id}/bills    # 账单流水

# 储值卡/优惠券
GET    /finance/voucher-cards      # 储值卡列表
POST   /finance/voucher-cards      # 发行储值卡

# 发票管理
GET    /finance/invoices           # 发票列表
POST   /finance/invoices           # 开票申请
POST   /finance/invoices/{id}/confirm # 确认开票

# 财务报表
GET    /finance/reports/daily      # 日报
GET    /finance/reports/monthly    # 月报
GET    /finance/reports/category   # 分类汇总

2.10 人事薪资模块 /hr/

# 员工档案
GET    /hr/employees               # 员工列表
POST   /hr/employees               # 新建员工
GET    /hr/employees/{id}          # 员工详情
PUT    /hr/employees/{id}          # 编辑

# 排班管理
GET    /hr/schedules               # 排班列表
POST   /hr/schedules               # 新建排班
POST   /hr/schedules/batch         # 批量排班
GET    /hr/schedules/board         # 排班日历

# 考勤
GET    /hr/attendances             # 考勤列表
POST   /hr/attendances/clock       # 打卡
GET    /hr/attendances/monthly     # 月度汇总

# 薪资
GET    /hr/salaries                # 工资单列表
POST   /hr/salaries/calculate      # 计算工资
POST   /hr/salaries/{id}/confirm   # 确认工资单
GET    /hr/salaries/export         # 导出工资单

# 请假/加班
GET    /hr/leaves                  # 请假列表
POST   /hr/leaves                  # 申请请假
POST   /hr/leaves/{id}/approve     # 审批

2.11 办公协同模块 /office/

# 公告
GET    /office/announcements       # 公告列表
POST   /office/announcements       # 发布公告
GET    /office/announcements/{id}  # 公告详情

# 审批流
GET    /office/approvals           # 审批列表(我的待办/已办)
POST   /office/approvals           # 发起审批
GET    /office/approvals/{id}      # 审批详情
POST   /office/approvals/{id}/approve  # 通过
POST   /office/approvals/{id}/reject   # 驳回

# 审批模板
GET    /office/approval-templates      # 模板列表
POST   /office/approval-templates      # 新建模板

# 交接班
GET    /office/handovers           # 交接班列表
POST   /office/handovers           # 新建交接
POST   /office/handovers/{id}/confirm # 确认交接

# 消息/通知
GET    /office/notifications       # 通知列表
PUT    /office/notifications/{id}/read # 标记已读
PUT    /office/notifications/read-all  # 全部已读
GET    /office/notifications/unread-count # 未读数量

2.12 统计报表模块 /report/

# 经营概览
GET    /report/overview            # 经营总览仪表盘

# 营收报表
GET    /report/revenue             # 营收统计
GET    /report/revenue/trend       # 营收趋势

# 入住报表
GET    /report/occupancy           # 入住率统计
GET    /report/occupancy/trend     # 入住率趋势

# CRM 报表
GET    /report/crm/conversion      # 转化率统计
GET    /report/crm/source          # 来源分析
GET    /report/crm/staff           # 员工业绩

# 护理报表
GET    /report/care/workload       # 护理工作量
GET    /report/care/quality        # 护理质量

# 满意度报表
GET    /report/satisfaction        # 满意度统计

# 自定义报表
GET    /report/custom              # 自定义报表列表
POST   /report/custom              # 创建自定义报表
GET    /report/custom/{id}/data    # 获取报表数据
GET    /report/custom/{id}/export  # 导出报表

2.13 知识库模块 /kb/

# 分类
GET    /kb/categories              # 分类树
POST   /kb/categories              # 新建分类
PUT    /kb/categories/{id}         # 编辑分类

# 文章
GET    /kb/articles                # 文章列表
POST   /kb/articles                # 新建文章
GET    /kb/articles/{id}           # 文章详情
PUT    /kb/articles/{id}           # 编辑文章
DELETE /kb/articles/{id}           # 删除文章
POST   /kb/articles/{id}/publish   # 发布
GET    /kb/articles/search         # 全文搜索

三、客户端 API(Client / 微客宝小程序)

3.1 认证

POST   /client/auth/wechat-login   # 微信登录
POST   /client/auth/bindPhone      # 绑定手机号
GET    /client/auth/profile        # 获取个人信息
PUT    /client/auth/profile        # 更新个人信息

3.2 首页

GET    /client/home/banners        # 轮播图
GET    /client/home/notices        # 公告
GET    /client/home/services       # 服务推荐
GET    /client/home/activities     # 活动列表

3.3 商城/服务

GET    /client/services            # 服务列表
GET    /client/services/{id}       # 服务详情
GET    /client/packages            # 套餐列表
GET    /client/packages/{id}       # 套餐详情
POST   /client/orders              # 下单
GET    /client/orders              # 我的订单
GET    /client/orders/{id}         # 订单详情
POST   /client/orders/{id}/pay     # 支付
POST   /client/orders/{id}/cancel  # 取消

3.4 月子餐

GET    /client/meals/today         # 今日餐单
GET    /client/meals/week          # 本周餐单
POST   /client/meals/feedback      # 餐品反馈
GET    /client/meals/dishes        # 可选菜品
POST   /client/meals/custom-order  # 自选点餐

3.5 共伴成长

GET    /client/baby/care-records   # 宝宝护理记录
GET    /client/baby/health-chart   # 健康数据图表
GET    /client/baby/milestones     # 成长里程碑
GET    /client/mom/care-records    # 妈妈护理记录
GET    /client/mom/health-chart    # 妈妈健康图表

3.6 月嫂

GET    /client/nannies             # 月嫂列表
GET    /client/nannies/{id}        # 月嫂详情
POST   /client/nanny-orders        # 预约月嫂
GET    /client/nanny-orders        # 我的月嫂订单
POST   /client/nanny-reviews       # 评价月嫂

3.7 学堂

GET    /client/articles            # 知识文章列表
GET    /client/articles/{id}       # 文章详情
GET    /client/articles/categories # 分类
POST   /client/articles/{id}/like  # 点赞
POST   /client/articles/{id}/collect # 收藏

3.8 社区

GET    /client/community/posts     # 帖子列表
POST   /client/community/posts     # 发帖
GET    /client/community/posts/{id}        # 帖子详情
POST   /client/community/posts/{id}/comment # 评论
POST   /client/community/posts/{id}/like    # 点赞

3.9 个人中心

GET    /client/my/account          # 账户余额/储值卡
GET    /client/my/coupons          # 优惠券列表
GET    /client/my/orders           # 全部订单
GET    /client/my/reviews          # 我的评价
GET    /client/my/collections      # 我的收藏
GET    /client/my/messages         # 消息通知

3.10 支付

POST   /client/pay/wechat          # 微信支付下单
POST   /client/pay/callback        # 支付回调(后端内部)
GET    /client/pay/status/{order_no} # 查询支付状态

四、文件上传

# 通用文件上传
POST   /api/v1/upload/image        # 上传图片(返回 URL
POST   /api/v1/upload/file         # 上传文件(Excel/PDF
POST   /api/v1/upload/avatar       # 上传头像(自动裁剪)

请求格式:multipart/form-data

参数 类型 说明
file File 文件
type string 业务类型(avatar/contract/care_record 等)

五、WebSocket 事件(可选)

# 连接
ws://{domain}/ws?token={bearer_token}

# 事件
notification.new    — 新通知推送
approval.pending    — 待审批提醒
care.alert          — 护理异常告警
room.status_change  — 房态变更通知

六、接口安全

6.1 限流策略

接口类型 限制
登录接口 5 次/分钟/IP
普通接口 60 次/分钟/用户
上传接口 10 次/分钟/用户
导出接口 5 次/分钟/用户
支付回调 不限(白名单IP

6.2 数据权限

  • 所有业务接口自动注入 store_id 过滤
  • 超级管理员可通过 X-Store-Id Header 切换门店
  • 敏感操作(删除、审批)记录操作日志

6.3 输入校验

  • 所有写入接口使用 Laravel FormRequest 校验
  • XSS 过滤:HTMLPurifier 处理富文本
  • SQL 注入:Eloquent 参数绑定(禁止 raw SQL 拼接)
  • 文件上传:类型白名单 + 大小限制(图片 5MB,文件 20MB)

七、典型接口示例

7.1 新建线索

POST /api/v1/crm/leads
Authorization: Bearer xxx
Content-Type: application/json

{
    "name": "张女士",
    "phone": "13800138000",
    "source": "wechat",
    "expected_date": "2024-06-15",
    "expected_room_type": 2,
    "expected_days": 28,
    "remark": "朋友推荐,预算10万左右"
}

Response:

{
    "code": 0,
    "message": "success",
    "data": {
        "id": 1001,
        "name": "张女士",
        "phone": "13800138000",
        "source": "wechat",
        "status": "new",
        "assigned_to": null,
        "created_at": "2024-03-15 10:30:00"
    }
}

7.2 房态看板

GET /api/v1/room/rooms/board?date=2024-03-15&range=week
Authorization: Bearer xxx

Response:

{
    "code": 0,
    "data": {
        "floors": [
            {
                "id": 1,
                "name": "3楼",
                "rooms": [
                    {
                        "id": 101,
                        "number": "301",
                        "type": "豪华套房",
                        "status": "occupied",
                        "customer": "李女士",
                        "check_in": "2024-03-10",
                        "check_out": "2024-04-07"
                    }
                ]
            }
        ],
        "summary": {
            "total": 30,
            "occupied": 22,
            "available": 5,
            "maintenance": 2,
            "reserved": 1,
            "occupancy_rate": "73.3%"
        }
    }
}