feat: 实现账号与佣金管理模块
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m35s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m35s
新增功能: - 店铺佣金查询:店铺佣金统计、店铺佣金记录列表、店铺提现记录 - 佣金提现审批:提现申请列表、审批通过、审批拒绝 - 提现配置管理:配置列表、新增配置、获取当前生效配置 - 企业管理:企业列表、创建、更新、删除、获取详情 - 企业卡授权:授权列表、批量授权、批量取消授权、统计 - 客户账号管理:账号列表、创建、更新状态、重置密码 - 我的佣金:佣金统计、佣金记录、提现申请、提现记录 数据库变更: - 扩展 tb_commission_withdrawal_request 新增提现单号等字段 - 扩展 tb_account 新增 is_primary 字段 - 扩展 tb_commission_record 新增 shop_id、balance_after - 扩展 tb_commission_withdrawal_setting 新增每日提现次数限制 - 扩展 tb_iot_card、tb_device 新增 shop_id 冗余字段 - 新建 tb_enterprise_card_authorization 企业卡授权表 - 新建 tb_asset_allocation_record 资产分配记录表 - 数据迁移:owner_type 枚举值 agent 统一为 shop 测试: - 新增 7 个单元测试文件覆盖各服务 - 修复集成测试 Redis 依赖问题
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
## 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** 验证当前用户有权限操作该企业
|
||||
Reference in New Issue
Block a user