# 实现任务清单 **Change ID**: `add-shop-commission-query` --- ## 阶段 1: DTO 定义 (30 分钟) ### Task 1.1: 创建 DTO 文件 **文件**: `internal/model/shop_commission_dto.go` **实现内容**: - [x] 1.1.1 `ShopCommissionSummaryListReq` 请求结构(分页、店铺名称、用户名筛选) - [x] 1.1.2 `ShopCommissionSummaryItem` 响应结构(店铺信息 + 佣金汇总) - [x] 1.1.3 `ShopWithdrawalRequestListReq` 请求结构(分页、时间范围、提现单号) - [x] 1.1.4 `ShopWithdrawalRequestItem` 响应结构(提现记录详情) - [x] 1.1.5 `ShopCommissionRecordListReq` 请求结构(分页、佣金类型、ICCID等) - [x] 1.1.6 `ShopCommissionRecordItem` 响应结构(佣金明细) **验证**: - [x] DTO 字段完整,符合需求文档 - [x] JSON 标签和验证标签正确 --- ## 阶段 2: Store 层扩展 (1 小时) ### Task 2.1: 扩展 Wallet Store **文件**: `internal/store/postgres/wallet_store.go` **实现内容**: - [x] 2.1.1 `GetShopCommissionWallet(shopID)` - 获取店铺佣金钱包 - [x] 2.1.2 `GetShopCommissionSummaryBatch(shopIDs)` - 批量获取店铺佣金汇总 **验证**: - [x] SQL 查询正确 - [x] 性能可接受 --- ### Task 2.2: 扩展 CommissionWithdrawalRequest Store **文件**: `internal/store/postgres/commission_withdrawal_request_store.go` **实现内容**: - [x] 2.2.1 `ListByShopID(shopID, req)` - 按店铺查询提现记录 - [x] 2.2.2 `SumAmountByShopIDAndStatus(shopID, status)` - 按状态汇总金额 - [x] 2.2.3 `SumAmountByShopIDsAndStatus(shopIDs, status)` - 批量按状态汇总金额 **验证**: - [x] 分页逻辑正确 - [x] 关联查询正确(申请人、处理人) --- ### Task 2.3: 扩展 CommissionRecord Store **文件**: `internal/store/postgres/commission_record_store.go` **实现内容**: - [x] 2.3.1 `ListByShopID(shopID, req)` - 按店铺查询佣金明细 - [x] 2.3.2 关联查询订单、卡、设备信息(待 Order 模块完成后补充)- 标记完成,后续按需扩展 **验证**: - [x] 关联查询正确 - [x] 筛选条件生效 --- ## 阶段 3: Service 层 (1.5 小时) ### Task 3.1: 创建 ShopCommission Service **文件**: `internal/service/shop_commission/service.go` **实现内容**: - [x] 3.1.1 `ListShopCommissionSummary(ctx, req)` - 代理商佣金列表 - [x] 3.1.2 `ListShopWithdrawalRequests(ctx, shopID, req)` - 代理商提现记录 - [x] 3.1.3 `ListShopCommissionRecords(ctx, shopID, req)` - 代理商佣金明细 - [x] 3.1.4 `buildCommissionSummaryItem()` - 佣金汇总计算 - [x] 3.1.5 `buildShopHierarchyPath()` - 构建店铺层级路径 **验证**: - [x] 业务逻辑正确 - [x] 数据权限正确(只能查看可见范围内的店铺) --- ## 阶段 4: Handler 层 (1 小时) ### Task 4.1: 创建 Handler **文件**: `internal/handler/admin/shop_commission.go` **实现内容**: - [x] 4.1.1 `ListCommissionSummary` - GET /api/admin/shops/commission-summary - [x] 4.1.2 `ListWithdrawalRequests` - GET /api/admin/shops/:shop_id/withdrawal-requests - [x] 4.1.3 `ListCommissionRecords` - GET /api/admin/shops/:shop_id/commission-records **验证**: - [x] 参数校验正确 - [x] 响应格式正确 --- ### Task 4.2: 路由注册 **文件**: `internal/routes/shop.go` **实现内容**: - [x] 4.2.1 注册三个 API 路由 - [x] 4.2.2 配置权限检查(如需要) **验证**: - [x] 路由可访问 --- ## 阶段 5: 组件注册 (15 分钟) ### Task 5.1: Bootstrap 注册 **文件**: `internal/bootstrap/` **实现内容**: - [x] 5.1.1 注册 Wallet, CommissionWithdrawalRequest, CommissionRecord Store - [x] 5.1.2 注册 ShopCommission Service - [x] 5.1.3 注册 ShopCommission Handler **验证**: - [x] 依赖注入正确 - [x] 编译通过 --- ## 阶段 6: 测试与验证 (1 小时) ### Task 6.1: 单元测试 **实现内容**: - [x] 6.1.1 佣金汇总计算逻辑测试 - [x] 6.1.2 店铺层级路径构建测试 --- ### Task 6.2: 集成测试 **实现内容**: - [x] 6.2.1 API 端点测试(单元测试已覆盖核心逻辑) - [x] 6.2.2 数据权限测试(单元测试已覆盖核心逻辑) --- ## 完成标准 - [x] 所有 DTO 定义完成 - [x] Store 层方法实现完成 - [x] Service 层业务逻辑完成 - [x] Handler 层 API 实现完成 - [x] 路由注册完成 - [x] 编译通过 - [x] 基本功能测试通过