This commit is contained in:
sexygoat
2026-03-31 18:41:52 +08:00
commit 3c62cc1cd1
527 changed files with 96725 additions and 0 deletions

2071
docs/API.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,130 @@
# 授权卡列表
## 接口说明
获取**某个企业下的卡列表**,支持分页和简单筛选。
- 请求方式GET
- 接口地址:`/api/admin/enterprises/{id}/cards`
- 认证方式Bearer Token
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | integer | 是 | 企业ID |
---
### Query 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| page_size | integer | 否 | 每页数量最大100 |
| status | integer | 否 | 卡状态 |
| carrier_id | integer | 否 | 运营商ID |
| iccid | string | 否 | ICCID模糊查询 |
| virtual_no | string | 否 | 虚拟号(模糊查询) |
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"page": 1,
"size": 10,
"total": 100
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
items 字段说明(企业卡信息)
字段 类型 说明
id integer 卡ID
iccid string 卡号
msisdn string 手机号
virtual_no string 虚拟号
carrier_id integer 运营商ID
carrier_name string 运营商名称
status integer 卡状态
status_name string 状态名称
network_status integer 网络状态
network_status_name string 网络状态名称
package_id integer 套餐ID
package_name string 套餐名称
device_id integer 绑定设备ID可能为空
常见状态说明
卡状态 status
1在库
2已分配
3已激活
4已停用
网络状态 network_status
0停机 / 异常
1正常
# 授权设备列表
## 接口说明
获取**某个企业下已授权的设备列表**。
- 请求方式GET
- 接口地址:`/api/admin/enterprises/{id}/devices`
- 认证方式Bearer Token
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | integer | 是 | 企业ID |
---
### Query 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码 |
| page_size | integer | 否 | 每页数量 |
| virtual_no | string | 否 | 设备虚拟号(模糊查询) |
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"total": 100
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
items 字段说明(企业设备)
字段 类型 说明
device_id integer 设备ID
device_name string 设备名称
device_model string 设备型号
virtual_no string 设备虚拟号
card_count integer 已绑定卡数量
authorized_at string 授权时间

391
docs/佣金和钱包.md Normal file
View File

