## ADDED Requirements

### Requirement: 新增企业客户
系统 SHALL 提供新增企业客户的接口，同时自动创建企业账号。

**接口**：`POST /api/admin/enterprises`

**请求参数**：
- `owner_shop_id`：归属代理商ID（可选，不填为平台自营）
- `enterprise_name`：企业名称（必填）
- `enterprise_code`：企业编号（必填，唯一）
- `legal_person`：法人代表
- `contact_name`：联系人姓名（必填）
- `contact_phone`：联系人电话（必填）
- `login_phone`：登录手机号（必填，作为企业账号）
- `password`：登录密码（必填）
- `business_license`：营业执照号
- `province`、`city`、`district`、`address`：地址信息

**响应字段**：
- 企业信息（enterprise）
- 账号信息（account）

#### Scenario: 创建企业并自动创建账号
- **WHEN** 创建企业客户
- **THEN** 创建企业记录
- **AND** 自动创建企业账号（UserType=4, EnterpriseID=企业ID）
- **AND** 使用事务确保原子性

#### Scenario: 企业编号唯一性校验
- **WHEN** 创建企业时企业编号已存在
- **THEN** 返回错误：企业编号已存在

#### Scenario: 登录手机号唯一性校验
- **WHEN** 创建企业时登录手机号已被其他账号使用
- **THEN** 返回错误：手机号已被使用

#### Scenario: 指定归属店铺
- **WHEN** 指定 `owner_shop_id`
- **THEN** 验证店铺存在且当前用户有权限
- **AND** 设置企业归属该店铺

---

### Requirement: 查询企业客户列表
系统 SHALL 提供查询企业客户列表的接口。

**接口**：`GET /api/admin/enterprises`

**请求参数**：
- `page`、`page_size`：分页
- `enterprise_name`：企业名称（模糊查询）
- `login_phone`：登录手机号（模糊查询）
- `contact_phone`：联系人电话（模糊查询）
- `owner_shop_id`：归属代理商ID
- `status`：状态（0=禁用, 1=启用）

**响应字段**：
- 企业信息（id, enterprise_name, enterprise_code, contact_name, contact_phone）
- 归属信息（owner_shop_id, owner_shop_name）
- 账号信息（login_phone）
- 状态信息（status, status_name）
- 地址信息（province, city, district, address）

#### Scenario: 平台用户查看所有企业
- **WHEN** 平台用户请求企业列表
- **THEN** 返回所有企业

#### Scenario: 代理商用户查看归属企业
- **WHEN** 代理商用户请求企业列表
- **THEN** 只返回 `owner_shop_id` 在自己+下级店铺范围内的企业

#### Scenario: 关联查询登录手机号
- **WHEN** 返回企业列表
- **THEN** 通过关联账号表获取 `login_phone`

---

### Requirement: 编辑企业信息
系统 SHALL 提供编辑企业信息的接口。

**接口**：`PUT /api/admin/enterprises/:id`

**请求参数**：
- `id`：企业ID（路径参数）
- 可编辑字段：owner_shop_id, enterprise_name, enterprise_code, legal_person, contact_name, contact_phone, business_license, 地址信息

**注意**：修改联系人电话不影响账号的登录手机号。

#### Scenario: 编辑企业基本信息
- **WHEN** 编辑企业信息
- **THEN** 更新企业记录
- **AND** 不影响关联账号

#### Scenario: 修改企业编号时校验唯一性
- **WHEN** 修改企业编号
- **THEN** 验证新编号不与其他企业冲突

#### Scenario: 修改归属店铺
- **WHEN** 修改 `owner_shop_id`
- **THEN** 验证目标店铺存在且当前用户有权限

---

### Requirement: 启用/禁用企业
系统 SHALL 提供启用或禁用企业的接口，同步影响企业账号。

**接口**：`PUT /api/admin/enterprises/:id/status`

**请求参数**：
- `id`：企业ID（路径参数）
- `status`：状态（0=禁用, 1=启用）

#### Scenario: 禁用企业
- **WHEN** 禁用企业
- **THEN** 更新企业状态为禁用
- **AND** 同步禁用企业关联的账号

#### Scenario: 启用企业
- **WHEN** 启用企业
- **THEN** 更新企业状态为启用
- **AND** 同步启用企业关联的账号

---

### Requirement: 修改企业账号密码
系统 SHALL 提供修改企业账号密码的接口。

**接口**：`PUT /api/admin/enterprises/:id/password`

**请求参数**：
- `id`：企业ID（路径参数）
- `password`：新密码（必填）

#### Scenario: 重置企业账号密码
- **WHEN** 修改企业账号密码
- **THEN** 查找企业关联的账号
- **AND** 更新账号密码（bcrypt加密）

#### Scenario: 权限校验
- **WHEN** 修改密码
- **THEN** 验证当前用户有权限操作该企业
