Files
rlz/docs/角色权限矩阵.md
renjianbo 805ed0298b feat: 新增多角色系统(派单/分润/推广/区域)
- 后端:RlzDispatch/Profit/Promotion/Region 控制器、服务、Mapper、领域模型
- 权限:MethodSecurityConfig + PermissionInterceptor
- 管理后台:派单/分润/推广/区域 页面与 API
- Android 陪护端:派单/运营/退款 Fragment 及布局
- 小程序:推广员子包、派单/运营/退款/检索子包、自定义 tabBar
- 文档:多角色系统方案、角色权限矩阵、用户操作手册等

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-10-12 00:09:45 +08:00

179 lines
6.7 KiB
Markdown

# 瑞来健康 — 角色权限矩阵
> 更新日期: 2026-06-08
---
## 一、角色定义
| role_id | role_key | 角色名称 | user_type | 适用端 |
|---------|----------|----------|-----------|--------|
| 1 | admin | 超级管理员 | 0C | 管理后台 |
| 2 | common | 普通用户 | 00 | 小程序 |
| 103 | operations | 运营经理 | 03 | 管理后台/小程序 |
| 104 | service | 客服专员 | 04 | 管理后台/小程序 |
| 105 | dispatcher | 调度员 | 05 | 管理后台/小程序 |
| 106 | promoter | 推广员 | 06 | 管理后台/小程序 |
| - | caregiver | 陪诊师 | 01 | 小程序/App |
| - | patient | 患者/客户 | 00 | 小程序 |
---
## 二、用户类型 (user_type) 枚举
| user_type | 名称 | 说明 |
|-----------|------|------|
| 00 | 患者/客户 | 需要陪诊服务的用户 |
| 01 | 陪诊师 | 提供陪诊服务的从业人员 |
| 03 | 运营经理 | 管理指定区域业务 |
| 04 | 客服专员 | 处理退款/纠纷工单 |
| 05 | 调度员 | 订单派单与陪诊师调度 |
| 06 | 推广员 | 推广获客赚佣金 |
| 0B | 机构 | 医疗机构/合作伙伴 |
| 0C | 管理员 | 平台超级管理员 |
---
## 三、管理后台菜单权限
| 菜单 | 超级管理员 | 运营经理 | 客服 | 调度员 | 推广员 |
|------|:---------:|:------:|:---:|:----:|:-----:|
| 系统管理-用户管理 | O | O | - | - | - |
| 系统管理-角色管理 | O | - | - | - | - |
| 系统管理-菜单管理 | O | - | - | - | - |
| 系统管理-部门管理 | O | - | - | - | - |
| 系统管理-岗位管理 | O | - | - | - | - |
| 系统管理-字典管理 | O | O | - | - | - |
| 系统管理-通知公告 | O | O | O | O | O |
| 系统管理-医院管理 | O | O | - | - | - |
| 系统管理-服务类型 | O | O | - | - | - |
| 推广管理 | O | O | - | - | O |
| 区域管理 | O | O | - | - | - |
| 调度管理 | O | O | - | O | - |
| 财务管理-退款审核 | O | O | O | - | - |
| 财务管理-结算管理 | O | O | - | - | - |
| 财务管理-平台配置 | O | O | - | - | - |
| 财务管理-分润记录 | O | O | O | O | O |
| 财务管理-收益明细 | O | O | - | - | - |
| 运营看板 | O | O | - | - | - |
O = 有权限, - = 无权限
---
## 四、API 权限 (@PreAuthorize)
### 4.1 推广服务 `/system/promotion/**`
| 端点 | 方法 | 权限 | admin | ops | service | dispatcher | promoter |
|------|------|------|:----:|:---:|:-------:|:---------:|:--------:|
| `/list` | GET | - | O | O | - | - | - |
| `/relations` | GET | - | O | O | - | - | - |
| `/{id}` | GET | - | O | O | - | - | - |
| `/data/{userId}` | GET | - | O | O | - | - | - |
| `/byInvited/{id}` | GET | - | O | O | - | - | - |
| `/byPromoter/{id}` | GET | - | O | O | - | - | - |
| POST `/` | POST | system:promotion:add | O | - | - | - | - |
| PUT `/` | PUT | system:promotion:edit | O | - | - | - | - |
| DELETE `/{ids}` | DELETE | system:promotion:remove | O | - | - | - | - |
| `/myStats` | GET | - | O | O | O | O | O |
| `/team` | GET | - | O | O | O | O | O |
| `/myCommission` | GET | - | O | O | O | O | O |
| `/generateCode` | POST | - | O | O | O | O | O |
### 4.2 分润服务 `/system/profit/**`
| 端点 | 方法 | 权限 | admin | ops | service | dispatcher | promoter |
|------|------|------|:----:|:---:|:-------:|:---------:|:--------:|
| `/list` | GET | - | O | O | - | - | - |
| `/stats` | GET | - | O | O | O | - | - |
| `/{id}` | GET | - | O | O | - | - | - |
| `/byOrder/{id}` | GET | - | O | O | O | O | O |
| `/byUser/{id}` | GET | - | O | O | O | O | O |
| `/balance/{id}` | GET | - | O | O | O | O | O |
| `/myRecords` | GET | - | O | O | O | O | O |
| `/myBalance` | GET | - | O | O | O | O | O |
| POST `/calculate/{id}` | POST | system:profit:calculate | O | - | - | - | - |
| POST `/reverse/{id}` | POST | system:profit:reverse | O | - | - | - | - |
### 4.3 调度服务 `/system/dispatch/**`
| 端点 | 方法 | 权限 | admin | ops | dispatcher |
|------|------|------|:----:|:---:|:---------:|
| `/pending` | GET | system:dispatch:list | O | O | O |
| `/caregivers` | GET | system:dispatch:list | O | O | O |
| `/caregivers/{hospitalId}` | GET | system:dispatch:list | O | O | O |
| `/history` | GET | system:dispatch:list | O | O | O |
| `/assign/{orderId}/{cgId}` | POST | system:dispatch:assign | O | O | O |
### 4.4 区域服务 `/system/region/**`
| 端点 | 方法 | 权限 | admin | ops |
|------|------|------|:----:|:---:|
| `/list` | GET | - | O | O |
| `/stats` | GET | - | O | O |
| `/{id}` | GET | - | O | O |
| `/children/{id}` | GET | - | O | O |
| POST `/` | POST | system:region:add | O | - |
| PUT `/` | PUT | system:region:edit | O | - |
| DELETE `/{ids}` | DELETE | system:region:remove | O | - |
### 4.5 退款流程
| 端点 | 方法 | 权限 | admin | ops | service |
|------|------|------|:----:|:---:|:-------:|
| `/system/order/applyRefund/{id}` | POST | - | O | O | O |
| `/system/order/refundOrder/{id}` | GET | - | O | O | O |
| `/system/view/refundApprove/{id}` | PUT | system:order:edit | O | O | O |
---
## 五、数据权限隔离
| 角色 | 数据范围 |
|------|----------|
| 超级管理员 | 全部数据 |
| 运营经理 | 本区域(region_id)及其下级区域数据 |
| 客服专员 | 全部退款工单(无区域限制) |
| 调度员 | 本区域的待派单订单 + 自己的派单记录 |
| 推广员 | 自己的推广关系 + 团队数据 + 佣金记录 |
| 陪诊师 | 自己的订单 + 服务收入 |
| 患者 | 自己的订单 + 支付记录 |
---
## 六、小程序/App 角色功能权限
| 功能 | 患者 | 陪诊师 | 推广员 | 调度员 | 客服 | 运营 |
|------|:---:|:----:|:-----:|:-----:|:---:|:---:|
| 浏览服务/下单 | O | - | - | - | - | - |
| 查看我的订单 | O | - | - | - | - | - |
| 支付/退款申请 | O | - | - | - | - | - |
| 接单/拒单 | - | O | - | - | - | - |
| 开始/完成服务 | - | O | - | - | - | - |
| 查看收入/余额 | - | O | O | - | - | - |
| 提现 | - | O | O | - | - | - |
| 推广看板 | - | - | O | - | - | - |
| 我的团队 | - | - | O | - | - | - |
| 佣金明细 | - | - | O | - | - | - |
| 生成邀请码 | - | - | O | - | - | - |
| 调度面板 | - | - | - | O | - | - |
| 指派/改派 | - | - | - | O | - | - |
| 退款审核 | - | - | - | - | O | - |
| 运营看板 | - | - | - | - | - | O |
| 区域数据 | - | - | - | - | - | O |
| 角色切换 | O | O | O | O | O | O |
---
## 七、权限配置检查清单
部署后验证以下内容:
- [ ] 各角色能登录对应端(管理后台/小程序/App)
- [ ] 管理后台菜单根据角色正确显示/隐藏
- [ ] API `@PreAuthorize` 权限校验生效(无权限返回 403)
- [ ] 数据权限隔离: 运营经理只看本区域, 陪诊师只看自己订单
- [ ] 小程序 TabBar 根据 user_type 正确渲染
- [ ] 角色切换后功能权限同步更新