Initial commit: workspace files including MEMORY.md, skills, and core configs
This commit is contained in:
146
skills/irun-yidianhuo/product-suite.md
Normal file
146
skills/irun-yidianhuo/product-suite.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# 商品搜索接口(新版)
|
||||
|
||||
> 用于通过商品名称或编码查询商品关键信息,是创建订单的前置步骤。
|
||||
|
||||
## 认证流程
|
||||
|
||||
### 第一步:登录获取 JWT
|
||||
|
||||
```
|
||||
POST https://accounts.77ircloud.com/api/v2/accounts/login
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**请求体:**
|
||||
```json
|
||||
{
|
||||
"userName": "112983083",
|
||||
"password": "77ircloud",
|
||||
"loginServerType": 4
|
||||
}
|
||||
```
|
||||
|
||||
**返回的 jwtToken 即为 authorization 值:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"data": {
|
||||
"jwtToken": "eyJhbGci...",
|
||||
"expires_in": 604800000
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 第二步:带 JWT 请求商品接口
|
||||
|
||||
请求头:
|
||||
- `authorization`: `{jwtToken}` — **注意:没有 Bearer 前缀**
|
||||
- `x-exclude-login-mutex`: `77ircloud` — 固定值
|
||||
|
||||
## 商品搜索
|
||||
|
||||
```
|
||||
GET https://suite.77ircloud.com/product-aggregation/v1/products?pageSize=30¤tPage=1&queryTag=true&queryInventories=true&loadSortingTag=true&loadSortingTagName=true&q={关键词}
|
||||
```
|
||||
|
||||
**参数说明:**
|
||||
|
||||
| 参数 | 必填 | 说明 |
|
||||
|------|------|------|
|
||||
| `q` | ✅ | 搜索关键词(商品名称或商品编码) |
|
||||
| `pageSize` | ✅ | 每页数量 |
|
||||
| `currentPage` | ✅ | 页码(从1开始) |
|
||||
| `queryTag` | 可选 | 是否查询标签 |
|
||||
| `queryInventories` | 可选 | 是否查询库存 |
|
||||
| `loadSortingTag` | 可选 | 是否查询分拣标签 |
|
||||
| `loadSortingTagName` | 可选 | 是否查询分拣标签名称 |
|
||||
|
||||
**返回示例:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"data": {
|
||||
"totalCount": 4,
|
||||
"currentPage": 1,
|
||||
"pageSize": 30,
|
||||
"items": [
|
||||
{
|
||||
"name": "嘉吉尚选霸王鸡肉条1kg",
|
||||
"skuId": 2116793372668192,
|
||||
"multiUnitId": 2116793372668193,
|
||||
"unitName": "包",
|
||||
"basePrice": 18.9,
|
||||
"availableAmount": 1035.0,
|
||||
"specJson": "{\"规格\":\"包=约33片/包、件=1kg*10包\"}",
|
||||
"code": "165-009-00068",
|
||||
"levelPrices": [
|
||||
{"index": 1, "price": 18.9},
|
||||
{"index": 2, "price": 18.0},
|
||||
{"index": 3, "price": 19.5},
|
||||
{"index": 4, "price": 18.5}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 关键字段说明
|
||||
|
||||
| 字段 | 说明 | 用途 |
|
||||
|------|------|------|
|
||||
| `skuId` | 商品SKU ID | 下单时用 `productSku` |
|
||||
| `multiUnitId` | 单位ID | 下单时用 `unitId` |
|
||||
| `unitName` | 单位名称(如"包") | 展示用 |
|
||||
| `basePrice` | 参考单价 | 填写 `salePrice` 和 `originalPrice` |
|
||||
| `availableAmount` | 当前可用库存 | 判断是否充足 |
|
||||
|
||||
## 完整调用示例
|
||||
|
||||
```python
|
||||
import urllib.request, json, urllib.parse
|
||||
|
||||
# Step 1: 登录获取 JWT
|
||||
login_data = json.dumps({
|
||||
"userName": "112983083",
|
||||
"password": "77ircloud",
|
||||
"loginServerType": 4
|
||||
}).encode()
|
||||
|
||||
login_req = urllib.request.Request(
|
||||
"https://accounts.77ircloud.com/api/v2/accounts/login",
|
||||
data=login_data,
|
||||
headers={"Content-Type": "application/json"},
|
||||
method="POST"
|
||||
)
|
||||
|
||||
with urllib.request.urlopen(login_req, timeout=10) as resp:
|
||||
jwt = json.loads(resp.read())['data']['jwtToken']
|
||||
|
||||
# Step 2: 搜索商品
|
||||
keyword = "嘉吉尚选霸王鸡肉条"
|
||||
q = urllib.parse.quote(keyword)
|
||||
url = f"https://suite.77ircloud.com/product-aggregation/v1/products?pageSize=30¤tPage=1&queryTag=true&queryInventories=true&loadSortingTag=true&loadSortingTagName=true&q={q}"
|
||||
|
||||
search_req = urllib.request.Request(url, headers={
|
||||
"authorization": jwt,
|
||||
"x-exclude-login-mutex": "77ircloud"
|
||||
})
|
||||
|
||||
with urllib.request.urlopen(search_req, timeout=15) as resp:
|
||||
data = json.loads(resp.read())
|
||||
items = data.get('data', {}).get('items', [])
|
||||
for item in items:
|
||||
print(f"商品: {item['name']}")
|
||||
print(f" skuId: {item['skuId']}")
|
||||
print(f" multiUnitId: {item['multiUnitId']}")
|
||||
print(f" 单位: {item['unitName']}")
|
||||
print(f" 库存: {item['availableAmount']}")
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **每次查询都需要重新登录获取 JWT**(有效期约7天)
|
||||
2. **authorization 没有 Bearer 前缀**,直接写 JWT 字符串
|
||||
3. **搜索关键词用 URL 编码**,中文需要 encode
|
||||
4. **搜索结果可能为空**,可尝试不同的关键词组合(如品牌名、商品简称等)
|
||||
Reference in New Issue
Block a user