Category.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace app\controller\merchant;
  3. use app\extra\basic\Base;
  4. use app\extra\tools\DataExtend;
  5. use app\middleware\AuthMiddleware;
  6. use app\model\saas\SaasStoreCategory;
  7. use app\service\saas\CategoryService;
  8. use app\service\saas\GoodsService;
  9. use DI\Attribute\Inject;
  10. use LinFly\Annotation\Attributes\Route\Controller;
  11. use LinFly\Annotation\Attributes\Route\GetMapping;
  12. use LinFly\Annotation\Attributes\Route\Middleware;
  13. use support\Request;
  14. use support\Response;
  15. #[Controller("/api/merchant/category"),Middleware(AuthMiddleware::class)]
  16. class Category extends Base
  17. {
  18. #[Inject]
  19. protected CategoryService $service;
  20. #[Inject]
  21. protected GoodsService $goodsService;
  22. #[Inject]
  23. protected SaasStoreCategory $model;
  24. #[GetMapping('list')]
  25. public function getCategoryList(Request $request): Response
  26. {
  27. try {
  28. $param = $this->_valid([
  29. "poi.default" => $request->user['store_id']
  30. ]);
  31. if (!is_array($param)) return error($param);
  32. $data = $this->service->setModel()->getList([],null,false);
  33. $tree = DataExtend::arr2tree($data,"category_id","parent_id");
  34. $storeCate = $this->model->where("poi_id",$param['poi'])->column('product_type',"category_id");
  35. if (empty($storeCate)) return successTrans(100010,[],200);
  36. $storeIds = [];
  37. $storeTypes = [];
  38. foreach ($storeCate as $k=>$v){
  39. $storeIds[] = $k;
  40. $productType = !empty($v) ? json_decode($v,true) : [];
  41. $typeData = [];
  42. foreach ($this->goodsService->productType() as $key => $value) {
  43. if (in_array($value['key'],$productType)) {
  44. $typeData[] = $value;
  45. }
  46. }
  47. $storeTypes[$k] = $typeData;
  48. }
  49. $resp = filterTreeByTargets($tree,$storeIds);
  50. addTypesRecursive($resp,$storeTypes);
  51. return successTrans(100010,$resp,200);
  52. } catch (\Throwable $throwable) {
  53. return error($throwable->getMessage());
  54. }
  55. }
  56. }