## ADDED Requirements

### Requirement: 获取我的佣金概览
系统 SHALL 提供代理商查看自己店铺佣金概览的接口。

**接口**：`GET /api/admin/my/commission-summary`

**响应字段**：
- 店铺信息（shop_id, shop_name）
- 佣金汇总（total_commission, withdrawn_commission, unwithdraw_commission, frozen_commission, withdrawing_commission, available_commission）

**访问权限**：仅代理商用户（UserType=3）

#### Scenario: 获取佣金概览
- **WHEN** 代理商用户请求佣金概览
- **THEN** 从当前用户上下文获取 shop_id
- **AND** 计算并返回该店铺的佣金汇总

#### Scenario: 非代理商用户访问
- **WHEN** 非代理商用户请求此接口
- **THEN** 返回权限错误

---

### Requirement: 发起佣金提现
系统 SHALL 提供代理商发起佣金提现申请的接口。

**接口**：`POST /api/admin/my/withdrawal-requests`

**请求参数**：
- `amount`：提现金额，分（必填）
- `withdrawal_method`：收款类型（必填，目前支持 alipay）
- `account_name`：收款人姓名（必填）
- `account_number`：支付宝账号（必填）

**响应字段**：
- 提现申请详情（id, withdrawal_no, amount, fee_rate, fee, actual_amount, status, created_at）

#### Scenario: 成功发起提现
- **WHEN** 代理商发起符合条件的提现申请
- **THEN** 创建提现申请记录（status=1 待审批）
- **AND** 冻结店铺佣金钱包中对应金额
- **AND** 创建钱包交易流水（冻结类型）
- **AND** 记录申请人ID和当前手续费比率

#### Scenario: 验证最低提现金额
- **WHEN** 提现金额低于配置的最低金额
- **THEN** 返回错误：提现金额不能低于 X 元

#### Scenario: 验证可提现余额
- **WHEN** 提现金额大于可提现余额
- **THEN** 返回错误：可提现余额不足

#### Scenario: 验证每日提现次数
- **WHEN** 今日提现次数已达限制
- **THEN** 返回错误：今日提现次数已达上限

#### Scenario: 无提现配置时
- **WHEN** 系统没有生效的提现配置
- **THEN** 返回错误：暂未开放提现功能

#### Scenario: 计算手续费
- **WHEN** 创建提现申请
- **THEN** 按当前费率计算手续费：fee = amount * fee_rate / 10000
- **AND** 计算实际到账金额：actual_amount = amount - fee

---

### Requirement: 查询我的提现记录
系统 SHALL 提供代理商查询自己提现记录的接口。

**接口**：`GET /api/admin/my/withdrawal-requests`

**请求参数**：
- `page`、`page_size`：分页
- `status`：状态筛选
- `start_time`、`end_time`：申请时间范围

**响应字段**：
- 与提现申请列表接口相同

#### Scenario: 查询我的提现记录
- **WHEN** 代理商查询提现记录
- **THEN** 只返回当前用户所属店铺的提现记录

---

### Requirement: 查询我的佣金明细
系统 SHALL 提供代理商查询自己佣金入账明细的接口。

**接口**：`GET /api/admin/my/commission-records`

**请求参数**：
- `page`、`page_size`：分页
- `commission_type`：佣金类型
- `iccid`：ICCID（模糊查询）
- `device_no`：设备号（模糊查询）
- `order_no`：订单号（模糊查询）

**响应字段**：
- 与佣金明细接口相同

#### Scenario: 查询我的佣金明细
- **WHEN** 代理商查询佣金明细
- **THEN** 只返回当前用户所属店铺的佣金记录

---

### Requirement: 提现单号生成规则
系统 SHALL 按以下规则生成提现单号。

**格式**：W + 年月日时分秒 + 4位随机数
**示例**：W20260121143012345

#### Scenario: 生成唯一提现单号
- **WHEN** 创建提现申请
- **THEN** 自动生成唯一的提现单号
- **AND** 格式为 W + 时间戳 + 随机数

---

### Requirement: 提现钱包操作
系统 SHALL 在提现申请时正确操作钱包。

#### Scenario: 冻结余额
- **WHEN** 创建提现申请
- **THEN** 从钱包可用余额（balance）扣除提现金额
- **AND** 增加钱包冻结余额（frozen_balance）
- **AND** 使用事务确保原子性

#### Scenario: 审批通过后扣除
- **WHEN** 提现申请审批通过
- **THEN** 从冻结余额扣除（由审批模块处理）

#### Scenario: 审批拒绝后解冻
- **WHEN** 提现申请被拒绝
- **THEN** 将冻结金额退回可用余额（由审批模块处理）
