Files
account/docs/ACCOUNT_MODULE.md
2026-01-18 09:52:48 +08:00

961 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 记账功能模块文档
## 概述
记账功能模块提供了完整的多用户多家庭记账功能,支持:
- 多家庭管理(每个用户可以加入多个家庭)
- 家庭成员管理owner/admin/member角色
- 收支记录管理
- 账户管理
- 数据权限控制
## 模块架构
本模块采用Laravel模块化架构所有代码位于 `modules/Account` 目录下:
```
modules/Account/
├── app/
│ ├── Controllers/
│ │ ├── Api/ # 前端API控制器
│ │ └── Admin/ # 后台管理控制器
│ ├── Models/ # 数据模型
│ ├── Providers/ # 服务提供者
│ └── Services/ # 业务逻辑服务层
├── database/
│ └── migrations/ # 数据库迁移文件
├── routes/
│ ├── api.php # 前端API路由
│ └── admin.php # 后台管理路由
└── module.json # 模块配置文件
```
### 命名空间
- 模型:`Modules\Account\Models\`
- 控制器:`Modules\Account\Controllers\Api\``Modules\Account\Controllers\Admin\`
- 服务:`Modules\Account\Services\`
- 路由:自动加载,无需手动配置
### 路由说明
模块路由已自动注册,无需在主路由文件中配置:
- 前端API路由位于 `modules/Account/routes/api.php`
- 后台管理路由位于 `modules/Account/routes/admin.php`
所有路由由模块的 RouteServiceProvider 自动加载。
## 数据库表结构
### 1. account_families家庭表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | bigint | 主键ID |
| name | varchar(50) | 家庭名称 |
| description | text | 家庭描述 |
| avatar | varchar(255) | 家庭头像 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
| deleted_at | datetime | 删除时间(软删除) |
### 2. account_family_members家庭成员关系表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | bigint | 主键ID |
| family_id | bigint | 家庭ID |
| user_id | bigint | 用户ID |
| role | varchar(20) | 角色owner-拥有者admin-管理员member-成员 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
| deleted_at | datetime | 删除时间(软删除) |
**唯一索引**: `family_id` + `user_id`(防止重复加入)
### 3. account_records记账记录表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | bigint | 主键ID |
| user_id | bigint | 用户ID |
| family_id | bigint | 家庭ID |
| member_id | bigint | 成员ID |
| account_id | bigint | 账户ID |
| type | varchar(20) | 类型income-收入expense-支出 |
| amount | decimal(10,2) | 金额 |
| category | varchar(50) | 分类 |
| date | date | 日期 |
| time | varchar(10) | 时间 |
| remark | text | 备注 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
| deleted_at | datetime | 删除时间(软删除) |
### 2. account_members家庭成员表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | bigint | 主键ID |
| user_id | bigint | 用户ID |
| family_id | bigint | 家庭ID |
| name | varchar(50) | 成员名称 |
| avatar | varchar(255) | 头像 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
| deleted_at | datetime | 删除时间(软删除) |
### 3. accounts账户表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | bigint | 主键ID |
| user_id | bigint | 用户ID |
| family_id | bigint | 家庭ID |
| name | varchar(50) | 账户名称 |
| type | varchar(20) | 账户类型cash-现金bank-银行卡alipay-支付宝wechat-微信 |
| balance | decimal(10,2) | 余额 |
| icon | varchar(255) | 图标 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
| deleted_at | datetime | 删除时间(软删除) |
## 前端API接口
### 基础URL
`/api/account`
### 记账记录接口
#### 1. 获取记账记录列表
- **路径**: `GET /api/account/records`
- **认证**: 需要
- **参数**:
- `family_id` (可选): 家庭ID不传则返回当前用户所有家庭的记录
- `member_id` (可选): 成员ID
- `account_id` (可选): 账户ID
- `type` (可选): 类型income/expense
- `start_date` (可选): 开始日期
- `end_date` (可选): 结束日期
- `page` (可选): 页码
- `limit` (可选): 每页数量默认30
- **响应**:
```json
{
"code": 1,
"message": "success",
"data": {
"list": [...],
"total": 100
}
}
```
#### 2. 获取记账记录详情
- **路径**: `GET /api/account/records/{id}`
- **认证**: 需要
- **响应**: 单条记录详情
#### 3. 创建记账记录
- **路径**: `POST /api/account/records`
- **认证**: 需要
- **参数**:
- `member_id` (必需): 成员ID
- `account_id` (必需): 账户ID
- `type` (必需): 类型income/expense
- `amount` (必需): 金额
- `category` (必需): 分类
- `date` (必需): 日期
- `time` (必需): 时间
- `remark` (可选): 备注
- **响应**: 创建的记录
#### 4. 更新记账记录
- **路径**: `PUT /api/account/records/{id}`
- **认证**: 需要
- **参数**: 同创建接口(所有字段可选)
- **响应**: 更新后的记录
#### 5. 删除记账记录
- **路径**: `DELETE /api/account/records/{id}`
- **认证**: 需要
- **响应**: 删除成功
#### 6. 获取统计数据
- **路径**: `GET /api/account/records/statistics`
- **认证**: 需要
- **参数**:
- `start_date` (可选): 开始日期
- `end_date` (可选): 结束日期
- **响应**:
```json
{
"code": 1,
"message": "success",
"data": {
"total_income": 10000.00,
"total_expense": 5000.00,
"balance": 5000.00,
"category_stats": [...],
"date_stats": [...]
}
}
```
### 家庭管理接口
#### 1. 获取用户的家庭列表
- **路径**: `GET /api/account/families`
- **认证**: 需要
- **响应**:
```json
{
"code": 1,
"message": "success",
"data": {
"list": [
{
"id": 1,
"name": "我的家",
"description": "温馨的家",
"avatar": "avatar.jpg",
"user_role": "owner",
"is_owner": true,
"can_manage": true,
"family_members": [...],
"created_at": "2025-01-01 00:00:00"
}
],
"total": 1
}
}
```
#### 2. 获取家庭详情
- **路径**: `GET /api/account/families/{id}`
- **认证**: 需要
- **权限**: 用户必须属于该家庭
- **响应**: 家庭详情(包含成员、账户、记录信息)
#### 3. 创建家庭
- **路径**: `POST /api/account/families`
- **认证**: 需要
- **参数**:
- `name` (必需): 家庭名称最多50字符
- `description` (可选): 家庭描述最多255字符
- `avatar` (可选): 家庭头像
- **响应**: 创建的家庭创建者自动成为owner
#### 4. 更新家庭
- **路径**: `PUT /api/account/families/{id}`
- **认证**: 需要
- **权限**: owner或admin
- **参数**: 同创建接口(所有字段可选)
- **响应**: 更新后的家庭
#### 5. 删除家庭
- **路径**: `DELETE /api/account/families/{id}`
- **认证**: 需要
- **权限**: 仅owner
- **限制**: 家庭下不能有关联账户
- **响应**: 删除成功
#### 6. 邀请成员加入家庭
- **路径**: `POST /api/account/families/{familyId}/invite`
- **认证**: 需要
- **权限**: owner或admin
- **参数**:
- `user_id` (必需): 被邀请用户ID
- **限制**: 用户不能已经在家庭中
- **响应**: 邀请成功
#### 7. 移除家庭成员
- **路径**: `DELETE /api/account/families/{familyId}/members/{memberId}`
- **认证**: 需要
- **权限**: owner或admin
- **限制**: 不能移除owner
- **响应**: 移除成功
#### 8. 更新成员角色
- **路径**: `PUT /api/account/families/{familyId}/members/{memberId}/role`
- **认证**: 需要
- **权限**: 仅owner
- **参数**:
- `role` (必需): 新角色owner/admin/member
- **限制**: 不能修改owner的角色
- **响应**: 更新成功
#### 9. 退出家庭
- **路径**: `POST /api/account/families/{id}/leave`
- **认证**: 需要
- **限制**: owner不能退出只能删除家庭
- **响应**: 退出成功
### 家庭成员接口
#### 1. 获取成员列表
- **路径**: `GET /api/account/members`
- **认证**: 需要
- **参数**:
- `family_id` (可选): 家庭ID不传则返回当前用户所有家庭的成员
- **响应**:
```json
{
"code": 1,
"message": "success",
"data": {
"list": [...],
"total": 10
}
}
```
#### 2. 获取成员详情
- **路径**: `GET /api/account/members/{id}`
- **认证**: 需要
- **响应**: 成员详情
#### 3. 创建成员
- **路径**: `POST /api/account/members`
- **认证**: 需要
- **参数**:
- `name` (必需): 成员名称
- `avatar` (可选): 头像
- **响应**: 创建的成员
#### 4. 更新成员
- **路径**: `PUT /api/account/members/{id}`
- **认证**: 需要
- **参数**: 同创建接口(所有字段可选)
- **响应**: 更新后的成员
#### 5. 删除成员
- **路径**: `DELETE /api/account/members/{id}`
- **认证**: 需要
- **响应**: 删除成功
### 账户管理接口
#### 1. 获取账户列表
- **路径**: `GET /api/account/accounts`
- **认证**: 需要
- **参数**:
- `family_id` (可选): 家庭ID不传则返回当前用户所有家庭的账户
- **响应**:
```json
{
"code": 1,
"message": "success",
"data": {
"list": [...],
"total": 5,
"total_balance": 10000.00
}
}
```
#### 2. 获取账户详情
- **路径**: `GET /api/account/accounts/{id}`
- **认证**: 需要
- **响应**: 账户详情
#### 3. 创建账户
- **路径**: `POST /api/account/accounts`
- **认证**: 需要
- **参数**:
- `name` (必需): 账户名称
- `type` (必需): 账户类型cash/bank/alipay/wechat
- `balance` (可选): 初始余额
- `icon` (可选): 图标
- **响应**: 创建的账户
#### 4. 更新账户
- **路径**: `PUT /api/account/accounts/{id}`
- **认证**: 需要
- **参数**: 同创建接口(所有字段可选)
- **响应**: 更新后的账户
#### 5. 删除账户
- **路径**: `DELETE /api/account/accounts/{id}`
- **认证**: 需要
- **响应**: 删除成功
#### 6. 重新计算账户余额
- **路径**: `POST /api/account/accounts/{id}/recalculate`
- **认证**: 需要
- **响应**: 更新后的账户
## 后台管理接口
### 基础URL
`/admin/account`
### 记账记录管理
#### 1. 获取记账记录列表
- **路径**: `GET /admin/account/records/index`
- **认证**: 需要
- **参数**: 同前端API额外支持
- `user_id` (可选): 用户ID
- **响应**: 记录列表(包含用户、成员、账户信息)
#### 2. 获取记账记录详情
- **路径**: `GET /admin/account/records/show`
- **认证**: 需要
- **响应**: 记录详情
#### 3. 删除记账记录
- **路径**: `DELETE /admin/account/records/delete`
- **认证**: 需要
- **参数**: `id` (必需): 记录ID
- **响应**: 删除成功(软删除)
#### 4. 恢复记账记录
- **路径**: `PUT /admin/account/records/restore`
- **认证**: 需要
- **参数**: `id` (必需): 记录ID
- **响应**: 恢复成功
#### 5. 获取统计数据
- **路径**: `GET /admin/account/records/statistics`
- **认证**: 需要
- **参数**:
- `user_id` (可选): 用户ID
- `start_date` (可选): 开始日期
- `end_date` (可选): 结束日期
- **响应**:
```json
{
"code": 1,
"message": "success",
"data": {
"total_income": 10000.00,
"total_expense": 5000.00,
"balance": 5000.00,
"user_stats": [...],
"category_stats": [...],
"total_records": 100
}
}
```
### 家庭成员管理
#### 1. 获取成员列表
- **路径**: `GET /admin/account/members/index`
- **认证**: 需要
- **参数**:
- `user_id` (可选): 用户ID
- **响应**: 成员列表(包含统计信息)
#### 2. 获取成员详情
- **路径**: `GET /admin/account/members/show`
- **认证**: 需要
- **参数**: `id` (必需): 成员ID
- **响应**: 成员详情(包含关联记录)
#### 3. 创建成员
- **路径**: `POST /admin/account/members/add`
- **认证**: 需要
- **参数**:
- `user_id` (必需): 用户ID
- `name` (必需): 成员名称
- `avatar` (可选): 头像
- **响应**: 创建的成员
#### 4. 更新成员
- **路径**: `PUT /admin/account/members/edit`
- **认证**: 需要
- **参数**:
- `id` (必需): 成员ID
- 其他字段同创建接口
- **响应**: 更新后的成员
#### 5. 删除成员
- **路径**: `DELETE /admin/account/members/delete`
- **认证**: 需要
- **参数**: `id` (必需): 成员ID
- **响应**: 删除成功(软删除)
#### 6. 恢复成员
- **路径**: `PUT /admin/account/members/restore`
- **认证**: 需要
- **参数**: `id` (必需): 成员ID
- **响应**: 恢复成功
### 账户管理
#### 1. 获取账户列表
- **路径**: `GET /admin/account/accounts/index`
- **认证**: 需要
- **参数**:
- `user_id` (可选): 用户ID
- `type` (可选): 账户类型
- **响应**: 账户列表(包含统计信息)
#### 2. 获取账户详情
- **路径**: `GET /admin/account/accounts/show`
- **认证**: 需要
- **参数**: `id` (必需): 账户ID
- **响应**: 账户详情(包含关联记录)
#### 3. 创建账户
- **路径**: `POST /admin/account/accounts/add`
- **认证**: 需要
- **参数**:
- `user_id` (必需): 用户ID
- `name` (必需): 账户名称
- `type` (必需): 账户类型
- `balance` (可选): 初始余额
- `icon` (可选): 图标
- **响应**: 创建的账户
#### 4. 更新账户
- **路径**: `PUT /admin/account/accounts/edit`
- **认证**: 需要
- **参数**:
- `id` (必需): 账户ID
- 其他字段同创建接口
- **响应**: 更新后的账户
#### 5. 删除账户
- **路径**: `DELETE /admin/account/accounts/delete`
- **认证**: 需要
- **参数**: `id` (必需): 账户ID
- **响应**: 删除成功(软删除)
#### 6. 恢复账户
- **路径**: `PUT /admin/account/accounts/restore`
- **认证**: 需要
- **参数**: `id` (必需): 账户ID
- **响应**: 恢复成功
#### 7. 重新计算账户余额
- **路径**: `POST /admin/account/accounts/recalculate`
- **认证**: 需要
- **参数**: `id` (必需): 账户ID
- **响应**: 更新后的账户
#### 8. 获取账户类型列表
- **路径**: `GET /admin/account/accounts/types`
- **认证**: 需要
- **响应**:
```json
{
"code": 1,
"message": "success",
"data": {
"cash": "现金",
"bank": "银行卡",
"alipay": "支付宝",
"wechat": "微信"
}
}
```
## 后台管理系统
### 概述
后台管理系统提供了完整的管理功能,位于 `resources/admin` 目录下,使用 Vue 3 + Element Plus + Vite 技术栈。
### 目录结构
```
resources/admin/src/
├── api/
│ ├── module/
│ │ └── account.js # 记账模块API接口
│ └── index.js # API自动导入
├── pages/
│ └── account/ # 记账模块页面
│ ├── families/ # 家庭管理
│ ├── accounts/ # 账户管理
│ ├── members/ # 成员管理
│ └── records/ # 记录管理
└── router/
├── accountRouter.js # 记账模块路由
└── index.js # 路由主文件
```
### 功能模块
#### 1. 家庭管理 (`/account/families`)
**功能特性**
- 家庭列表展示(支持搜索)
- 查看家庭详情
- 创建/编辑家庭
- 删除家庭(含确认提示)
- 显示成员数量和账户数量统计
**页面组件**
- `index.vue`: 家庭列表页
- `save.vue`: 家庭添加/编辑/查看页
**搜索条件**
- 家庭名称
**操作权限**
- 添加家庭
- 编辑家庭信息
- 查看家庭详情
- 删除家庭
#### 2. 账户管理 (`/account/accounts`)
**功能特性**
- 账户列表展示(支持搜索和筛选)
- 查看账户详情
- 创建/编辑账户
- 删除账户(含确认提示)
- 显示账户余额(正数绿色,负数红色)
- 支持多种账户类型(现金、银行卡、信用卡、支付宝、微信等)
**页面组件**
- `index.vue`: 账户列表页
- `save.vue`: 账户添加/编辑/查看页
**搜索条件**
- 账户名称
- 账户类型
**表单字段**
- 账户名称必填2-50字符
- 账户类型(必填)
- 所属家庭(必填,下拉选择)
- 初始余额(可选,数字)
- 备注可选最多200字符
#### 3. 成员管理 (`/account/members`)
**功能特性**
- 成员列表展示(支持搜索和筛选)
- 查看成员详情
- 添加/编辑成员
- 移除成员(含确认提示)
- 显示成员角色owner/admin/member
- 显示成员所属家庭
**页面组件**
- `index.vue`: 成员列表页
- `save.vue`: 成员添加/编辑/查看页
**搜索条件**
- 成员昵称
- 成员角色
**表单字段**
- 所属家庭(必填,下拉选择)
- 用户手机号(必填,用于查找用户)
- 角色(必填,下拉选择)
- 自动显示用户详细信息
**角色说明**
- owner家庭主最高权限红色标签
- admin管理员管理权限橙色标签
- member成员普通权限蓝色标签
#### 4. 记录管理 (`/account/records`)
**功能特性**
- 记录列表展示(支持搜索和筛选)
- 查看记录详情
- 创建/编辑记录
- 删除记录(含确认提示)
- 显示金额(收入绿色+号,支出红色-号)
- 显示记录类型(收入/支出标签)
- 支持日期范围筛选
**页面组件**
- `index.vue`: 记录列表页
- `save.vue`: 记录添加/编辑/查看页
**搜索条件**
- 关键词
- 记录类型(收入/支出)
- 日期范围
**表单字段**
- 记录类型(必填,单选:收入/支出)
- 所属家庭(必填,下拉选择)
- 账户(必填,下拉选择,根据家庭筛选)
- 分类(必填,下拉选择,根据记录类型筛选)
- 金额(必填,数字)
- 日期(必填,日期选择器)
- 备注可选最多200字符
**联动功能**
- 选择家庭后,自动加载该家庭的账户列表
- 切换记录类型后,自动筛选对应的分类列表
### API接口封装
所有API接口统一封装在 `resources/admin/src/api/module/account.js` 中:
```javascript
// 家庭管理
this.$API.account.family.list.get(params)
this.$API.account.family.detail.get(params)
this.$API.account.family.add.post(params)
this.$API.account.family.edit.post(params)
this.$API.account.family.delete.post(params)
// 账户管理
this.$API.account.accounts.list.get(params)
this.$API.account.accounts.detail.get(params)
this.$API.account.accounts.add.post(params)
this.$API.account.accounts.edit.post(params)
this.$API.account.accounts.delete.post(params)
// 成员管理
this.$API.account.members.list.get(params)
this.$API.account.members.detail.get(params)
this.$API.account.members.add.post(params)
this.$API.account.members.edit.post(params)
this.$API.account.members.delete.post(params)
// 记录管理
this.$API.account.records.list.get(params)
this.$API.account.records.detail.get(params)
this.$API.account.records.add.post(params)
this.$API.account.records.edit.post(params)
this.$API.account.records.delete.post(params)
```
### 路由配置
记账模块路由已配置在 `resources/admin/src/router/accountRouter.js`
```javascript
{
path: "/account",
meta: {
title: "记账管理",
icon: "el-icon-wallet"
},
children: [
{
path: "/account/families",
meta: { title: "家庭管理", icon: "el-icon-house" }
},
{
path: "/account/accounts",
meta: { title: "账户管理", icon: "el-icon-bank-card" }
},
{
path: "/account/members",
meta: { title: "成员管理", icon: "el-icon-user" }
},
{
path: "/account/records",
meta: { title: "记录管理", icon: "el-icon-notebook-2" }
}
]
}
```
路由已自动注册到主路由文件 `index.js`,无需额外配置。
### 通用功能
#### 表格组件
使用 `scTable` 组件实现统一的表格功能:
- 自动分页
- 自动加载
- 参数搜索
- 行选择
- 固定列
#### 抽屉组件
使用 `el-drawer` 组件实现表单弹窗:
- 三种模式add添加、edit编辑、show查看
- 表单验证
- 关闭时自动重置
- 成功回调刷新列表
#### 权限控制
所有删除操作都使用 `el-popconfirm` 进行二次确认:
- 防止误删除
- 支持取消操作
- 显示确认提示文字
#### 数据展示
- 金额显示保留2位小数根据正负值显示不同颜色
- 日期显示:统一格式化
- 角色标签:使用不同颜色区分
- 头像显示:支持头像上传和展示
### 使用说明
#### 1. 启动开发服务器
```bash
cd resources/admin
npm install
npm run dev
```
#### 2. 访问后台
启动后访问:`http://localhost:5173`
#### 3. 登录系统
使用管理员账号登录后台系统。
#### 4. 使用记账功能
1. 点击左侧菜单"记账管理"
2. 选择子菜单进行操作:
- 家庭管理:管理所有家庭信息
- 账户管理:管理所有账户信息
- 成员管理:管理所有家庭成员
- 记录管理:管理所有收支记录
#### 5. 数据流转
```
创建家庭 → 添加成员 → 创建账户 → 记录收支
```
**注意事项**
- 必须先创建家庭,才能添加成员和账户
- 创建账户时必须选择所属家庭
- 创建记录时必须选择家庭、账户和成员
- 所有删除操作都有确认提示
## 使用说明
### 数据库迁移
运行以下命令创建数据库表:
```bash
php artisan migrate
```
### 多家庭架构
本模块支持多用户多家庭架构:
#### 数据隔离
- 每个用户可以加入多个家庭
- 每个家庭有独立的成员、账户和记录
- 所有数据通过`family_id`字段关联到具体家庭
- 用户只能访问自己所属家庭的数据
#### 家庭角色权限
| 角色 | 创建/编辑家庭 | 邀请成员 | 移除成员 | 修改角色 | 删除家庭 | 退出家庭 |
|------|--------------|---------|---------|---------|---------|---------|
| owner | ✅ | ✅ | ✅不能移除owner | ✅不能修改owner | ✅ | ❌(只能删除) |
| admin | ✅ | ✅ | ✅不能移除owner | ❌ | ❌ | ✅ |
| member | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
#### 权限判断方法
AccountFamilyMember模型提供以下权限判断方法
```php
// 判断是否是拥有者
$member->isOwner();
// 判断是否是管理员
$member->isAdmin();
// 判断是否有管理权限owner或admin
$member->hasManagePermission();
```
### 账户余额自动更新
系统会自动维护账户余额:
- 创建收入记录时,账户余额增加
- 创建支出记录时,账户余额减少
- 更新记录时,自动调整相关账户余额
- 删除记录时,自动回滚账户余额
### 软删除
所有数据表都支持软删除:
- 删除操作不会物理删除数据,只是标记为已删除
- 后台管理可以查看和恢复已删除的数据
- 永久删除需要额外操作
### 数据验证
所有接口都有严格的数据验证:
- 必填字段检查
- 数据类型验证
- 业务逻辑验证(如删除成员前检查是否有关联记录)
## 注意事项
1. 所有接口都需要认证(除登录接口外)
2. 前端API只能操作当前登录用户及其所属家庭的数据
3. 后台API可以操作所有用户的数据
4. 每个请求都应该指定`family_id`来操作特定家庭的数据
5. 账户余额建议使用重新计算接口进行校准
6. 删除成员或账户前,系统会检查是否有关联记录
7. 家庭拥有者不能退出家庭,只能删除家庭
8. 删除家庭前,必须先删除或转移该家庭下的所有账户
9. 修改成员角色需要谨慎操作,可能影响其他成员的权限
## 多家庭使用示例
### 创建家庭并邀请成员
```javascript
// 1. 创建家庭
const family = await familyApi.createFamily({
name: '温馨小家',
description: '我们的家庭记账',
avatar: 'avatar.jpg'
})
// 2. 邀请成员需要知道对方的用户ID
await familyApi.inviteMember(family.id, 123) // 123是被邀请用户的ID
```
### 管理家庭成员
```javascript
// 1. 获取家庭详情
const family = await familyApi.getFamilyDetail(familyId)
// 2. 修改成员角色仅owner可以
await familyApi.updateMemberRole(familyId, memberId, 'admin')
// 3. 移除成员(需要管理权限)
await familyApi.removeMember(familyId, memberId)
```
### 在记账时使用家庭
```javascript
// 创建记账记录时指定家庭ID
await recordApi.createRecord({
family_id: 1, // 家庭ID
member_id: 2, // 家庭成员ID
account_id: 3, // 家庭账户ID
type: 'expense',
amount: 100,
category: '餐饮',
date: '2025-01-01',
time: '12:00'
})
```
### 切换家庭
```javascript
// 获取用户的所有家庭
const families = await familyApi.getFamilies()
// 在应用中保存当前选择的家庭ID
const currentFamilyId = families.list[0].id
// 后续操作都使用这个family_id
```