Files
sexygoat d97dc5f007
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m40s
fetch(modify):修改套餐接口
2026-02-04 18:14:52 +08:00

7.3 KiB
Raw Blame History

Shop Series Allocation Specification Delta

MODIFIED Requirements

Requirement: Shop Series Allocation Data Model

套餐系列分配的数据模型SHALL重构为更细粒度的佣金配置结构移除旧的 base_commission 模式,采用独立的一次性佣金和强制充值配置字段。

字段定义:

  • id (number) - 分配ID
  • series_id (number) - 套餐系列ID
  • series_name (string) - 套餐系列名称
  • series_code (string) - 套餐系列编码
  • shop_id (number) - 被分配的店铺ID
  • shop_name (string) - 被分配的店铺名称
  • allocator_shop_id (number) - 分配者店铺ID0表示平台分配
  • allocator_shop_name (string) - 分配者店铺名称
  • enable_one_time_commission (boolean) - 是否启用一次性佣金
  • one_time_commission_amount (number) - 该代理能拿的一次性佣金金额上限(分)
  • one_time_commission_threshold (number, optional) - 一次性佣金触发阈值(分)
  • one_time_commission_trigger (string, optional) - 一次性佣金触发类型: "first_recharge" | "accumulated_recharge"
  • enable_force_recharge (boolean) - 是否启用强制充值
  • force_recharge_amount (number, optional) - 强制充值金额(分)
  • force_recharge_trigger_type (number, optional) - 强充触发类型: 1(单次充值) | 2(累计充值)
  • status (number) - 状态 (1:启用, 2:禁用)
  • created_at (string) - 创建时间
  • updated_at (string) - 更新时间

创建请求字段 (CreateShopSeriesAllocationRequest):

  • series_id (number, required) - 套餐系列ID
  • shop_id (number, required) - 被分配的店铺ID
  • one_time_commission_amount (number, required) - 一次性佣金金额上限(分)
  • enable_one_time_commission (boolean, optional) - 是否启用一次性佣金
  • one_time_commission_threshold (number, optional) - 一次性佣金触发阈值(分)
  • one_time_commission_trigger (string, optional) - 一次性佣金触发类型
  • enable_force_recharge (boolean, optional) - 是否启用强制充值
  • force_recharge_amount (number, optional) - 强制充值金额(分)
  • force_recharge_trigger_type (number, optional) - 强充触发类型

更新请求字段 (UpdateShopSeriesAllocationRequest):

  • 所有字段均为可选,允许部分更新
  • enable_one_time_commission (boolean, optional)
  • one_time_commission_amount (number, optional)
  • one_time_commission_threshold (number, optional)
  • one_time_commission_trigger (string, optional)
  • enable_force_recharge (boolean, optional)
  • force_recharge_amount (number, optional)
  • force_recharge_trigger_type (number, optional)
  • status (number, optional)

Scenario: 创建系列分配并启用一次性佣金

  • GIVEN 平台管理员登录系统
  • AND 系统中存在ID为1的套餐系列和ID为100的店铺
  • WHEN 创建系列分配时提供以下配置:
    • series_id: 1
    • shop_id: 100
    • one_time_commission_amount: 5000
    • enable_one_time_commission: true
    • one_time_commission_threshold: 10000
    • one_time_commission_trigger: "first_recharge"
  • THEN 系统SHALL创建系列分配记录
  • AND 响应数据中 allocator_shop_id 为 0平台分配
  • AND 响应数据中包含所有一次性佣金配置字段

Scenario: 创建系列分配并启用强制充值

  • GIVEN 代理商A登录系统shop_id为50
  • AND 系统中存在ID为2的套餐系列和ID为101的下级代理店铺
  • WHEN 创建系列分配时提供以下配置:
    • series_id: 2
    • shop_id: 101
    • one_time_commission_amount: 3000
    • enable_force_recharge: true
    • force_recharge_amount: 15000
    • force_recharge_trigger_type: 1 (单次充值)
  • THEN 系统SHALL创建系列分配记录
  • AND 响应数据中 allocator_shop_id 为 50代理商A
  • AND 响应数据中包含所有强制充值配置字段

Scenario: 更新系列分配的一次性佣金配置

  • GIVEN 系统中存在ID为10的系列分配
  • WHEN 更新该分配时提供以下字段:
    • one_time_commission_amount: 8000 (从5000更新到8000)
    • one_time_commission_threshold: 20000
  • THEN 系统SHALL更新指定字段
  • AND 其他字段保持不变
  • AND 响应数据中 updated_at 字段更新为当前时间

Scenario: 更新系列分配的强制充值配置

  • GIVEN 系统中存在ID为10的系列分配
  • WHEN 更新该分配时提供以下字段:
    • enable_force_recharge: true
    • force_recharge_amount: 25000
    • force_recharge_trigger_type: 2 (累计充值)
  • THEN 系统SHALL更新强制充值配置
  • AND 响应数据中包含更新后的强制充值字段

Scenario: 查询系列分配列表并显示分配者信息

  • GIVEN 系统中存在多个系列分配,部分由平台创建,部分由代理商创建
  • WHEN 查询系列分配列表 (GET /api/admin/shop-series-allocations)
  • THEN 系统SHALL返回所有分配记录
  • AND 每条记录包含 allocator_shop_idallocator_shop_name
  • AND 平台创建的分配记录中 allocator_shop_id 为 0

Scenario: 按分配者店铺ID筛选系列分配

  • GIVEN 系统中存在多个系列分配
  • WHEN 使用查询参数 allocator_shop_id=50
  • THEN 系统SHALL返回所有由店铺ID为50的代理商创建的分配记录

REMOVED Requirements

Requirement: Base Commission Configuration

旧版的 base_commission 配置模式已被移除,不再使用 BaseCommissionConfig 类型。

Reason: 新的佣金配置模型更加灵活和细粒度,将一次性佣金配置分散到独立字段中,便于查询和管理。

Migration: 现有使用 base_commission 字段的代码需要迁移到新的字段结构。如果有历史数据,需要后端提供数据迁移方案。

Requirement: Tiered Commission Configuration

旧版的 TierCommissionConfig (周期性梯度返佣) 配置已被移除。

Reason: 系列分配层面不再支持复杂的梯度返佣配置,改为在系列级别统一配置一次性佣金梯度。

Migration: 梯度佣金配置现在在套餐系列级别 (PackageSeries.one_time_commission_config.tiers) 进行管理。

ADDED Requirements

Requirement: Allocator Information Tracking

系统SHALL记录系列分配的创建者分配者信息包括分配者店铺ID和名称。

Scenario: 平台创建的分配标记为平台分配

  • GIVEN 平台管理员登录系统
  • WHEN 创建系列分配
  • THEN 系统SHALL自动设置 allocator_shop_id 为 0
  • AND allocator_shop_name 为 "平台" 或相应的平台标识

Scenario: 代理商创建的分配记录代理商信息

  • GIVEN 代理商A登录系统shop_id为50shop_name为"代理商A"
  • WHEN 创建系列分配给下级代理
  • THEN 系统SHALL自动设置 allocator_shop_id 为 50
  • AND allocator_shop_name 为 "代理商A"

Requirement: Series Code in Allocation Response

系统SHALL在系列分配响应数据中包含套餐系列编码 (series_code)。

Scenario: 获取系列分配详情时包含系列编码

  • GIVEN 系统中存在ID为10的系列分配关联系列编码为"SERIES001"
  • WHEN 请求获取该分配的详情 (GET /api/admin/shop-series-allocations/10)
  • THEN 响应数据中SHALL包含 series_code 字段
  • AND 其值为 "SERIES001"