Goods.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace app\controller\admin\alibaba;
  3. use app\services\ThirdParty\AlibabaAgent\ProductService;
  4. /**
  5. * 1688分销严选 - 商品管理
  6. *
  7. * API文档:
  8. * 商品列表: https://open.1688.com/api/apidocdetail.htm?id=com.alibaba.fenxiao%3Ajxhy.product.getPageList-1
  9. * 商品详情: https://open.1688.com/api/apidocdetail.htm?id=com.alibaba.fenxiao%3Aalibaba.fenxiao.productInfo.get-1
  10. */
  11. class Goods
  12. {
  13. /**
  14. * 获取1688分销商品分页列表
  15. *
  16. * @param ProductService $productService
  17. * @return \think\response\Json
  18. *
  19. * @api {GET} /admin/alibaba/goods/lst 获取商品列表
  20. * @apiParam {string} [access_token] 1688 access_token(不传则使用配置中的默认token)
  21. * @apiParam {int} [page=1] 页码
  22. * @apiParam {int} [limit=20] 每页条数(最大50)
  23. * @apiParam {string} [keyword] 关键词搜索
  24. * @apiParam {int} [categoryId] 类目ID
  25. * @apiParam {number} [minPrice] 最低价格
  26. * @apiParam {number} [maxPrice] 最高价格
  27. * @apiParam {string} [sort] 排序方式
  28. */
  29. public function lst(ProductService $productService)
  30. {
  31. $request = app('request');
  32. // 获取请求参数
  33. $page = (int)$request->param('page', 1);
  34. $limit = (int)$request->param('limit', 20);
  35. $keyword = $request->param('keyword', '');
  36. $categoryId = $request->param('categoryId', '');
  37. $minPrice = $request->param('minPrice', '');
  38. $maxPrice = $request->param('maxPrice', '');
  39. $sort = $request->param('sort', '');
  40. // 构建搜索参数
  41. $params = [
  42. 'page' => max(1, $page),
  43. 'limit' => min(max(1, $limit), 50),
  44. ];
  45. if (!empty($keyword)) {
  46. $params['keyword'] = $keyword;
  47. }
  48. if (!empty($categoryId)) {
  49. $params['categoryId'] = (int)$categoryId;
  50. }
  51. if ($minPrice !== '' && $minPrice > 0) {
  52. $params['minPrice'] = (float)$minPrice;
  53. }
  54. if ($maxPrice !== '' && $maxPrice > 0) {
  55. $params['maxPrice'] = (float)$maxPrice;
  56. }
  57. if (!empty($sort)) {
  58. $params['sort'] = $sort;
  59. }
  60. // 调用1688 API获取商品列表
  61. $result = $productService->searchProducts($params);
  62. if ($result === false) {
  63. return app('json')->fail('获取1688商品列表失败,请查看日志');
  64. }
  65. return app('json')->success($result);
  66. }
  67. /**
  68. * 获取1688分销商品详情
  69. *
  70. * @param ProductService $productService
  71. * @return \think\response\Json
  72. *
  73. * @api {GET} /admin/alibaba/goods/detail 获取商品详情
  74. * @apiParam {string} [access_token] 1688 access_token(不传则使用配置中的默认token)
  75. * @apiParam {int} productId 1688商品ID(必填)
  76. */
  77. public function detail(ProductService $productService)
  78. {
  79. $request = app('request');
  80. $productId = $request->param('productId', '');
  81. if (empty($productId)) {
  82. return app('json')->fail('参数错误:productId不能为空');
  83. }
  84. // 调用1688 API获取商品详情
  85. $result = $productService->getProductDetail($productId);
  86. if ($result === false) {
  87. return app('json')->fail('获取1688商品详情失败,请查看日志');
  88. }
  89. return app('json')->success($result);
  90. }
  91. }