更新API说明文档

This commit is contained in:
Kyaru
2026-06-25 21:53:24 +08:00
parent b4cc90d2d3
commit 764919f69e

156
API.md
View File

@@ -197,6 +197,8 @@ Authorization: Bearer <token>
} }
``` ```
> **注意**:登录成功返回 `code: 200`,其他接口统一返回 `code: 0`。前端通过 `res.code === 0 || res.code === 200` 兼容判断。
**错误响应:** **错误响应:**
| code | message | | code | message |
@@ -209,6 +211,18 @@ Authorization: Bearer <token>
需要 Token。返回当前登录用户的完整信息含角色名、员工名 需要 Token。返回当前登录用户的完整信息含角色名、员工名
#### GET /api/user/list — 简易用户列表
需要 Token。返回所有启用用户的基本信息id、用户名、真实姓名用于前端下拉选择负责人。
**响应数据字段:**
| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | number | 用户 ID |
| `username` | string | 用户名 |
| `real_name` | string | 真实姓名(来自员工表,可能为 null |
#### POST /api/user/logout — 登出 #### POST /api/user/logout — 登出
需要 Token。服务端无状态仅返回成功应答客户端自行清除 Token。 需要 Token。服务端无状态仅返回成功应答客户端自行清除 Token。
@@ -244,6 +258,8 @@ Authorization: Bearer <token>
| 参数 | 说明 | 示例 | | 参数 | 说明 | 示例 |
|------|------|------| |------|------|------|
| `username` | 按用户名模糊搜索 | `?username=admin` | | `username` | 按用户名模糊搜索 | `?username=admin` |
| `real_name` | 按真实姓名模糊搜索 | `?real_name=张` |
| `id` | 按用户 ID 精确搜索 | `?id=1` |
| `role_id` | 按角色 ID 过滤 | `?role_id=2` | | `role_id` | 按角色 ID 过滤 | `?role_id=2` |
| `is_active` | 按状态过滤0-禁用, 1-启用) | `?is_active=1` | | `is_active` | 按状态过滤0-禁用, 1-启用) | `?is_active=1` |
| `page` | 页码 | `?page=1` | | `page` | 页码 | `?page=1` |
@@ -277,9 +293,9 @@ Authorization: Bearer <token>
|------|------|------| |------|------|------|
| `username` | ✅ | 用户名3-50 字符) | | `username` | ✅ | 用户名3-50 字符) |
| `password` | ✅ | 密码(至少 6 位) | | `password` | ✅ | 密码(至少 6 位) |
| `role_id` | ❌ | 角色 ID | | `role_id` | ❌ | 角色 ID(需为已存在的角色) |
| `employee_id` | ❌ | 关联员工 ID | | `employee_id` | ❌ | 关联员工 ID(需为已存在的员工,会自动同步部门信息) |
| `department` | ❌ | 所属部门(若填了 employee_id 会自动同步) | | `department` | ❌ | 所属部门(若填了 employee_id 且未传 department会自动从员工表同步) |
| `is_active` | ❌ | 状态,默认 1 | | `is_active` | ❌ | 状态,默认 1 |
#### PUT /api/users/:id — 更新用户 #### PUT /api/users/:id — 更新用户
@@ -292,7 +308,9 @@ Authorization: Bearer <token>
#### DELETE /api/users/:id — 删除用户 #### DELETE /api/users/:id — 删除用户
**限制:** 不能删除自己。 **限制:**
- 不能删除自己
- 不能删除最后一个管理员账号(当系统中仅剩 1 个 admin 角色用户时,拒绝删除)
--- ---
@@ -306,12 +324,13 @@ Authorization: Bearer <token>
| 参数 | 说明 | | 参数 | 说明 |
|------|------| |------|------|
| `id` | 按 ID 精确搜索 |
| `name` | 按加盟商名称模糊搜索 | | `name` | 按加盟商名称模糊搜索 |
| `phone` | 按电话模糊搜索 | | `phone` | 按电话模糊搜索 |
| `province` | 按省份精确匹配 | | `province` | 按省份精确匹配 |
| `city` | 按城市精确匹配 | | `city` | 按城市精确匹配 |
**响应数据字段:** **响应数据字段(含 JOIN 字段)**
| 字段 | 类型 | 说明 | | 字段 | 类型 | 说明 |
|------|------|------| |------|------|------|
@@ -325,6 +344,7 @@ Authorization: Bearer <token>
| `email` | string | 电子邮箱 | | `email` | string | 电子邮箱 |
| `remark` | string | 备注信息 | | `remark` | string | 备注信息 |
| `responsible_user_id` | number | 负责人用户 ID | | `responsible_user_id` | number | 负责人用户 ID |
| `responsible_user_name` | string | 负责人姓名JOIN 自 users → employees |
| `created_at` | datetime | 创建时间 | | `created_at` | datetime | 创建时间 |
| `updated_at` | datetime | 更新时间 | | `updated_at` | datetime | 更新时间 |
@@ -342,7 +362,7 @@ Authorization: Bearer <token>
| `address` | ❌ | 详细地址 | | `address` | ❌ | 详细地址 |
| `email` | ❌ | 电子邮箱 | | `email` | ❌ | 电子邮箱 |
| `remark` | ❌ | 备注 | | `remark` | ❌ | 备注 |
| `responsible_user_id` | ❌ | 负责人(默认为当前登录用户) | | `responsible_user_id` | ❌ | 负责人(默认为当前登录用户,仅管理员可在前端修改 |
#### PUT /api/customers/:id — 更新加盟商 #### PUT /api/customers/:id — 更新加盟商
@@ -356,12 +376,32 @@ Authorization: Bearer <token>
> 需要 `employee:read` / `employee:create` / `employee:update` / `employee:delete` 权限。 > 需要 `employee:read` / `employee:create` / `employee:update` / `employee:delete` 权限。
#### GET /api/employees/simple — 简易员工列表
需要 Token。无数据范围限制用于前端下拉选择如售后分配业务员。支持按部门过滤。
**查询参数:**
| 参数 | 说明 |
|------|------|
| `department` | 按部门精确过滤(如 `?department=运营部` |
**响应数据字段:**
| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | number | 员工 ID |
| `name` | string | 姓名 |
| `department` | string | 所属部门 |
| `position` | string | 职务/岗位 |
#### GET /api/employees — 员工列表 #### GET /api/employees — 员工列表
**查询参数:** **查询参数:**
| 参数 | 说明 | | 参数 | 说明 |
|------|------| |------|------|
| `id` | 按 ID 精确搜索 |
| `name` | 按姓名模糊搜索 | | `name` | 按姓名模糊搜索 |
| `department` | 按部门模糊搜索 | | `department` | 按部门模糊搜索 |
| `status` | 按在职状态过滤0-离职, 1-在职) | | `status` | 按在职状态过滤0-离职, 1-在职) |
@@ -409,8 +449,14 @@ Authorization: Bearer <token>
所有字段均可选,只传需要修改的字段。 所有字段均可选,只传需要修改的字段。
**特殊行为:** 更新 `department` 字段时,会自动同步到关联的 users 表的 `department` 字段。
#### DELETE /api/employees/:id — 删除员工 #### DELETE /api/employees/:id — 删除员工
**特殊行为:**
- 删除员工时会同步删除关联的用户账号users 表中 `employee_id` 匹配的记录)
- 不能删除当前登录用户自己关联的员工账号
--- ---
### 5. 合同管理 ### 5. 合同管理
@@ -423,10 +469,14 @@ Authorization: Bearer <token>
| 参数 | 说明 | | 参数 | 说明 |
|------|------| |------|------|
| `status` | 按合同状态过滤(草稿/生效/完成/作废) | | `id` | 按 ID 精确搜索 |
| `status` | 按合同状态过滤(草稿/生效中/已完成/作废) |
| `customer_name` | 按客户名称模糊搜索 | | `customer_name` | 按客户名称模糊搜索 |
| `contract_no` | 按合同编号模糊搜索 | | `contract_no` | 按合同编号模糊搜索 |
| `contract_name` | 按合同名称模糊搜索 |
| `employee_name` | 按业务员姓名模糊搜索 | | `employee_name` | 按业务员姓名模糊搜索 |
| `effective_date_start` | 按生效日期起始过滤格式YYYY-MM-DD |
| `effective_date_end` | 按生效日期截止过滤格式YYYY-MM-DD |
**响应数据字段(含 JOIN 字段):** **响应数据字段(含 JOIN 字段):**
@@ -435,6 +485,8 @@ Authorization: Bearer <token>
| `id` | number | 合同 ID | | `id` | number | 合同 ID |
| `customer_id` | number | 客户 ID | | `customer_id` | number | 客户 ID |
| `customer_name` | string | 客户名称JOIN 自 customers | | `customer_name` | string | 客户名称JOIN 自 customers |
| `supplier_id` | number | 供应商 ID采购合同必填 |
| `supplier_name` | string | 供应商名称JOIN 自 suppliers |
| `contract_name` | string | 合同名称 | | `contract_name` | string | 合同名称 |
| `contract_no` | string | 合同编号 | | `contract_no` | string | 合同编号 |
| `contract_content` | string | 合同内容/条款 | | `contract_content` | string | 合同内容/条款 |
@@ -443,10 +495,11 @@ Authorization: Bearer <token>
| `expiry_date` | date | 到期日期 | | `expiry_date` | date | 到期日期 |
| `employee_id` | number | 业务员 ID | | `employee_id` | number | 业务员 ID |
| `employee_name` | string | 业务员姓名JOIN 自 employees | | `employee_name` | string | 业务员姓名JOIN 自 employees |
| `status` | string | 状态:草稿/生效/完成/作废 | | `status` | string | 状态:草稿/生效中/已完成/作废 |
| `remark` | string | 备注 | | `remark` | string | 备注 |
| `type` | string | 合同类型:`franchise`(加盟)/ `supply`(采购) | | `type` | string | 合同类型:`franchise`(加盟)/ `supply`(采购) |
| `responsible_user_id` | number | 负责人用户 ID | | `responsible_user_id` | number | 负责人用户 ID |
| `responsible_user_name` | string | 负责人姓名JOIN 自 users → employees |
| `created_at` | datetime | 创建时间 | | `created_at` | datetime | 创建时间 |
| `updated_at` | datetime | 更新时间 | | `updated_at` | datetime | 更新时间 |
@@ -456,7 +509,8 @@ Authorization: Bearer <token>
| 字段 | 必填 | 说明 | | 字段 | 必填 | 说明 |
|------|------|------| |------|------|------|
| `customer_id` | | 关联客户 ID | | `customer_id` | 条件必填 | 关联客户 ID(加盟合同必填) |
| `supplier_id` | 条件必填 | 关联供应商 ID采购合同必填 |
| `contract_name` | ✅ | 合同名称 | | `contract_name` | ✅ | 合同名称 |
| `contract_no` | ❌ | 合同编号 | | `contract_no` | ❌ | 合同编号 |
| `contract_content` | ❌ | 合同内容 | | `contract_content` | ❌ | 合同内容 |
@@ -464,18 +518,26 @@ Authorization: Bearer <token>
| `effective_date` | ❌ | 生效日期 | | `effective_date` | ❌ | 生效日期 |
| `expiry_date` | ❌ | 到期日期 | | `expiry_date` | ❌ | 到期日期 |
| `employee_id` | ❌ | 业务员 ID | | `employee_id` | ❌ | 业务员 ID |
| `status` | ❌ | 状态,默认 `生效` | | `status` | ❌ | 状态,默认 `生效` |
| `remark` | ❌ | 备注 | | `remark` | ❌ | 备注 |
| `type` | ❌ | 合同类型(见下方说明) | | `type` | ❌ | 合同类型(见下方说明) |
| `responsible_user_id` | ❌ | 负责人(默认为当前用户) | | `responsible_user_id` | ❌ | 负责人(默认为当前用户,仅管理员可在前端修改 |
**合同类型自动设置规则:** **合同类型自动设置与角色限制规则:**
- 采购经理创建的合同自动设为 `supply` - 采购经理`procurement_manager`)创建的合同**只能**为 `supply`(采购合同),且必须选择 `supplier_id`
- 其他角色默认 `franchise`,也可手动指定 - 招商经理(`franchise_manager`)创建的合同**只能**为 `franchise`(加盟合同),且必须选择 `customer_id`
- 其他角色默认 `franchise`,也可手动指定 `type`
**校验规则:**
- `customer_id` 必须为已存在的客户
- `supplier_id` 必须为已存在的供应商
- `employee_id`(如填写)必须为已存在的员工
#### PUT /api/contracts/:id — 更新合同 #### PUT /api/contracts/:id — 更新合同
所有字段均可选。可更新字段包括 `type``responsible_user_id` 所有字段均可选。可更新字段包括 `type``supplier_id``responsible_user_id`
**校验规则:** 更新 `customer_id``supplier_id``employee_id` 时会校验关联记录是否存在。
#### DELETE /api/contracts/:id — 删除合同 #### DELETE /api/contracts/:id — 删除合同
@@ -491,8 +553,11 @@ Authorization: Bearer <token>
| 参数 | 说明 | | 参数 | 说明 |
|------|------| |------|------|
| `handle_status` | 按处理状态过滤(待处理/处理中/已完成) | | `id` | 按 ID 精确搜索 |
| `customer_id` | 按客户 ID 精确搜索 |
| `customer_name` | 按客户名称模糊搜索 | | `customer_name` | 按客户名称模糊搜索 |
| `handle_status` | 按处理状态过滤(待处理/处理中/已完成) |
| `feedback` | 按反馈内容模糊搜索 |
**响应数据字段(含 JOIN 字段):** **响应数据字段(含 JOIN 字段):**
@@ -520,17 +585,23 @@ Authorization: Bearer <token>
|------|------|------| |------|------|------|
| `customer_id` | ✅ | 关联客户 ID | | `customer_id` | ✅ | 关联客户 ID |
| `feedback` | ✅ | 售后反馈内容 | | `feedback` | ✅ | 售后反馈内容 |
| `employee_id` | ❌ | 处理业务员 ID | | `employee_id` | ❌ | 处理业务员 ID(前端仅显示运营部员工) |
| `handle_method` | ❌ | 处理方式 | | `handle_method` | ❌ | 处理方式 |
| `handle_status` | ❌ | 处理状态,默认 `待处理` | | `handle_status` | ❌ | 处理状态,默认 `待处理` |
| `service_date` | ❌ | 售后日期 | | `service_date` | ❌ | 售后日期 |
| `remark` | ❌ | 备注 | | `remark` | ❌ | 备注 |
| `responsible_user_id` | ❌ | 负责人(默认为当前用户) | | `responsible_user_id` | ❌ | 负责人(默认为当前用户,仅管理员可在前端修改 |
**校验规则:**
- `customer_id` 必须为已存在的客户
- `employee_id`(如填写)必须为已存在的员工
#### PUT /api/after-sales/:id — 更新售后 #### PUT /api/after-sales/:id — 更新售后
所有字段均可选。 所有字段均可选。
**校验规则:** 更新 `customer_id``employee_id` 时会校验关联记录是否存在。
#### DELETE /api/after-sales/:id — 删除售后 #### DELETE /api/after-sales/:id — 删除售后
--- ---
@@ -546,9 +617,10 @@ Authorization: Bearer <token>
| 参数 | 说明 | | 参数 | 说明 |
|------|------| |------|------|
| `id` | 按 ID 精确搜索 |
| `name` | 按产品名称模糊搜索 | | `name` | 按产品名称模糊搜索 |
| `type` | 按产品类型模糊搜索 | | `type` | 按产品类型模糊搜索 |
| `supplier` | 按供应商模糊搜索 | | `supplier` | 按供应商名称模糊搜索 |
**响应数据字段:** **响应数据字段:**
@@ -561,7 +633,7 @@ Authorization: Bearer <token>
| `price` | number | 单价 | | `price` | number | 单价 |
| `unit` | string | 计量单位(默认"件" | | `unit` | string | 计量单位(默认"件" |
| `specification` | string | 规格/型号 | | `specification` | string | 规格/型号 |
| `supplier` | string | 供应商 | | `supplier` | string | 供应商名称 |
| `remark` | string | 备注 | | `remark` | string | 备注 |
| `created_at` | datetime | 创建时间 | | `created_at` | datetime | 创建时间 |
| `updated_at` | datetime | 更新时间 | | `updated_at` | datetime | 更新时间 |
@@ -578,7 +650,7 @@ Authorization: Bearer <token>
| `price` | ❌ | 单价,默认 0.00 | | `price` | ❌ | 单价,默认 0.00 |
| `unit` | ❌ | 单位,默认"件" | | `unit` | ❌ | 单位,默认"件" |
| `specification` | ❌ | 规格 | | `specification` | ❌ | 规格 |
| `supplier` | ❌ | 供应商 | | `supplier` | ❌ | 供应商名称 |
| `remark` | ❌ | 备注 | | `remark` | ❌ | 备注 |
#### PUT /api/products/:id — 更新产品 #### PUT /api/products/:id — 更新产品
@@ -600,6 +672,7 @@ Authorization: Bearer <token>
| 参数 | 说明 | | 参数 | 说明 |
|------|------| |------|------|
| `id` | 按 ID 精确搜索 |
| `name` | 按供应商名称模糊搜索 | | `name` | 按供应商名称模糊搜索 |
| `type` | 按类型模糊搜索 | | `type` | 按类型模糊搜索 |
| `status` | 按状态过滤0-停用, 1-正常) | | `status` | 按状态过滤0-停用, 1-正常) |
@@ -680,9 +753,9 @@ Authorization: Bearer <token>
| HTTP 状态码 | code | 说明 | | HTTP 状态码 | code | 说明 |
|------------|------|------| |------------|------|------|
| 400 | 400 | 参数错误 / 校验失败 | | 400 | 400 | 参数错误 / 校验失败 / 关联记录不存在 |
| 401 | 401 | 未登录 / Token 无效 | | 401 | 401 | 未登录 / Token 无效 |
| 403 | 403 | 权限不足 / 账号被禁用 | | 403 | 403 | 权限不足 / 账号被禁用 / 角色操作限制 |
| 404 | 404 | 资源不存在 | | 404 | 404 | 资源不存在 |
| 409 | 409 | 数据冲突(如用户名重复) | | 409 | 409 | 数据冲突(如用户名重复) |
| 500 | 500 | 服务器内部错误 | | 500 | 500 | 服务器内部错误 |
@@ -704,7 +777,7 @@ Authorization: Bearer <token>
| `password` | VARCHAR(255) | NOT NULL | 密码bcrypt 哈希) | | `password` | VARCHAR(255) | NOT NULL | 密码bcrypt 哈希) |
| `is_active` | TINYINT(1) | NOT NULL DEFAULT 1 | 账号状态0-禁用, 1-启用 | | `is_active` | TINYINT(1) | NOT NULL DEFAULT 1 | 账号状态0-禁用, 1-启用 |
| `role_id` | INT | NULLABLE | 角色 ID → roles.id | | `role_id` | INT | NULLABLE | 角色 ID → roles.id |
| `employee_id` | INT | NULLABLE | 员工 ID → employees.id | | `employee_id` | INT | NULLABLE, UNIQUE | 员工 ID → employees.id |
| `department` | VARCHAR(100) | NULLABLE | 所属部门(冗余字段,从 employees 同步) | | `department` | VARCHAR(100) | NULLABLE | 所属部门(冗余字段,从 employees 同步) |
| `created_at` | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | | `created_at` | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| `updated_at` | DATETIME | ON UPDATE CURRENT_TIMESTAMP | 更新时间 | | `updated_at` | DATETIME | ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
@@ -777,7 +850,8 @@ Authorization: Bearer <token>
| 字段 | 类型 | 约束 | 说明 | | 字段 | 类型 | 约束 | 说明 |
|------|------|------|------| |------|------|------|------|
| `id` | INT | PK, AUTO_INCREMENT | 合同 ID | | `id` | INT | PK, AUTO_INCREMENT | 合同 ID |
| `customer_id` | INT | NOT NULL, INDEX | 客户 ID → customers.id | | `customer_id` | INT | NULLABLE, INDEX | 客户 ID → customers.id(加盟合同必填) |
| `supplier_id` | INT | NULLABLE, INDEX | 供应商 ID → suppliers.id采购合同必填 |
| `contract_name` | VARCHAR(200) | NOT NULL | 合同名称 | | `contract_name` | VARCHAR(200) | NOT NULL | 合同名称 |
| `contract_no` | VARCHAR(100) | — | 合同编号 | | `contract_no` | VARCHAR(100) | — | 合同编号 |
| `contract_content` | TEXT | — | 合同内容/条款 | | `contract_content` | TEXT | — | 合同内容/条款 |
@@ -785,7 +859,7 @@ Authorization: Bearer <token>
| `effective_date` | DATE | INDEX | 生效日期 | | `effective_date` | DATE | INDEX | 生效日期 |
| `expiry_date` | DATE | — | 到期日期 | | `expiry_date` | DATE | — | 到期日期 |
| `employee_id` | INT | INDEX | 业务员 ID → employees.id | | `employee_id` | INT | INDEX | 业务员 ID → employees.id |
| `status` | VARCHAR(20) | NOT NULL DEFAULT '生效' | 状态:草稿/生效/完成/作废 | | `status` | VARCHAR(20) | NOT NULL DEFAULT '生效' | 状态:草稿/生效中/已完成/作废 |
| `remark` | TEXT | — | 备注 | | `remark` | TEXT | — | 备注 |
| `type` | VARCHAR(20) | NOT NULL DEFAULT 'franchise' | 类型:`franchise`(加盟) / `supply`(采购) | | `type` | VARCHAR(20) | NOT NULL DEFAULT 'franchise' | 类型:`franchise`(加盟) / `supply`(采购) |
| `responsible_user_id` | INT | — | 负责人用户 ID → users.id | | `responsible_user_id` | INT | — | 负责人用户 ID → users.id |
@@ -888,15 +962,17 @@ Authorization: Bearer <token>
│ id (PK) │ │ id (PK) │ │ id (PK) │ │ id (PK) │
│ customer_id (FK) │ │ customer_id (FK) │ │ customer_id (FK) │ │ customer_id (FK) │
│ → customers.id │ │ → customers.id │ │ → customers.id │ │ → customers.id │
contract_name │ │ feedback │ supplier_id (FK) │ │ feedback │
contract_no │ │ employee_id (FK) │ → suppliers.id │ │ employee_id (FK) │
amount │ │ → employees.id │ contract_name │ │ → employees.id │
employee_id (FK) │ │ handle_method │ contract_no │ │ handle_method │
→ employees.id │ │ handle_status │ amount │ │ handle_status │
status │ │ service_date │ employee_id (FK) │ │ service_date │
type │ │ responsible_user │ → employees.id │ │ responsible_user │
franchise/ │ │ _id → users.id │ status │ │ _id → users.id │
supply │ └──────────────────┘ type │ └──────────────────┘
│ franchise/ │
│ supply │
│ responsible_user │ │ responsible_user │
│ _id → users.id │ │ _id → users.id │
└──────────────────┘ └──────────────────┘
@@ -920,10 +996,11 @@ Authorization: Bearer <token>
| 关系 | 类型 | 说明 | | 关系 | 类型 | 说明 |
|------|------|------| |------|------|------|
| users → roles | 多对一 | 一个用户属于一个角色,一个角色可以有多个用户 | | users → roles | 多对一 | 一个用户属于一个角色,一个角色可以有多个用户 |
| users → employees | 一对一 | 一个用户关联一个员工(通过 employee_id | | users → employees | 一对一 | 一个用户关联一个员工(通过 employee_id,唯一约束 |
| roles ↔ permissions | 多对多 | 通过 role_permissions 中间表关联 | | roles ↔ permissions | 多对多 | 通过 role_permissions 中间表关联 |
| customers → users | 多对一 | 通过 responsible_user_id 指定负责人 | | customers → users | 多对一 | 通过 responsible_user_id 指定负责人 |
| contracts → customers | 多对一 | 通过 customer_id 关联客户 | | contracts → customers | 多对一 | 通过 customer_id 关联客户(加盟合同必填) |
| contracts → suppliers | 多对一 | 通过 supplier_id 关联供应商(采购合同必填) |
| contracts → employees | 多对一 | 通过 employee_id 关联业务员 | | contracts → employees | 多对一 | 通过 employee_id 关联业务员 |
| contracts → users | 多对一 | 通过 responsible_user_id 指定负责人 | | contracts → users | 多对一 | 通过 responsible_user_id 指定负责人 |
| after_sales → customers | 多对一 | 通过 customer_id 关联客户 | | after_sales → customers | 多对一 | 通过 customer_id 关联客户 |
@@ -1040,6 +1117,11 @@ Authorization: Bearer <token>
- **部门类资源**employees通过 `department` 字段过滤,只能看到自己部门的员工 - **部门类资源**employees通过 `department` 字段过滤,只能看到自己部门的员工
- **全局类资源**products、suppliers无数据范围过滤只要有权限就能看到全部 - **全局类资源**products、suppliers无数据范围过滤只要有权限就能看到全部
**合同类型与角色限制:**
- 采购经理(`procurement_manager`)只能查看和操作采购合同(`type = 'supply'`
- 招商经理(`franchise_manager`)和运营经理(`operations_manager`)只能查看和操作加盟合同(`type = 'franchise'`)中自己负责的记录
- 创建合同时,采购经理只能创建采购合同,招商经理只能创建加盟合同
--- ---
## 预置账号 ## 预置账号