Files
xin-procurement/docs/api/mini-special.md
T
2026-08-31 22:21:59 +08:00

147 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 小程序接口文档:特价推荐
> 小程序首页「特价推荐」商品区:后台在「客户端配置 → 特价推荐」批量选择商品标记为推荐,
> 小程序端通过本接口分页获取推荐商品列表。
>
> 推荐仅标记商品、不设特价字段:**价格按登录门店的客户等级价展示**(售价 = 成本价 × (100 + 等级上浮比例) / 100),
> 与 `/mini/product/list` 价格口径一致。
## 通用约定
| 项 | 值 |
|---|---|
| 鉴权 | 免登录;携带门店 token(`Authorization: Bearer <token>`,登录见 `/mini/auth/login`)时返回等级价与购物车数量 |
| 响应格式 | `{ "success": true|false, "data": {...}, "msg": "..." }` |
| 金额单位 | 元,字符串两位小数(如 `26.00` |
---
## 1. 特价推荐商品列表
| 项 | 值 |
|---|---|
| 请求方式 | `GET` |
| 路径 | `/mini/special/list` |
| 鉴权 | 无(可带门店 token) |
### 请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `page` | int | 否 | 页码,默认 1 |
| `pageSize` | int | 否 | 每页条数,默认 10 |
### 行为说明
- 仅返回「状态正常」且商品「已上架」的推荐,按推荐排序 `sort` 升序(越小越靠前);
- 行结构与 `/mini/product/list` 完全一致:商品基础字段 + `price` + `cart_id` / `cart_quantity`
- 未登录 / 门店未设客户等级时 `price = null`,前端应引导登录后查看价格;
- `cost_price`(成本价)属于商业敏感字段,任何情况下都不会输出;
- `data.cart` 为购物车悬浮球汇总,未登录返回零值结构。
### 响应示例
```json
{
"success": true,
"msg": "ok",
"data": {
"current_page": 1,
"per_page": 10,
"total": 2,
"data": [
{
"id": 15,
"category_id": 2,
"name": "西红柿",
"spec": "约5斤/份",
"unit": "斤",
"price_unit": "元/斤",
"market": "新发地",
"image_ids": "321,322",
"images_arr": [
{ "id": 321, "preview_url": "https://example.com/storage/xxx.jpg" }
],
"status": 1,
"sort": 0,
"price": "3.50",
"cart_id": 88,
"cart_quantity": "2.00"
},
{
"id": 23,
"category_id": 3,
"name": "麒麟西瓜",
"spec": "约8斤/个",
"unit": "个",
"price_unit": "元/个",
"market": "岳各庄",
"image_ids": "340",
"images_arr": [
{ "id": 340, "preview_url": "https://example.com/storage/yyy.jpg" }
],
"status": 1,
"sort": 1,
"price": "26.00",
"cart_id": 0,
"cart_quantity": "0.00"
}
],
"cart": {
"count": 2,
"quantity": "2.00",
"amount": "7.00"
}
}
}
```
### 字段说明
| 字段 | 说明 |
|---|---|
| `id` | 商品 ID,点击跳转商品详情 `/mini/product/{id}` |
| `price` | 当前登录门店的等级售价;未登录 / 未设等级为 `null` |
| `cart_id` | 该商品在当前门店购物车中的行 ID(0 = 不在购物车),列表直接加减购物车用 |
| `cart_quantity` | 购物车中该商品数量(不在购物车为 `"0.00"` |
| `cart` | 购物车悬浮球汇总:`count` 行数 / `quantity` 总数量 / `amount` 总金额(元) |
### 小程序端调用示例
```js
// 首页特价推荐区(带上拉加载更多)
Page({
data: { specials: [], page: 1, hasMore: true },
async loadSpecials() {
const res = await request.get('/mini/special/list', {
page: this.data.page,
pageSize: 10,
});
const { data: rows, total } = res.data;
this.setData({
specials: this.data.page === 1 ? rows : [...this.data.specials, ...rows],
hasMore: this.data.specials.length + rows.length < total,
});
},
onReachBottom() {
if (!this.data.hasMore) return;
this.setData({ page: this.data.page + 1 });
this.loadSpecials();
},
});
```
---
## 后台配置入口
PC 后台「客户端配置 → 特价推荐」:
| 操作 | 说明 |
|---|---|
| 添加商品 | 按商品名称搜索(仅上架商品可选),支持一次多选批量添加;已在推荐中的商品自动跳过 |
| 批量删除 | 勾选后批量移除推荐(不影响商品档案本身) |
| 编辑 | 仅可调整排序与状态(正常/停用) |