This commit is contained in:
2026-04-09 14:53:48 +08:00
parent 0627ffec42
commit ff7e749bf2
12 changed files with 182 additions and 0 deletions

View File

@@ -1,5 +1,28 @@
## ADDED Requirements
### Requirement: 迁移接口的越权校验(通用要求)
本规范下所有 `/shops/:shop_id/...` 迁移/新增接口Service 层方法入口 SHALL 调用 `middleware.CanManageShop(ctx, shopID)` 做显式越权校验。Handler 层只做参数解析,不承担权限逻辑。该要求同时追溯适用于已有但缺少校验的 `ListShopWithdrawalRequests``ListShopCommissionRecords` 两个方法(回归漏洞修复)。
统一错误返回:`errors.New(errors.CodeForbidden, "无权限操作该资源或资源不存在")`
#### Scenario: 代理传非自己管辖店铺 ID 被 Service 层拦截
- **WHEN** 代理 AshopID=10请求本规范任意一个 `/shops/:shop_id/...` 接口,传入代理 BshopID=20的 shopID
- **THEN** Service 层入口的 `middleware.CanManageShop(ctx, 20)` 返回 error接口返回 403消息 "无权限操作该资源或资源不存在"
#### Scenario: 平台人员不受 CanManageShop 限制
- **WHEN** 平台人员请求任意 `/shops/:shop_id/...` 接口
- **THEN** `middleware.CanManageShop` 直接放行,接口正常返回数据
#### Scenario: 已有方法 ListShopCommissionRecords / ListShopWithdrawalRequests 补齐校验
- **WHEN** 代理账号请求 `/shops/{非自己管辖shopID}/commission-records``/withdrawal-requests`
- **THEN** 实现后返回 403回归漏洞修复前这两个方法会返回数据
---
### Requirement: 查询佣金记录列表
系统 SHALL 提供佣金记录列表查询,支持按店铺、佣金来源、时间范围、状态筛选。