StoreCategory.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace app\controller\admin;
  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/store/category"),Middleware(AuthMiddleware::class)]
  16. class StoreCategory extends Base
  17. {
  18. protected array $noNeedLogin = ["getCategoryList"];
  19. #[Inject]
  20. protected CategoryService $service;
  21. #[Inject]
  22. protected GoodsService $goodsService;
  23. #[Inject]
  24. protected SaasStoreCategory $model;
  25. #[GetMapping('list')]
  26. public function getCategoryList(Request $request): Response
  27. {
  28. try {
  29. $param = $this->_valid([
  30. "poi.require" => trans("empty.require")
  31. ]);
  32. if (!is_array($param)) return error($param);
  33. $data = $this->service->setModel()->getList([],null,false);
  34. $tree = DataExtend::arr2tree($data,"category_id","parent_id");
  35. $storeCate = $this->model->where("poi_id",$param['poi'])->column('product_type',"category_id");
  36. if (empty($storeCate)) return successTrans(100010,[],200);
  37. $storeIds = [];
  38. $storeTypes = [];
  39. foreach ($storeCate as $k=>$v){
  40. $storeIds[] = $k;
  41. $productType = !empty($v) ? json_decode($v,true) : [];
  42. $typeData = [];
  43. foreach ($this->goodsService->productType() as $key => $value) {
  44. if (in_array($value['key'],$productType)) {
  45. $typeData[] = $value;
  46. }
  47. }
  48. $storeTypes[$k] = $typeData;
  49. }
  50. $resp = filterTreeByTargets($tree,$storeIds);
  51. addTypesRecursive($resp,$storeTypes);
  52. return successTrans(100010,$resp,200);
  53. } catch (\Throwable $throwable) {
  54. return error($throwable->getMessage());
  55. }
  56. }
  57. }