This commit is contained in:
2025-10-09 19:45:14 +08:00
parent e6ced14040
commit 2a93522bcf
15 changed files with 2158 additions and 1 deletions

View File

@@ -0,0 +1,315 @@
# 线报批量发品功能说明
## 功能概述
线报批量发品功能允许用户通过输入框输入线报消息自动解析出商品信息然后批量发品到多个ERP账号并支持延迟自动上架。
## 主要特性
### 1. 智能解析
- 支持从线报消息中自动识别京东商品链接
- 支持多种链接格式item.jd.com、u.jd.com短链接等
- 自动提取SKUID并查询商品详情
- 获取商品名称、价格、图片、店铺等信息
### 2. 批量选择
- 可视化商品列表,支持全选/反选
- 展示商品图片、名称、价格、佣金等信息
- 灵活选择需要发品的商品
### 3. 多账号发品
- 支持同时选择多个ERP账号胡歌、刘强东等
- 每个商品会发送到所有选中的账号
- 自动生成商家编码,避免重复
### 4. 通用参数设置
- 支持统一设置:会员名、省市区、商品类型、行业类型、类目等
- 支持设置邮费、库存、成色、服务支持等
- 一次设置,应用到所有商品
### 5. 延迟队列上架
- 发品成功后自动加入延迟队列
- 可自定义延迟时间1-60秒
- 到时后自动调用上架接口
### 6. 进度跟踪
- 实时显示发品进度
- 展示每个商品在每个账号的发品状态
- 记录成功数、失败数、错误信息
### 7. 历史记录
- 保存所有批量发品任务记录
- 支持查看任务详情和发品明细
- 可追溯每个商品的发品结果
## 使用流程
### 第一步:输入线报消息
在输入框中粘贴线报消息,支持以下格式:
```
【京东】某某商品
https://item.jd.com/100012345678.html
原价999元
...
【京东】另一个商品
https://u.jd.com/xxxxx
到手价199元
...
```
点击"解析商品"按钮,系统会自动提取商品链接并查询详情。
### 第二步:选择商品
- 系统展示解析出的商品列表
- 勾选需要发品的商品(支持全选)
- 查看商品信息确认无误
- 点击"下一步"
### 第三步:设置参数
#### 3.1 基本设置
- **任务名称**(选填):为本次批量发品任务命名
- **延迟上架**设置发品成功后延迟多少秒自动上架默认3秒
#### 3.2 目标账号
- 选择一个或多个ERP账号支持多选
- 每个商品将发送到所有选中的账号
#### 3.3 通用参数
- **会员名**:闲鱼会员名(必填)
- **省市区**:发货地址代码(必填)
- **商品类型**:普通商品/已验货/验货宝等(必填)
- **行业类型**:手机/家电/数码等(必填)
- **类目ID**商品类目ID必填
- **邮费**:邮费金额(元,必填)
- **库存**:库存数量(必填)
- **成色**:全新/99新等选填
- **服务支持**:七天无理由退货等(选填)
点击"开始批量发品"提交任务。
### 第四步:查看进度
- 系统创建批量发品任务
- 实时展示发品进度条
- 显示每个商品在每个账号的发品状态
- 发品成功的商品会自动加入延迟队列等待上架
## 数据库表结构
### batch_publish_task批量发品任务表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | bigint | 任务ID |
| task_name | varchar(200) | 任务名称 |
| original_message | text | 原始线报消息 |
| total_products | int | 解析出的商品数量 |
| selected_products | int | 选中的商品数量 |
| target_accounts | varchar(500) | 目标ERP账号JSON |
| status | int | 任务状态0待处理 1处理中 2已完成 3失败 |
| success_count | int | 成功发品数量 |
| fail_count | int | 失败发品数量 |
| common_params | text | 通用参数JSON |
| create_user_id | bigint | 创建人ID |
| create_user_name | varchar(100) | 创建人姓名 |
| create_time | datetime | 创建时间 |
| complete_time | datetime | 完成时间 |
### batch_publish_item批量发品明细表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | bigint | 明细ID |
| task_id | bigint | 任务ID |
| skuid | varchar(100) | SKUID |
| product_name | varchar(500) | 商品名称 |
| target_account | varchar(100) | 目标ERP账号 |
| account_remark | varchar(100) | 账号备注名 |
| status | int | 发品状态0待发布 1发布中 2发布成功 3发布失败 4上架中 5已上架 6上架失败 |
| product_id | bigint | ERP商品ID |
| product_status | int | 商品状态 |
| outer_id | varchar(100) | 商家编码 |
| publish_price | bigint | 发品价格(分) |
| error_message | varchar(1000) | 失败原因 |
| publish_time | datetime | 上架时间 |
| delay_seconds | int | 延迟上架时间(秒) |
| create_time | datetime | 创建时间 |
## API接口
### 1. 解析线报消息
```
POST /jarvis/batchPublish/parse
Content-Type: application/json
{
"message": "线报消息内容"
}
返回:
{
"code": 200,
"msg": "操作成功",
"data": [
{
"skuid": "100012345678",
"productName": "商品名称",
"price": 199.0,
"productImage": "http://...",
"shopName": "店铺名称",
"shopId": "12345",
"commissionInfo": "10%"
}
]
}
```
### 2. 批量发品
```
POST /jarvis/batchPublish/publish
Content-Type: application/json
{
"taskName": "任务名称",
"originalMessage": "原始消息",
"products": [
{
"skuid": "100012345678",
"productName": "商品名称",
"price": 199.0
}
],
"targetAccounts": ["1016208368633221", "1206879680251333"],
"delaySeconds": 3,
"commonParams": {
"userName": "会员名",
"province": 110000,
"city": 110100,
"district": 110101,
"itemBizType": 2,
"spBizType": 3,
"channelCatId": "12345",
"expressFee": 0.0,
"stock": 1,
"stuffStatus": 100
}
}
返回:
{
"code": 200,
"msg": "任务已创建",
"data": 123 // 任务ID
}
```
### 3. 查询任务列表
```
GET /jarvis/batchPublish/task/list?pageNum=1&pageSize=10
返回:
{
"code": 200,
"msg": "查询成功",
"rows": [...],
"total": 10
}
```
### 4. 查询任务详情
```
GET /jarvis/batchPublish/task/{taskId}
返回任务详细信息
```
### 5. 查询任务明细
```
GET /jarvis/batchPublish/item/list/{taskId}
返回任务所有发品明细
```
## 状态说明
### 任务状态
- 0待处理
- 1处理中
- 2已完成
- 3失败
### 发品状态
- 0待发布
- 1发布中
- 2发布成功
- 3发布失败
- 4上架中
- 5已上架
- 6上架失败
## 技术实现
### 后端
- **解析工具**LineReportParser - 正则表达式提取链接和SKUID
- **Service**BatchPublishServiceImpl - 核心业务逻辑
- **异步任务**@Async注解 + CompletableFuture实现延迟队列
- **数据库**MyBatis + MySQL存储任务和明细
### 前端
- **框架**Vue 2 + Element UI
- **步骤条**el-steps实现4步向导
- **实时刷新**:定时器轮询任务状态
- **组件**:表格、表单、对话框等
## 注意事项
1. **线报消息格式**:尽量包含完整的京东商品链接,便于准确识别
2. **价格获取**价格从京东API实时查询可能与线报价格有差异
3. **账号限制**请确保ERP账号有足够的发品额度
4. **延迟上架**建议设置3-5秒延迟避免频繁操作
5. **参数设置**:通用参数会应用到所有商品,请仔细核对
6. **批量操作**:大批量发品时请分批进行,避免超时
## 常见问题
### Q1: 解析不到商品怎么办?
A: 确保线报消息中包含完整的京东商品链接https://item.jd.com/xxxxx.html
### Q2: 发品失败是什么原因?
A: 可能原因:账号额度不足、商品信息不完整、网络异常等,查看错误信息了解详情
### Q3: 可以同时发多少个商品?
A: 理论上无限制但建议每次不超过50个商品避免超时
### Q4: 延迟上架的作用是什么?
A: 避免频繁操作触发平台限制,给系统缓冲时间
### Q5: 如何查看历史记录?
A: 点击页面右上角的"历史记录"按钮,可以查看所有批量发品任务
## 未来优化方向
1. [ ] 集成实际的发品接口(目前为模拟)
2. [ ] 支持商品价格批量调整
3. [ ] 支持文案自动生成
4. [ ] 支持图片批量处理
5. [ ] 支持发品模板保存
6. [ ] 支持定时发品
7. [ ] 支持发品失败自动重试
8. [ ] 支持发品结果通知(钉钉/企微)
## 更新日志
### v1.0.0 (2025-01-10)
- ✅ 初始版本
- ✅ 实现线报消息解析
- ✅ 实现批量发品
- ✅ 实现延迟队列上架
- ✅ 实现多账号支持
- ✅ 实现历史记录查询