优化接口以及后台页面样式

This commit is contained in:
2026-03-31 15:37:32 +08:00
parent 2868899253
commit 520e950dc5
28 changed files with 1241 additions and 311 deletions

View File

@@ -0,0 +1,205 @@
# H5 积分商城接口文档(含流程说明)
> 面向H5活动页/积分商城前台)调用
> 基础路径:`/api/v1`
> 返回结构BuildAdmin 通用 `code/msg/time/data`(成功 `code=1`
---
## 1. 总体流程说明
### 1.1 流程 AH5 临时登录(推荐)
适用场景H5 只需要“用户名级别”的轻量登录,不依赖 PlayX 的 token。
1. H5 调用 `GET/POST /api/v1/temLogin?username=xxx` 获取 **商城 token**(类型 `muser`
2. H5 后续请求统一携带该 token推荐放在 Header`token: <muser_token>`,也可用参数 `token`
3. H5 调用:
- `GET /api/v1/mall/assets` 获取资产
- `POST /api/v1/mall/claim` 领取积分(幂等)
- `GET /api/v1/mall/items` 获取商品
- `POST /api/v1/mall/bonusRedeem` / `physicalRedeem` / `withdrawApply` 提交兑换/提现
- `GET /api/v1/mall/orders` 查询订单
- `GET/POST /api/v1/mall/address*` 管理地址addressList/addressAdd/addressEdit/addressDelete
### 1.2 流程 BPlayX token 换取 session兼容
适用场景H5 已经拿到了 PlayX 下发的 token希望换取商城侧 `session_id`
1. H5 调用 `POST /api/v1/mall/verifyToken`(传 `token``session`
2. 服务端返回 `data.session_id`
3. H5 后续请求携带 `session_id`(优先级高于 token
---
## 2. 身份与鉴权(重要)
以下接口都会通过服务端逻辑解析“当前资产主体”,优先级如下:
1. **`session_id`**GET/POST对应表 `mall_session`,未过期则可映射到资产主体
2. **`token`**GET/POST 或 Header支持会员 token 或 `muser` tokenH5 临时登录签发)
3. **`user_id`**GET/POST
- 纯数字:视为 `mall_user_asset.id`
- 非纯数字:按 `mall_user_asset.playx_user_id` 查找
推荐做法:
- H5 统一只用 **Header `token`**(值为 `muser` token避免 URL 泄露与参数歧义。
---
## 3. 接口列表H5 常用)
### 3.1 H5 临时登录
**GET/POST** ` /api/v1/temLogin `
参数:
- `username`:必填,用户名(字符串)
成功返回 `data.userInfo`
- `id`:资产主键(`mall_user_asset.id`
- `username`:用户名
- `playx_user_id`:映射的 PlayX 用户标识(字符串)
- `token`**muser token**(后续请求使用)
- `refresh_token`:刷新 token当前前端未强依赖可不接
- `expires_in`:秒
示例:
```bash
curl "https://{域名}/api/v1/temLogin?username=test001"
```
---
### 3.2 资产查询
**GET** ` /api/v1/mall/assets `
鉴权:携带 `token``session_id``user_id`
成功返回 `data`
- `locked_points`:待领取积分
- `available_points`:可用积分
- `today_limit`:今日可领取上限
- `today_claimed`:今日已领取
- `withdrawable_cash`:可提现现金(积分按配置比例换算)
---
### 3.3 领取积分(幂等)
**POST** ` /api/v1/mall/claim `
参数:
- `claim_request_id`:必填,幂等键(建议:`{业务前缀}_{assetId}_{毫秒时间戳}`
- 身份参数:`token` / `session_id` / `user_id` 三选一(推荐 `token`
说明:
- 同一个 `claim_request_id` 重复提交会直接返回成功(不会重复入账)
- 会受 `today_limit/today_claimed/locked_points` 限制
---
### 3.4 商品列表
**GET** ` /api/v1/mall/items `
参数:
- `type`:可选,`BONUS | PHYSICAL | WITHDRAW`
---
### 3.5 红利兑换(提交订单)
**POST** ` /api/v1/mall/bonusRedeem `
参数:
- `item_id`:必填
- 身份参数:`token` / `session_id` / `user_id`
返回:
- `data.order_id`
- `data.status`(通常 `PENDING`
---
### 3.6 实物兑换(提交订单)
**POST** ` /api/v1/mall/physicalRedeem `
参数:
- `item_id`:必填
- `address_id`:必填,收货地址主键(`mall_address.id`,须为当前用户资产下地址)
- 身份参数:`token` / `session_id` / `user_id`
说明:服务端会将该地址在下单时刻的 **收货人 / 电话 / 完整地址** 写入订单字段(快照),并写入 `mall_order.mall_address_id` 关联所选地址。
---
### 3.7 提现申请(提交订单)
**POST** ` /api/v1/mall/withdrawApply `
参数:
- `item_id`:必填
- 身份参数:`token` / `session_id` / `user_id`
---
### 3.8 订单列表
**GET** ` /api/v1/mall/orders `
鉴权:`token` / `session_id` / `user_id`
说明:
- 返回最多 100 条
- 订单里包含 `mallItem`(商品信息)
---
## 4. 地址管理H5
> 地址与资产主体通过 `playx_user_asset_id` 关联(即 `mall_user_asset.id`)。
### 4.1 地址列表
**GET** ` /api/v1/mall/addressList `
### 4.2 新增地址
**POST** ` /api/v1/mall/addressAdd `
Body 含 `receiver_name`(收货人,建议填写;实物兑换下单快照需要非空的收货人、电话与拼接后的完整地址)。
### 4.3 编辑地址
**POST** ` /api/v1/mall/addressEdit `
### 4.4 删除地址
**POST** ` /api/v1/mall/addressDelete `
---
## 5. session 换取(可选)
### 5.1 token 换 session
**POST** ` /api/v1/mall/verifyToken `
参数(二选一):
- `token`
- `session`
成功返回:
- `data.session_id`
- `data.user_id`
- `data.username`
- `data.token_expire_at`
---
## 6. 常见错误与排查
- **401 登录态过期**token/session 过期或不匹配;请重新 `temLogin` 或重新 `verifyToken`
- **提示缺少必填字段**:按各接口参数补齐(如 `claim_request_id``item_id``address_id`(实物)、地址中收货人/电话/完整地址等)
- **积分不足/无可领取积分**`locked_points<=0` 或已达 `today_limit`