# 线报批量发品功能说明 ## 功能概述 线报批量发品功能允许用户通过输入框输入线报消息,自动解析出商品信息,然后批量发品到多个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) - ✅ 初始版本 - ✅ 实现线报消息解析 - ✅ 实现批量发品 - ✅ 实现延迟队列上架 - ✅ 实现多账号支持 - ✅ 实现历史记录查询