From 686562622da243fd3986e299d0c1620c50ec043d Mon Sep 17 00:00:00 2001 From: adonis Date: Mon, 29 Jun 2026 18:22:41 +0330 Subject: [PATCH] ghatre changes --- .../Controllers/Admin/ProductController.php | 42 ++++++++++++------- app/Services/PriceBroadcastService.php | 4 ++ 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/Admin/ProductController.php b/app/Http/Controllers/Admin/ProductController.php index f299dfa..268a67e 100644 --- a/app/Http/Controllers/Admin/ProductController.php +++ b/app/Http/Controllers/Admin/ProductController.php @@ -186,22 +186,13 @@ class ProductController extends SuperController public function listProduct() { if (app(ConfigService::class)->isStore()) { - app(ProductPriceSyncService::class)->syncStorePrices(true); - + // اپ مشتری: فقط DB — sync با HTTP فقط cron/admin (جلوگیری از pending طولانی list) if (! $this->isCustomerApiRequest()) { + app(ProductPriceSyncService::class)->syncStorePrices(true); $this->auto_close_open(); } - $products = Product::with(['file'])->where('active', 1)->get(); - $categoryService = app(CategoryService::class); - $products = $categoryService->filterProductsByVisibleCategories($products); - $products = $categoryService->sortProductsForStore($products); - - if ($this->isCustomerApiRequest()) { - $this->applyCustomerShow($products); - } - - return response()->json($products); + return response()->json($this->customerStoreProductListPayload()); } // آبشده خانگی — کران قیمت را آپدیت می‌کند؛ list فقط از DB می‌خواند @@ -224,8 +215,10 @@ class ProductController extends SuperController public function ProductById($id) { - app(ProductPriceSyncService::class)->syncStorePrices(true); - $this->auto_close_open(); + if (! $this->isCustomerApiRequest()) { + app(ProductPriceSyncService::class)->syncStorePrices(true); + $this->auto_close_open(); + } $product = Product::with(['file']) ->where('id', $id) ->first(); @@ -532,7 +525,26 @@ class ProductController extends SuperController private function isCustomerApiRequest(): bool { - return str_starts_with(request()->path(), 'customer/'); + $path = trim((string) request()->path(), '/'); + + return str_starts_with($path, 'customer/') + || str_contains($path, '/customer/'); + } + + /** + * لیست محصولات فروشگاه برای اپ/SSE — فقط DB، بدون sync خارجی. + * + * @return array + */ + public function customerStoreProductListPayload(): array + { + $products = Product::with(['file'])->where('active', 1)->get(); + $categoryService = app(CategoryService::class); + $products = $categoryService->filterProductsByVisibleCategories($products); + $products = $categoryService->sortProductsForStore($products); + $this->applyCustomerShow($products); + + return $products->values()->all(); } private function applyCustomerShow($products): void diff --git a/app/Services/PriceBroadcastService.php b/app/Services/PriceBroadcastService.php index 7687363..9d1b85f 100644 --- a/app/Services/PriceBroadcastService.php +++ b/app/Services/PriceBroadcastService.php @@ -196,6 +196,10 @@ class PriceBroadcastService */ private function buildProductListPayload(): ?array { + if (app(ConfigService::class)->isStore()) { + return app(ProductController::class)->customerStoreProductListPayload(); + } + $request = Request::create('/customer/product/list', 'GET'); app()->instance('request', $request);