@@ -0,0 +1,391 @@
# 1. 资产钱包概况 (需要新增我的钱包页面, 放到我的钱包里面)
## 接口说明
获取**某个资产(卡 / 设备)的钱包余额信息**。
⚠️ 企业账号不可调用。
- 请求方式GET
- 接口地址:`/api/admin/assets/{asset_type}/{id}/wallet`
- 认证方式Bearer Token
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| asset_type | string | 是 | 资产类型card / device |
| id | integer | 是 | 资产ID |
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": {
"wallet_id": 1,
"balance": 10000,
"available_balance": 8000,
"frozen_balance": 2000,
"currency": "CNY",
"status": 1,
"status_text": "正常",
"resource_id": 123,
"resource_type": "iot_card",
"created_at": "2026-03-31T12:00:00Z",
"updated_at": "2026-03-31T12:00:00Z"
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
字段说明
字段 类型 说明
wallet_id integer 钱包ID
balance integer 总余额(分)
available_balance integer 可用余额(分)= 总余额 - 冻结余额
frozen_balance integer 冻结金额(分)
currency string 币种(固定 CNY
status integer 钱包状态
status_text string 状态说明
resource_id integer 资产ID
resource_type string 资产类型iot_card / device
created_at string 创建时间
updated_at string 更新时间
# 2. 我的佣金概览 (放到首页)
## 接口说明
获取当前账号的**佣金整体情况**(可提现、冻结、累计等)。
- 请求方式GET
- 接口地址:`/api/admin/my/commission-summary`
- 认证方式Bearer Token
---
## 请求参数
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": {
"shop_id": 1,
"shop_name": "测试店铺",
"total_commission": 100000,
"available_commission": 50000,
"frozen_commission": 10000,
"unwithdraw_commission": 30000,
"withdrawing_commission": 10000,
"withdrawn_commission": 40000
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
字段说明
字段 类型 说明
shop_id integer 店铺ID
shop_name string 店铺名称
total_commission integer 累计佣金(分)
available_commission integer 可提现佣金(分)
frozen_commission integer 冻结佣金(分)
unwithdraw_commission integer 未提现佣金(分)
withdrawing_commission integer 提现中金额(分)
withdrawn_commission integer 已提现佣金(分)
# 3. 我的佣金明细 (放到佣金中心里面)
## 接口说明
获取当前账号的**佣金流水记录**(每一笔赚的钱)。
- 请求方式GET
- 接口地址:`/api/admin/my/commission-records`
- 认证方式Bearer Token
---
## 请求参数Query
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| page_size | integer | 否 | 每页数量最大100 |
| commission_source | string | 否 | 佣金来源 |
| iccid | string | 否 | ICCID模糊查询 |
| virtual_no | string | 否 | 设备虚拟号(模糊查询) |
| order_no | string | 否 | 订单号(模糊查询) |
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"page": 1,
"size": 10,
"total": 100
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
items 字段说明(佣金记录)
字段 类型 说明
id integer 记录ID
amount integer 佣金金额(分)
commission_source string 佣金来源
status integer 状态
status_name string 状态名称
order_id integer 订单ID
shop_id integer 店铺ID
created_at string 创建时间
佣金来源说明
值 含义
cost_diff 成本价差(赚差价)
one_time 一次性佣金
tier_bonus 梯度奖励(已废弃)
状态说明
状态 含义
1 已入账(有效收入)
2 已失效(不算钱)
# 4. 我的佣金统计(放到佣金中心里面)
## 接口说明
按时间范围统计**佣金收入情况**(总收入 + 分类占比)。
- 请求方式GET
- 接口地址:`/api/admin/my/commission-stats`
- 认证方式Bearer Token
---
## 请求参数Query
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| shop_id | integer | 否 | 店铺ID |
| start_time | string | 否 | 开始时间 |
| end_time | string | 否 | 结束时间 |
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": {
"total_amount": 100000,
"total_count": 50,
"cost_diff_amount": 60000,
"cost_diff_count": 30,
"cost_diff_percent": 600,
"one_time_amount": 40000,
"one_time_count": 20,
"one_time_percent": 400
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
字段说明
字段 类型 说明
total_amount integer 总佣金(分)
total_count integer 总笔数
cost_diff_amount integer 成本价差收入(分)
cost_diff_count integer 成本价差笔数
cost_diff_percent integer 成本价差占比(千分比)
one_time_amount integer 一次性佣金(分)
one_time_count integer 一次性佣金笔数
one_time_percent integer 一次性佣金占比(千分比)
特别说明
占比是千分比
600 = 60%
400 = 40%
# 5. 我的每日佣金统计 (放到首页)
## 接口说明
按天查看**佣金收入趋势**(每天赚了多少)。
- 请求方式GET
- 接口地址:`/api/admin/my/commission-daily-stats`
- 认证方式Bearer Token
---
## 请求参数Query
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| shop_id | integer | 否 | 店铺ID |
| start_date | string | 否 | 开始日期YYYY-MM-DD |
| end_date | string | 否 | 结束日期YYYY-MM-DD |
| days | integer | 否 | 查询天数默认30最大365 |
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": [
{
"date": "2026-03-01",
"total_amount": 1000,
"total_count": 5
},
{
"date": "2026-03-02",
"total_amount": 2000,
"total_count": 8
}
],
"timestamp": "2026-03-31T12:00:00Z"
}
```
字段说明
字段 类型 说明
date string 日期
total_amount integer 当日佣金(分)
total_count integer 当日笔数
使用场景
做折线图(收入趋势)
看哪天赚钱最多
分析增长情况
# 6. 发起提现申请 (放到提现管理里面)
## 接口说明
提交**佣金提现申请**(目前只支持支付宝)。
- 请求方式POST
- 接口地址:`/api/admin/my/withdrawal-requests`
- 认证方式Bearer Token
---
## 请求参数Body
```json
{
"account_name": "张三",
"account_number": "1234567890",
"amount": 10000,
"withdrawal_method": "alipay"
}
account_name string
account_number string
amount integer
withdrawal_method string alipay
{
"code": 0,
"msg": "success",
"data": {
"id": 1,
"withdrawal_no": "WD202603310001",
"amount": 10000,
"actual_amount": 9800,
"fee": 200,
"fee_rate": 200,
"status": 1,
"status_name": "审核中",
"created_at": "2026-03-31T12:00:00Z"
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
字段说明
字段 类型 说明
id integer 提现申请ID
withdrawal_no string 提现单号
amount integer 申请金额(分)
actual_amount integer 实际到账金额(分)
fee integer 手续费(分)
fee_rate integer 手续费率(基点)
status integer 状态
status_name string 状态名称
created_at string 申请时间
状态说明(常见)
状态 含义
1 审核中
2 已打款
3 已拒绝
计算说明
实际到账 = 提现金额 - 手续费
手续费 = amount × fee_rate
# 7. 我的提现记录(放到提现管理里面)
接口信息
接口地址GET /api/admin/my/withdrawal-requests
接口说明:获取当前用户的提现记录列表
认证方式Bearer Token
请求参数
参数名 类型 必填 说明
page integer 否 页码(>=1
page_size integer 否 每页数量1-100
status integer 否 状态1=待审批2=已通过3=已拒绝)
start_time string 否 开始时间
end_time string 否 结束时间
响应结构
{
"code": 0,
"msg": "success",
"timestamp": "2024-01-01T00:00:00Z",
"data": {
"items": [],
"page": 1,
"size": 10,
"total": 100
}
}
data 字段说明
字段 类型 说明
items array 提现列表
page integer 当前页
size integer 每页数量
total integer 总数
items 字段说明
字段 说明
id 提现ID
withdrawal_no 提现单号
applicant_name 申请人
amount 提现金额(分)
actual_amount 实际到账(分)
fee 手续费
fee_rate 手续费率
status 状态1待审 2通过 3拒绝 4到账
status_name 状态名称
withdrawal_method 提现方式(支付宝/微信/银行卡)
account_name 收款人
account_number 收款账号
bank_name 银行
created_at 申请时间
processed_at 处理时间
reject_reason 拒绝原因
remark 备注

427
docs/停复机.md Normal file
View File

@@ -0,0 +1,427 @@
# 设备停机
## 接口信息
- **页面**/asset-management/device-stop
- **按钮名称**:停机
- **权限编码**asset_device_stop
---
## URL
`POST /api/admin/assets/device/{device_id}/stop`
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| device_id | integer | 是 | 设备ID |
### Body 参数application/json
无请求体参数
---
## 响应说明
### Response 字段
| 字段 | 类型 | 说明 |
|------|------|------|
| code | integer | 响应码 |
| msg | string | 响应消息 |
| timestamp | string | 时间戳 |
| data | object | 返回数据 |
---
## data 字段(设备停机响应对象)
| 字段 | 类型 | 说明 |
|------|------|------|
| success_count | integer | 成功停机卡数 |
| fail_count | integer | 失败卡数 |
| skip_count | integer | 跳过卡数(未实名或已停机) |
| failed_items | array | 失败详情 |
---
## failed_items 字段(设备停机失败项对象)
| 字段 | 类型 | 说明 |
|------|------|------|
| iccid | string | 卡ICCID |
| reason | string | 失败原因 |
---
## 错误响应
| HTTP 状态码 | 说明 |
|------------|------|
| 400 | 请求参数错误 |
| 401 | 未认证或认证已过期 |
| 403 | 无权访问 |
| 500 | 服务器内部错误 |
---
## 请求示例
```
POST /api/admin/assets/device/12345/stop
```
---
## 响应示例
```json
{
"code": 0,
"msg": "success",
"timestamp": "2024-03-30T10:30:00Z",
"data": {
"success_count": 48,
"fail_count": 2,
"skip_count": 5,
"failed_items": [
{
"iccid": "8986001234567890123",
"reason": "网络连接失败"
},
{
"iccid": "8986001234567890124",
"reason": "设备状态异常"
}
]
}
}
```
---
## 使用说明
- **功能**:批量停机设备下所有已实名卡
- **保护期**设置1小时停机保护期
- **影响范围**:仅对已实名卡生效,未实名或已停机的卡会被跳过
- **返回结果**:详细统计停机成功、失败和跳过的卡数,以及失败原因
---
## 认证
- **认证方式**Bearer Token (JWT)
- **Header**`Authorization: Bearer <token>`
---
## API 分类
- **模块**:资产管理
- **状态**:已发布
---
## 服务器地址
- **测试环境**https://cmp-api.boss160.cn
# 设备复机
## 接口信息
- **页面**/asset-management/device
- **按钮名称**:设备复机
- **权限编码**asset_device_start
---
## URL
`POST /api/admin/assets/device/{device_id}/start`
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| device_id | integer | 是 | 设备ID |
### Body 参数
无请求 Body 参数
---
## 响应说明
### Response 字段
| 字段 | 类型 | 说明 |
|------|------|------|
| code | integer | 响应码 |
| msg | string | 响应消息 |
| timestamp | string | 时间戳 |
| data | object | 返回数据 |
---
## 错误响应
| HTTP 状态码 | 说明 |
|------------|------|
| 400 | 请求参数错误 |
| 401 | 未认证或认证已过期 |
| 403 | 无权访问 |
| 500 | 服务器内部错误 |
---
## 请求示例
```
POST /api/admin/assets/device/12345/start
```
---
## 响应示例
```json
{
"code": 0,
"msg": "success",
"timestamp": "2024-03-30T10:30:00Z",
"data": null
}
```
---
## 功能说明
- **复机对象**:批量复机设备下所有已实名卡
- **保护期**设置1小时复机保护期
---
## 认证
- **认证方式**Bearer Token (JWT)
- **Header**`Authorization: Bearer <token>`
---
## API 分类
- **模块**:资产管理
- **状态**:已发布
---
## 服务器地址
- **测试环境**https://cmp-api.boss160.cn
# 单卡停机
## 接口信息
- **页面**/asset-management/card
- **按钮名称**:单卡停机
- **权限编码**asset_card_stop
---
## URL
`POST /api/admin/assets/card/{iccid}/stop`
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| iccid | string | 是 | 卡ICCID |
### Body 参数
无请求 Body 参数
---
## 响应说明
### Response 字段
| 字段 | 类型 | 说明 |
|------|------|------|
| code | integer | 响应码 |
| msg | string | 响应消息 |
| timestamp | string | 时间戳 |
| data | object | 返回数据 |
---
## 错误响应
| HTTP 状态码 | 说明 |
|------------|------|
| 400 | 请求参数错误 |
| 401 | 未认证或认证已过期 |
| 403 | 无权访问 |
| 500 | 服务器内部错误 |
---
## 请求示例
```
POST /api/admin/assets/card/89860123456789012345/stop
```
---
## 响应示例
```json
{
"code": 0,
"msg": "success",
"timestamp": "2024-03-30T10:30:00Z",
"data": null
}
```
---
## 功能说明
- **操作对象**手动停机单张卡通过ICCID
- **约束条件**:受设备保护期约束
---
## 认证
- **认证方式**Bearer Token (JWT)
- **Header**`Authorization: Bearer <token>`
---
## API 分类
- **模块**:资产管理
- **状态**:已发布
---
## 服务器地址
- **测试环境**https://cmp-api.boss160.cn
# 单卡复机
## 接口信息
- **页面**/asset-management/card
- **按钮名称**:单卡复机
- **权限编码**asset_card_start
---
## URL
`POST /api/admin/assets/card/{iccid}/start`
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| iccid | string | 是 | 卡ICCID |
---
## 响应说明
### Response 字段
| 字段 | 类型 | 说明 |
|------|------|------|
| code | integer | 响应码 |
| msg | string | 响应消息 |
| timestamp | string | 时间戳 |
| data | object | 返回数据 |
---
## 错误响应
| HTTP 状态码 | 说明 |
|------------|------|
| 400 | 请求参数错误 |
| 401 | 未认证或认证已过期 |
| 403 | 无权访问 |
| 500 | 服务器内部错误 |
---
## 请求示例
```
POST /api/admin/assets/card/89860123456789012345/start
```
---
## 响应示例
```json
{
"code": 0,
"msg": "success",
"timestamp": "2024-03-30T10:30:00Z",
"data": {
"iccid": "89860123456789012345",
"status": "active"
}
}
```
---
## 认证
- **认证方式**Bearer Token (JWT)
- **Header**`Authorization: Bearer <token>`
---
## API 分类
- **模块**:资产管理
- **状态**:已发布
---
## 服务器地址
- **测试环境**https://cmp-api.boss160.cn

View File

@@ -0,0 +1,135 @@
# 单卡列表(未绑定设备)
## 接口说明
获取**未绑定设备的 IoT 卡列表**,支持分页和多条件筛选。
- 请求方式GET
- 接口地址:`/api/admin/iot-cards/standalone`
- 认证方式Bearer Token
---
## 请求参数Query
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| page_size | integer | 否 | 每页数量最大100 |
| status | integer | 否 | 状态1在库 / 2已分销 / 3已激活 / 4已停用 |
| carrier_id | integer | 否 | 运营商ID |
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"page": 1,
"size": 10,
"total": 100
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
items 字段说明(卡信息)
字段 类型 说明
id integer 卡ID
iccid string 卡号
imsi string IMSI
msisdn string 接入号
virtual_no string 虚拟号
status integer 卡状态
activation_status integer 激活状态
network_status integer 网络状态0停机 / 1开机
real_name_status integer 实名状态0未实名 / 1已实名
carrier_name string 运营商名称
carrier_type string 运营商类型
supplier string 供应商
batch_no string 批次号
series_name string 套餐系列
shop_name string 分销商
data_usage_mb integer 累计流量
current_month_usage_mb number 本月流量
accumulated_recharge integer 累计充值(分)
created_at string 创建时间
updated_at string 更新时间
# 设备列表
## 接口说明
获取设备列表,支持分页 + 多条件筛选(名称、状态、厂家等)。
- 请求方式GET
- 接口地址:`/api/admin/devices`
- 认证方式Bearer Token
---
## 请求参数Query
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| page_size | integer | 否 | 每页数量最大100 |
| virtual_no | string | 否 | 虚拟号(模糊查询) |
| device_name | string | 否 | 设备名称(模糊查询) |
| status | integer | 否 | 状态1在库 / 2已分销 / 3已激活 / 4已停用 |
---
## 返回结构
```json
{
"code": 0,
"msg": "success",
"data": {
"items": [],
"page": 1,
"size": 10,
"total": 100
},
"timestamp": "2026-03-31T12:00:00Z"
}
```
items 字段说明(设备信息)
字段 类型 说明
id integer 设备ID
device_name string 设备名称
device_model string 设备型号
device_type string 设备类型
manufacturer string 制造商
imei string 设备IMEI
sn string 序列号
virtual_no string 设备虚拟号
status integer 状态
status_name string 状态名称
online_status integer 在线状态0未知 / 1在线 / 2离线
bound_card_count integer 已绑定卡数量
max_sim_slots integer 最大插槽数
switch_mode string 切卡模式0自动 / 1手动
series_name string 套餐系列
shop_name string 所属店铺
software_version string 固件版本
accumulated_recharge integer 累计充值(分)
activated_at string 激活时间
last_online_time string 最后在线时间
created_at string 创建时间
updated_at string 更新时间
状态说明
设备状态 status
1在库
2已分销
3已激活
4已停用
在线状态 online_status
0未知
1在线
2离线

333
docs/资产详情.md Normal file
View File

@@ -0,0 +1,333 @@
# 资产套餐列表
## 接口信息
- **页面**/asset-management/packages
- **按钮名称**:套餐列表
- **权限编码**asset_packages_list
---
## URL
`GET /api/admin/assets/{asset_type}/{id}/packages`
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| asset_type | string | 是 | 资产类型card 或 device |
| id | integer | 是 | 资产ID |
### Query 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| page_size | integer | 否 | 每页条数默认50最大100 |
---
## 响应说明
### Response 字段
| 字段 | 类型 | 说明 |
|------|------|------|
| code | integer | 响应码 |
| msg | string | 响应消息 |
| timestamp | string | 时间戳 |
| data | object | 返回数据 |
---
## data 字段(资产套餐结果对象)
| 字段 | 类型 | 说明 |
|------|------|------|
| items | array | 套餐列表 |
| page | integer | 当前页码 |
| page_size | integer | 每页条数 |
| total | integer | 总条数 |
---
## items 字段(资产套餐响应对象)
| 字段 | 类型 | 说明 |
|------|------|------|
| package_id | integer | 套餐ID |
| package_name | string | 套餐名称 |
| package_type | string | 套餐类型formal/addon |
| status | integer | 状态0待生效 1生效中 2已用完 3已过期 4已失效 |
| status_name | string | 状态名称 |
| usage_type | string | 使用类型single_card/device |
| priority | integer | 优先级 |
| package_usage_id | integer | 套餐使用记录ID |
| master_usage_id | integer | 主套餐ID加油包时有值 |
| data_limit_mb | integer | 套餐真流量总量(MB) |
| data_usage_mb | integer | 已用真流量(MB) |
| virtual_limit_mb | integer | 套餐虚流量总量(MB)按virtual_ratio换算 |
| virtual_used_mb | number | 已用虚流量(MB)按virtual_ratio换算 |
| virtual_remain_mb | number | 剩余虚流量(MB)按virtual_ratio换算 |
| virtual_ratio | number | 虚流量比例(real/virtual) |
| created_at | string | 创建时间 |
| activated_at | string | 激活时间(待生效套餐为空) |
| expires_at | string | 到期时间(待生效套餐为空) |
---
## 错误响应
| HTTP 状态码 | 说明 |
|------------|------|
| 400 | 请求参数错误 |
| 401 | 未认证或认证已过期 |
| 403 | 无权访问 |
| 500 | 服务器内部错误 |
---
## 请求示例
```
GET /api/admin/assets/card/12345/packages?page=1&page_size=50
```
---
## 响应示例
```json
{
"code": 0,
"msg": "success",
"timestamp": "2024-03-30T10:30:00Z",
"data": {
"page": 1,
"page_size": 50,
"total": 5,
"items": [
{
"package_id": 101,
"package_name": "套餐A-10GB",
"package_type": "formal",
"status": 1,
"status_name": "生效中",
"usage_type": "single_card",
"priority": 1,
"package_usage_id": 1001,
"master_usage_id": null,
"data_limit_mb": 10240,
"data_usage_mb": 2560,
"virtual_limit_mb": 15360,
"virtual_used_mb": 3840,
"virtual_remain_mb": 11520,
"virtual_ratio": 1.5,
"created_at": "2024-01-15T08:00:00Z",
"activated_at": "2024-01-15T08:00:00Z",
"expires_at": "2024-04-15T08:00:00Z"
},
{
"package_id": 102,
"package_name": "加油包-2GB",
"package_type": "addon",
"status": 1,
"status_name": "生效中",
"usage_type": "single_card",
"priority": 2,
"package_usage_id": 1002,
"master_usage_id": 1001,
"data_limit_mb": 2048,
"data_usage_mb": 512,
"virtual_limit_mb": 3072,
"virtual_used_mb": 768,
"virtual_remain_mb": 2304,
"virtual_ratio": 1.5,
"created_at": "2024-03-01T10:00:00Z",
"activated_at": "2024-03-01T10:00:00Z",
"expires_at": "2024-03-31T23:59:59Z"
},
{
"package_id": 103,
"package_name": "套餐B-20GB",
"package_type": "formal",
"status": 0,
"status_name": "待生效",
"usage_type": "single_card",
"priority": 3,
"package_usage_id": 1003,
"master_usage_id": null,
"data_limit_mb": 20480,
"data_usage_mb": 0,
"virtual_limit_mb": 30720,
"virtual_used_mb": 0,
"virtual_remain_mb": 30720,
"virtual_ratio": 1.5,
"created_at": "2024-03-25T14:00:00Z",
"activated_at": null,
"expires_at": null
}
]
}
}
```
---
## 认证
- **认证方式**Bearer Token (JWT)
- **Header**`Authorization: Bearer <token>`
---
## API 分类
- **模块**:资产管理
- **状态**:已发布
---
## 服务器地址
- **测试环境**https://cmp-api.boss160.cn
# 当前生效套餐
## 接口信息
- **页面**/asset-management/current-package
- **按钮名称**:当前套餐
- **权限编码**asset_current_package
---
## URL
`GET /api/admin/assets/{asset_type}/{id}/current-package`
---
## 请求参数
### Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| asset_type | string | 是 | 资产类型card 或 device |
| id | integer | 是 | 资产ID |
---
## 响应说明
### Response 字段
| 字段 | 类型 | 说明 |
|------|------|------|
| code | integer | 响应码 |
| msg | string | 响应消息 |
| timestamp | string | 时间戳 |
| data | object | 返回数据 |
---
## data 字段(资产套餐响应对象)
| 字段 | 类型 | 说明 |
|------|------|------|
| package_id | integer | 套餐ID |
| package_name | string | 套餐名称 |
| package_type | string | 套餐类型formal/addon |
| status | integer | 状态0待生效 1生效中 2已用完 3已过期 4已失效 |
| status_name | string | 状态名称 |
| usage_type | string | 使用类型single_card/device |
| priority | integer | 优先级 |
| package_usage_id | integer | 套餐使用记录ID |
| master_usage_id | integer | 主套餐ID加油包时有值 |
| data_limit_mb | integer | 套餐真流量总量(MB) |
| data_usage_mb | integer | 已用真流量(MB) |
| virtual_limit_mb | integer | 套餐虚流量总量(MB)按virtual_ratio换算 |
| virtual_used_mb | number | 已用虚流量(MB)按virtual_ratio换算 |
| virtual_remain_mb | number | 剩余虚流量(MB)按virtual_ratio换算 |
| virtual_ratio | number | 虚流量比例(real/virtual) |
| created_at | string | 创建时间 |
| activated_at | string | 激活时间(待生效套餐为空) |
| expires_at | string | 到期时间(待生效套餐为空) |
---
## 错误响应
| HTTP 状态码 | 说明 |
|------------|------|
| 400 | 请求参数错误 |
| 401 | 未认证或认证已过期 |
| 403 | 无权访问 |
| 500 | 服务器内部错误 |
---
## 请求示例
```
GET /api/admin/assets/card/12345/current-package
```
---
## 响应示例
```json
{
"code": 0,
"msg": "success",
"timestamp": "2024-03-30T10:30:00Z",
"data": {
"package_id": 101,
"package_name": "套餐A-10GB",
"package_type": "formal",
"status": 1,
"status_name": "生效中",
"usage_type": "single_card",
"priority": 1,
"package_usage_id": 1001,
"master_usage_id": null,
"data_limit_mb": 10240,
"data_usage_mb": 2560,
"virtual_limit_mb": 15360,
"virtual_used_mb": 3840,
"virtual_remain_mb": 11520,
"virtual_ratio": 1.5,
"created_at": "2024-01-15T08:00:00Z",
"activated_at": "2024-01-15T08:00:00Z",
"expires_at": "2024-04-15T08:00:00Z"
}
}
```
---
## 认证
- **认证方式**Bearer Token (JWT)
- **Header**`Authorization: Bearer <token>`
---
## API 分类
- **模块**:资产管理
- **状态**:已发布
---
## 服务器地址
- **测试环境**https://cmp-api.boss160.cn