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 依赖问题
4.4 KiB
4.4 KiB
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:归属代理商IDstatus:状态(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 验证当前用户有权限操作该企业