## MODIFIED Requirements ### Requirement: 验证套餐状态 创建订单前系统 MUST 验证套餐处于可购买状态。**校验逻辑因购买场景而不同**:通过代理渠道购买时检查代理分配记录的 shelf_status,通过平台自营渠道购买时检查套餐全局 shelf_status。`Package.status`(启用/禁用)为全局开关,任何场景下都必须检查。 #### Scenario: 代理渠道 - 套餐启用且代理上架 - **GIVEN** `Package.status=1`(启用),卖家代理的 `allocation.shelf_status=1`(上架) - **WHEN** 客户通过该代理下单购买套餐 - **THEN** 套餐状态校验通过 #### Scenario: 代理渠道 - 套餐已禁用 - **GIVEN** `Package.status=2`(禁用) - **WHEN** 客户通过任意代理下单购买套餐 - **THEN** 验证失败,返回 "套餐已禁用" #### Scenario: 代理渠道 - 代理已下架套餐 - **GIVEN** `Package.status=1`(启用),卖家代理的 `allocation.shelf_status=2`(代理下架) - **WHEN** 客户通过该代理下单购买套餐 - **THEN** 验证失败,返回 "套餐已下架" #### Scenario: 代理渠道 - 平台下架不影响代理销售 - **GIVEN** `Package.status=1`(启用),`Package.shelf_status=2`(平台下架),卖家代理的 `allocation.shelf_status=1`(代理上架) - **WHEN** 客户通过该代理下单购买套餐 - **THEN** 套餐状态校验通过(平台 shelf_status 不参与代理渠道校验) #### Scenario: 平台自营渠道 - 套餐启用且平台上架 - **GIVEN** `Package.status=1`(启用),`Package.shelf_status=1`(平台上架) - **WHEN** 客户通过平台自营渠道下单购买套餐 - **THEN** 套餐状态校验通过 #### Scenario: 平台自营渠道 - 套餐已下架 - **GIVEN** `Package.status=1`(启用),`Package.shelf_status=2`(平台下架) - **WHEN** 客户通过平台自营渠道下单购买套餐 - **THEN** 验证失败,返回 "套餐已下架"