This commit is contained in:
207
docs/代理首页可提现佣金-spec.md
Normal file
207
docs/代理首页可提现佣金-spec.md
Normal file
@@ -0,0 +1,207 @@
|
||||
# 代理首页佣金展示 Spec
|
||||
|
||||
## 1. 背景
|
||||
|
||||
代理首页当前已经会请求 `getFundSummary()`,但佣金区域使用了 `v-if="isAgent && commissionSummary"`。
|
||||
|
||||
这会带来两个问题:
|
||||
|
||||
- 只要 `commissionSummary` 为空,首页代理佣金模块就整块不显示
|
||||
- 首页顶部还保留了“佣金概览”标题文案,这个文案本次不再需要
|
||||
|
||||
本次需求明确为:
|
||||
|
||||
- 首页里去掉“佣金概览”这个标题文案
|
||||
- 只要当前账号是代理账号,就显示首页代理佣金区域
|
||||
- 不管接口有没有值,模块都要显示
|
||||
|
||||
---
|
||||
|
||||
## 2. 目标
|
||||
|
||||
- 首页代理佣金区域的外层显示条件改为仅判断 `isAgent`
|
||||
- 首页不再展示“佣金概览”标题
|
||||
- 当佣金概览数据未返回、为空或请求失败时,佣金卡片仍然保留,金额位置显示占位内容
|
||||
|
||||
---
|
||||
|
||||
## 3. 范围
|
||||
|
||||
### 页面
|
||||
|
||||
- `src/pages/agent-system/home/index.vue`
|
||||
|
||||
### 用户
|
||||
|
||||
- 代理账号显示:`user_type === 3`
|
||||
- 企业账号不显示:`user_type === 4`
|
||||
|
||||
---
|
||||
|
||||
## 4. 数据来源与约束
|
||||
|
||||
### 数据来源
|
||||
|
||||
- 接口:`GET /api/admin/shops/fund-summary`
|
||||
- 方法:`getFundSummary()`
|
||||
- 现有状态:`commissionSummary`
|
||||
|
||||
### 关键字段
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `available_commission` | number | 可提现佣金,单位分 |
|
||||
| `total_commission` | number | 累计佣金,单位分 |
|
||||
| `withdrawn_commission` | number | 已提现佣金,单位分 |
|
||||
| `frozen_commission` | number | 冻结佣金,单位分 |
|
||||
|
||||
### 约束
|
||||
|
||||
1. 首页不得新增新的佣金概览接口请求
|
||||
2. 首页直接复用现有 `commissionSummary`
|
||||
3. 本次不改后端接口、不改接口字段
|
||||
|
||||
---
|
||||
|
||||
## 5. 展示规则
|
||||
|
||||
### 5.1 外层显示条件
|
||||
|
||||
首页代理佣金区域显示条件改为:
|
||||
|
||||
- `isAgent === true`
|
||||
|
||||
不再要求:
|
||||
|
||||
- `commissionSummary` 必须有值
|
||||
|
||||
### 5.2 标题文案
|
||||
|
||||
首页移除“佣金概览”标题文案,包括:
|
||||
|
||||
- 不再在卡片上方展示“佣金概览”
|
||||
- 保留卡片内部的“可提现佣金”主标题
|
||||
|
||||
### 5.3 金额展示
|
||||
|
||||
佣金卡片继续展示以下内容:
|
||||
|
||||
- `可提现佣金`
|
||||
- `累计佣金`
|
||||
- `已提现`
|
||||
- `冻结`
|
||||
|
||||
展示规则:
|
||||
|
||||
- 有值时,按现有金额格式化规则显示
|
||||
- 无值时,显示 `--`
|
||||
- 不允许因为空值显示错误金额
|
||||
|
||||
### 5.4 今日佣金区域
|
||||
|
||||
“今日佣金”区域继续跟随代理佣金模块一起显示。
|
||||
|
||||
展示规则保持现状:
|
||||
|
||||
- 日期无值显示 `--`
|
||||
- 佣金金额无值显示 `¥0.00`
|
||||
- 订单笔数无值显示 `0`
|
||||
- 无当日数据时显示“今日暂无佣金数据”
|
||||
|
||||
---
|
||||
|
||||
## 6. 交互与状态
|
||||
|
||||
### 6.1 跳转
|
||||
|
||||
点击佣金卡片后跳转到:
|
||||
|
||||
- `/pages/agent-system/commission-center/index`
|
||||
|
||||
### 6.2 加载态
|
||||
|
||||
当 `commissionSummary` 还未返回时:
|
||||
|
||||
- 佣金卡片仍然显示
|
||||
- 金额区域显示 `--`
|
||||
|
||||
### 6.3 异常态
|
||||
|
||||
当 `getFundSummary()` 请求失败时:
|
||||
|
||||
- 佣金卡片仍然显示
|
||||
- 金额区域显示 `--`
|
||||
- 不影响首页其他模块渲染
|
||||
|
||||
---
|
||||
|
||||
## 7. 非目标
|
||||
|
||||
- 不修改佣金中心页面结构
|
||||
- 不修改提现管理页面结构
|
||||
- 不新增首页专用佣金接口
|
||||
- 不修改企业账号首页展示逻辑
|
||||
|
||||
---
|
||||
|
||||
## 8. 验收标准
|
||||
|
||||
### 用例 1:代理账号且接口有值
|
||||
|
||||
前置条件:
|
||||
|
||||
- `user_type === 3`
|
||||
- `commissionSummary.available_commission = 85000`
|
||||
|
||||
期望:
|
||||
|
||||
- 首页显示代理佣金卡片
|
||||
- 首页不显示“佣金概览”标题
|
||||
- 主金额显示 `¥850.00`
|
||||
|
||||
### 用例 2:代理账号但接口无值
|
||||
|
||||
前置条件:
|
||||
|
||||
- `user_type === 3`
|
||||
- `commissionSummary = null`
|
||||
|
||||
期望:
|
||||
|
||||
- 首页仍显示代理佣金卡片
|
||||
- `可提现佣金 / 累计佣金 / 已提现 / 冻结` 均显示 `--`
|
||||
- 今日佣金区域仍显示
|
||||
|
||||
### 用例 3:代理账号且接口失败
|
||||
|
||||
前置条件:
|
||||
|
||||
- `user_type === 3`
|
||||
- `getFundSummary()` 请求失败
|
||||
|
||||
期望:
|
||||
|
||||
- 首页仍显示代理佣金卡片
|
||||
- 金额不显示错误数据
|
||||
- 页面其他内容正常渲染
|
||||
|
||||
### 用例 4:企业账号
|
||||
|
||||
前置条件:
|
||||
|
||||
- `user_type === 4`
|
||||
|
||||
期望:
|
||||
|
||||
- 首页不显示代理佣金区域
|
||||
|
||||
### 用例 5:不重复请求
|
||||
|
||||
前置条件:
|
||||
|
||||
- 首页已执行 `getFundSummary()`
|
||||
|
||||
期望:
|
||||
|
||||
- 不因本次需求新增第二次佣金接口请求
|
||||
- 页面继续复用 `commissionSummary`
|
||||
60
docs/资产详情修改.md
Normal file
60
docs/资产详情修改.md
Normal file
@@ -0,0 +1,60 @@
|
||||
1. 资产列表页面的IoT卡, 响应新增了返回了一个device_virtual_no这个字段
|
||||
如果这个字段为空显示的就是未绑定设备, 如果是有值就显示已绑定设备
|
||||
|
||||
2.资产列表里面加一个店铺联级查询条件
|
||||
/api/admin/iot-cards/standalone?shop_id=xxxx
|
||||
|
||||
# 店铺联级查询
|
||||
|
||||
## 基本信息
|
||||
|
||||
| 项目 | 内容 |
|
||||
|------|------|
|
||||
| 接口地址 | `GET /api/admin/shops/cascade` |
|
||||
| 认证方式 | Bearer Token (JWT) |
|
||||
| 所属模块 | 店铺管理 |
|
||||
|
||||
## 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| `shop_name` | string | 否 | 店铺名称(模糊查询),最大长度 100 |
|
||||
| `parent_id` | integer | 否 | 上级店铺 ID,不传则查询顶级店铺 |
|
||||
|
||||
## 响应参数
|
||||
|
||||
### 成功响应(200)
|
||||
|
||||
{
|
||||
"code": 0,
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"shop_name": "总店",
|
||||
"has_children": true
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"shop_name": "分店 A",
|
||||
"has_children": false
|
||||
}
|
||||
],
|
||||
"msg": "success",
|
||||
"timestamp": "2026-05-09T14:28:00Z"
|
||||
}
|
||||
|
||||
#### DtoShopCascadeItem
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `id` | integer | 店铺 ID |
|
||||
| `shop_name` | string | 店铺名称 |
|
||||
| `has_children` | boolean | 是否有下级店铺 |
|
||||
|
||||
3. 资产列表是设备的情况下让默认选择的搜索类型是虚拟号, 并把这个虚拟号改成设备号, 然后那个选择搜索类型的不要了,如果是IoT卡的时候就是ICCID, 也不要那个选择搜索类型去掉
|
||||
|
||||
4. 在资产详情里面制造商,批次号字段去掉, 然后绑定的IoT卡里面电话改成MSISDN, 实名改显眼一点, 加一个运营商(carrier_name)返回里面有返回这个字段
|
||||
|
||||
5. 设备实时状态里面的下载流量,上传流量去掉.
|
||||
6. 套餐列表里面的生肖中的那xxx至xxx 时间要明显一点
|
||||
7. 创建时间和网关同步删掉, 把最后在线改成最后上线时间放到设备实时状态里面
|
||||
Reference in New Issue
Block a user