Files
root e3fa7e86f3 docs: 重组文档结构,按模块分类
新的文档结构:
docs/
├── README.md              # 文档中心导航
├── modules/               # 模块文档
│   ├── auth/             # 认证模块
│   │   ├── README.md
│   │   ├── feishu-login.md
│   │   ├── feishu-qrcode.md
│   │   └── feishu-notification.md
│   ├── approval/         # 审批流程模块
│   │   └── README.md
│   ├── business-trip/    # 出差申请模块
│   │   └── README.md
│   └── user/             # 用户管理模块
│       └── README.md
└── guides/               # 指南文档
    ├── deployment.md
    ├── environment.md
    ├── git-workflow.md
    └── ...

每个模块都有独立的 README.md 说明概述、API、关键文件等
2026-02-28 11:42:51 +08:00

184 lines
3.6 KiB
Markdown

# 用户管理模块 (User Module)
## 概述
用户管理模块负责用户信息、多租户公司管理、权限控制等功能。
---
## 核心功能
| 功能 | 说明 | 状态 |
|------|------|------|
| 用户信息 | 获取、更新用户信息 | ✅ |
| 多租户支持 | 用户可关联多个公司 | ✅ |
| 公司切换 | 切换当前公司 | ⏳ 待实现 |
| 权限控制 | 基于角色的权限管理 | ⏳ 待实现 |
| 密码修改 | 修改登录密码 | ✅ |
---
## API 接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/v1/user/info` | GET | 获取用户信息 |
| `/api/v1/user/menu` | GET | 获取用户菜单 |
| `/api/v1/user/companies` | GET | 获取用户公司列表 |
| `/api/v1/user/switch-company` | POST | 切换公司 |
| `/api/v1/user/change-password` | POST | 修改密码 |
| `/api/v1/user/list` | GET | 获取用户列表(管理员) |
---
## 前端关键文件
```
frontend/src/
├── pages/
│ ├── profile/ # 个人中心
│ └── change-password/ # 修改密码
├── stores/
│ └── user.ts # 用户状态管理
└── components/
└── CompanySelector/ # 公司选择器(待实现)
```
---
## 后端关键文件
```
backend/app/
├── Controller/
│ └── UserController.php # 用户控制器
├── Model/
│ ├── User.php # 用户模型
│ └── Company.php # 公司模型
└── Middleware/
└── AuthMiddleware.php # 认证中间件
```
---
## 多租户设计
### 用户-公司关系
```
user (用户)
├── user_company (用户公司关联)
│ ├── company_id
│ ├── is_default -- 是否默认公司
│ └── role -- 在该公司的角色
└── ...
```
### 切换公司流程
```
1. 用户选择公司
↓
2. 前端调用 /api/v1/user/switch-company
↓
3. 后端验证用户权限
↓
4. 更新 token 中的 company_id
↓
5. 返回新的 token
↓
6. 前端更新本地存储和状态
```
---
## 用户状态管理 (Zustand)
```typescript
interface UserStore {
user: User | null
token: string | null
login: (user: User, token: string) => void
logout: () => void
updateUser: (user: User) => void
}
// 使用
const { user, login, logout } = useUserStore()
```
---
## Token 结构
```json
{
"user_id": 1,
"company_id": 2,
"feishu_user_id": "ou_xxx",
"union_id": "on_xxx",
"exp": 1234567890
}
```
---
## 数据库表结构
### user (用户)
```sql
id -- 主键
username -- 用户名(登录用)
email -- 邮箱
phone -- 手机号
name -- 姓名
avatar -- 头像
password -- 密码(加密)
feishu_user_id -- 飞书用户ID
feishu_union_id -- 飞书union_id
created_at
updated_at
```
### company (公司)
```sql
id -- 主键
name -- 公司名称
logo -- 公司logo
status -- 状态
```
### user_company (用户公司关联)
```sql
id -- 主键
user_id -- 用户ID
company_id -- 公司ID
role -- 角色
is_default -- 是否默认公司
created_at
```
---
## 权限设计(待实现)
### 角色类型
| 角色 | 代码 | 说明 |
|------|------|------|
| 超级管理员 | `super_admin` | 全部权限 |
| 公司管理员 | `company_admin` | 公司内全部权限 |
| 普通用户 | `user` | 基础权限 |
---
## 相关文档
- [认证模块](../auth/README.md)
- [数据库分析](../../database-analysis.md)
---
**负责人**: 待分配
**最后更新**: 2026-02-28