## 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** 验证当前用户有权限操作该企业