param('page', 1); $limit = (int)$request->param('limit', 20); $keyword = $request->param('keyword', ''); $categoryId = $request->param('categoryId', ''); $minPrice = $request->param('minPrice', ''); $maxPrice = $request->param('maxPrice', ''); $sort = $request->param('sort', ''); $params = [ 'page' => max(1, $page), 'limit' => min(max(1, $limit), 50), ]; if (!empty($keyword)) { $params['keyword'] = $keyword; } if (!empty($categoryId)) { $params['categoryId'] = (int)$categoryId; } if ($minPrice !== '' && $minPrice > 0) { $params['minPrice'] = (float)$minPrice; } if ($maxPrice !== '' && $maxPrice > 0) { $params['maxPrice'] = (float)$maxPrice; } if (!empty($sort)) { $params['sort'] = $sort; } $result = $productService->searchProducts($params); if ($result === false) { return app('json')->fail('获取1688商品列表失败,请查看日志'); } return app('json')->success($result); } /** * 获取1688分销商品详情 * * @param ProductService $productService * @return mixed * * @api {GET} /admin/alibaba/goods/detail 获取商品详情 * @apiParam {string} [access_token] 1688 access_token(不传则使用配置中的默认token) * @apiParam {int} productId 1688商品ID(必填) */ public function detail(ProductService $productService) { $request = app('request'); $productId = $request->param('productId', ''); if (empty($productId)) { return app('json')->fail('参数错误:productId不能为空'); } $result = $productService->getProductDetail($productId); if ($result === false) { return app('json')->fail('获取1688商品详情失败,请查看日志'); } return app('json')->success($result); } /** * 批量导入1688商品到 alibaba_import_goods 表 * * 业务场景:从1688商品列表中选择多个商品,一键入库 * 商品详情以JSON格式完整存储到 alibaba_import_goods 表 * * @param ProductService $productService * @return mixed * * @api {POST} /admin/alibaba/goods/import 批量入库 * @apiParam {string} productIds 1688商品ID(必填),多个用逗号分隔,如:787533862434 或 787533862434,787533862435 */ public function import(ProductService $productService) { $request = app('request'); $raw = $request->param('productIds', ''); // 参数校验 if (empty($raw)) { return app('json')->fail('参数错误:productIds不能为空'); } // 解析productIds:支持 "787533862434" 或 "787533862434,787533862435" $productIds = explode(',', str_replace(' ', '', $raw)); $productIds = array_unique(array_filter($productIds, function ($v) { return $v !== '' && $v !== null; })); if (empty($productIds)) { return app('json')->fail('参数错误:productIds格式不正确'); } // 执行批量入库 $result = $productService->batchImport($productIds, 0); $successCount = count($result['success']); $failCount = count($result['fail']); if ($successCount > 0) { return app('json')->success([ 'success' => $result['success'], 'fail' => $result['fail'], 'success_count' => $successCount, 'fail_count' => $failCount, 'message' => "成功入库 {$successCount} 个商品" . ($failCount > 0 ? ",{$failCount} 个失败" : ''), ]); } return app('json')->fail('入库失败:' . implode('; ', array_values($result['fail']))); } /** * 获取1688商品类目列表 * * API: com.alibaba.product:alibaba.category.get-1 * 文档: https://open.1688.com/api/apidocdetail.htm?id=com.alibaba.product%3Aalibaba.category.get-1 * * @param ProductService $productService * @return mixed * * @api {GET} /admin/alibaba/goods/category 获取商品类目 * @apiParam {string} [access_token] 1688 access_token(不传则使用配置中的默认token) * @apiParam {int} [categoryId=0] 类目ID,顶级类目传0 */ public function category(ProductService $productService) { $request = app('request'); $categoryId = (int)$request->param('categoryId', 0); $result = $productService->getCategories($categoryId); if ($result === false) { return app('json')->fail('获取1688商品类目失败,请查看日志!'); } return app('json')->success($result); } }