# 增加聚水潭商品按时间范围同步功能 Spec ## Why 当前系统仅支持通过手动输入 SPU 编码列表的方式来同步聚水潭商品。在实际运营中,管理员往往需要批量同步某段时间内(如今天、本周)在聚水潭中新增或修改的商品。增加按时间范围同步的功能可以大大提升操作效率,避免遗漏。 ## What Changes - 在后台路由配置文件中新增 `sync_jst_product_by_time` 路由。 - 在 `StoreProduct` 控制器中新增 `sync_jst_product_by_time` 方法,用于接收 `start_time`、`end_time` 和 `sync` 参数,并分发同步任务。 - 在 `HaichaoJstServices` 服务类中新增 `getProductListByTime` 方法,封装调用聚水潭 `open/mall/item/query` 接口的时间范围查询逻辑。 - 在 `ProductSyncErp` 任务类中新增 `productFromErpByTime` 方法,支持按页拉取时间范围内的商品。 - **重构**: 将 `ProductSyncErp::productFromErp` 中核心的商品数据转换和保存逻辑抽离为 `doProcessProductList` 方法,以便按 SPU 同步和按时间同步复用相同的处理逻辑。 ## Impact - Affected specs: 聚水潭商品手动同步功能。 - Affected code: - `route/admin.php` - `app/controller/admin/v1/product/StoreProduct.php` - `app/haichao/HaichaoJstServices.php` - `app/jobs/product/ProductSyncErp.php` ## ADDED Requirements ### Requirement: 按时间范围同步商品 系统 SHALL 提供一个接口,允许管理员传入开始时间和结束时间,自动拉取聚水潭在该时间范围内修改过的商品,并同步到商城系统中。 #### Scenario: 成功发起异步同步任务 - **WHEN** 管理员调用 `/adminapi/product/sync_jst_product_by_time` 接口,传入有效的 `start_time` 和 `end_time`,且 `sync=0` - **THEN** 系统返回成功响应,并在后台队列中创建对应的同步任务,按页拉取并更新商品数据。 ## MODIFIED Requirements ### Requirement: 重构商品同步核心逻辑 为了避免代码重复,现有的按 SPU 同步商品的逻辑 SHALL 被重构。商品数据的映射、价格计算、SKU 组装和入库逻辑 SHALL 抽取为独立的内部方法,供所有同步入口调用。