From 98d62dd5d3c8140ba60fa00ed7cb420be9e791e0 Mon Sep 17 00:00:00 2001 From: adonis Date: Mon, 25 May 2026 20:55:05 +0330 Subject: [PATCH] revert product changes --- .../Controllers/Admin/ProductController.php | 250 +++++------------- app/Services/ConfigService.php | 19 +- 2 files changed, 62 insertions(+), 207 deletions(-) diff --git a/app/Http/Controllers/Admin/ProductController.php b/app/Http/Controllers/Admin/ProductController.php index fe2165a..3e2b58c 100644 --- a/app/Http/Controllers/Admin/ProductController.php +++ b/app/Http/Controllers/Admin/ProductController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Controllers\SuperController; +use App\Models\Cnt; use App\Models\Product; use App\DB\Te\TableEngine; use Illuminate\Support\Facades\DB; @@ -11,46 +12,30 @@ use Illuminate\Http\Request; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; use Illuminate\Support\Facades\Http; use \App\Http\Controllers\Customer\FundController; -use App\Http\Controllers\Site\ReportController; -use App\Services\ConfigService; +use App\Http\Controllers\Site\ReportController ; + class ProductController extends SuperController { - - private $configService; - public function __construct() { - $this->configService = app(ConfigService::class); - $this->with = ['file'/*, 'price', 'default', 'sub'*/]; - +// $this->with = []; parent::__construct(Product::class, $this->with, ['*'], null, null, ['title']); } - - private function shouldUpdatePriceOnList(): bool - { - return $this->configService->ConfigBool('product_update_price_on_list', true); - } - - private function shouldAutoCloseOpenOnList(): bool - { - return $this->configService->ConfigBool('product_auto_close_open_on_list', true); - } - public function tableProduct(Request $request) { $data = $request->all(); - if (isset($data["select"]) && is_null($data["select"])) { + if (isset($data["select"]) && is_null($data["select"])){ $data["select"] = []; } - if (is_null($this->query)) { + if (is_null($this->query)){ $query_table = $this->model::with($this->with); //*******کداضافه شده // ->where('active', '<=', now()) // فیلتر محصولات فعال // ->get(); //********* - } else { + }else{ $query_table = $this->query; // $query_table = $query_table->where('active', '<=', now()); } @@ -60,10 +45,9 @@ class ProductController extends SuperController ->export($query_table); $query_table['auto_open_at'] = Product::selectRaw( 'SEC_TO_TIME(AVG(TIME_TO_SEC(TIME(auto_open_at)))) as avg_time' - )->value('avg_time'); - $query_table['auto_close_at'] = Product::selectRaw( - 'SEC_TO_TIME(AVG(TIME_TO_SEC(TIME(auto_close_at)))) as avg_time' - )->value('avg_time'); + )->value('avg_time'); $query_table['auto_close_at'] = Product::selectRaw( + 'SEC_TO_TIME(AVG(TIME_TO_SEC(TIME(auto_close_at)))) as avg_time' + )->value('avg_time'); // $query_table['11'] = $avgDuration; // $query_table['11'] = Product::avg('auto_open_at'); @@ -98,12 +82,13 @@ class ProductController extends SuperController // return 1; $data = $request->all(); - if (isset($data["price"])) { + if (isset($data["price"])){ $data["reading_method"] = null; } - if (isset($data["auto_close_at"], $data["auto_open_at"])) { - if ($data["auto_close_at"] == $data["auto_open_at"]) { - unset($data["auto_open_at"], $data["auto_close_at"]); + if (isset($data["auto_close_at"]) and isset($data["auto_close_at"])){ + if ($data["auto_close_at"] == $data["auto_open_at"]){ + unset($data["auto_open_at"]); + unset($data["auto_close_at"]); } } @@ -117,7 +102,7 @@ class ProductController extends SuperController // $data['auto_open_at'] = Carbon::parse($data['auto_open_at'])->format('Y-m-d H:i:s'); // $data['auto_close_at'] = Carbon::parse($data['auto_close_at'])->format('Y-m-d H:i:s'); // Product::find($id)->update($data); - Product::findOrFail($id)->update($data); + Product::find($id)->update($data); return response()->json(true); } @@ -132,196 +117,81 @@ class ProductController extends SuperController public function listProduct() { - if ($this->shouldUpdatePriceOnList()) { - $this->syncProductPrices(); - } - - if ($this->shouldAutoCloseOpenOnList()) { - $this->syncAutoCloseOpen(); - } - +// $this->getPrice(); +// $this->auto_close_open(); $product = Product::with(['file'])->where('active', 1)->get(); - return response()->json($product); } public function getPrice() { - $this->syncProductPrices(); +// $RPrices = Http::get('https://pricing.liman.gold/pricingApi', [])->json(); +// $RPrices = Http::get('https://pricing.liman.gold/pricingApi', [])->json(); +// $RPrices =Http::timeout(40)->get('http://212.23.201.173:8381/price_list', [])->json(); + $RPrices = Http::timeout(40)->get('http://109.122.246.48:4949/api/free', [])->json(); - return response()->json(true); - } - - private function syncProductPrices(): void - { - $RPrices = $this->fetchPriceList(); - - if (empty($RPrices) || !is_array($RPrices)) { - return; - } - - $collection = collect($RPrices); +// try{ +// $cooper =Http::timeout(40)->get('https://www.livedata.ir/main/static/p.json', [])->json(); +// if(isset($cooper['s_301006']) && isset($cooper['s_200103'])){ +// $CP = (($cooper['s_301006']/1000000)*$cooper['s_200103'])*10; +//// Cnt::where('key', 'cu_price') +// } +// }catch (\Exception $e){} $products = Product::with([])->whereNotNull('reading_method')->get(); - - $copper = null; - $dollar = null; - foreach ($products as $product) { - $RPrice = $collection->firstWhere('key', $product->reading_method) - ?: $collection->firstWhere('name', $product->reading_method); + $collection = collect($RPrices); + $RPrice = $collection->firstWhere('key', $product->reading_method); + if (!empty($RPrice)) { +// foreach ($RPrices as $RPrice) { +// if ($product->reading_method == $RPrice['name']) { + if ($RPrice['name'] == 'TGJU فلز مس') { + $copper = $RPrice['price'] + $RPrice['profit']; + } + if ($RPrice['name'] == 'TGJU دلار') { + $dollar = $RPrice['price'] + $RPrice['profit']; + } + if ($RPrice['name'] == 'گلد دات ای از آبشده - رسمی - نقد فردا') { + $RPrice['price'] = $RPrice['price'] / 4.3318; + } + $p = Product::where('id', $product->id)->update([ + 'price' => $RPrice['price'], + 'price_profit' => $RPrice['profit'], + ]); - if (empty($RPrice)) { - continue; - } - if (!isset($RPrice['price'])) { - continue; - } - - if (($RPrice['name'] ?? null) === 'TGJU فلز مس') { - $copper = ((float)$RPrice['price']) + ((float)($RPrice['profit'] ?? 0)); - } - - if (($RPrice['name'] ?? null) === 'TGJU دلار') { - $dollar = ((float)$RPrice['price']) + ((float)($RPrice['profit'] ?? 0)); - } - - if (($RPrice['name'] ?? null) === 'گلد دات ای از آبشده - رسمی - نقد فردا') { - $RPrice['price'] = ((float)$RPrice['price']) / 4.3318; - } - - - Product::where('id', $product->id)->update([ - 'price' => $RPrice['price'], - 'price_profit' => $RPrice['profit'] ?? 0, - ]); - - if ((int)$product->bubble === 1) { - $ReportController = new ReportController(); - $liquidGold = $ReportController->lastPrice(); - - if (!empty($liquidGold['price'])) { + if ($product->bubble == 1) { + $ReportController = new ReportController(); + $liquidGold = $ReportController->lastPrice(); $p = Product::find($product->id); - $p->amount = ((float)$RPrice['price']) / ((float)$liquidGold['price']); + $p->amount = $RPrice['price'] / $liquidGold['price']; $p->save(); + } } } - - if ($copper !== null && $dollar !== null) { + if (isset($copper) && isset($dollar)) { $cp = ($copper / 1000000) * $dollar; - - Product::where('metal_id', 3)->update([ + $p = Product::where('metal_id', 3)->update([ 'price' => $cp, 'price_profit' => 0, - 'updated_at' => now(), + 'updated_at' => \Carbon\Carbon::now()->format('Y-m-d H:i:s'), ]); } - } - private function fetchPriceList(): array - { - $urls = []; - - /* - * اگر خواستی برای هر پروژه از دیتابیس URL بدی: - * product_price_api_url = http://... - */ - $customUrl = $this->configService->Config('product_price_api_url', null); - - if (!empty($customUrl)) { - $urls[] = $customUrl; - } - - /* - * اگر پروژه از مدل جدید قیمت استفاده می‌کنه - */ - if ( - $this->configService->ConfigBool('tabanGohar_price', false) || - $this->configService->ConfigBool('goldir_price', false) - ) { - $urls[] = 'http://109.122.246.48:4949/api/free'; - } - - /* - * fallback قدیمی - */ - $urls[] = 'http://212.23.201.173:8381/price_list'; - - foreach (array_unique($urls) as $url) { - try { - $response = Http::timeout(40)->get($url); - - if (!$response->successful()) { - continue; - } - - $json = $response->json(); - - if (isset($json['data']) && is_array($json['data'])) { - return $json['data']; - } - - if (is_array($json) && !empty($json)) { - return $json; - } - } catch (\Throwable $e) { - report($e); - } - } - - return []; + return response()->json(true); } public function auto_close_open() - { - $this->syncAutoCloseOpen(); - - return response()->json(true); - } - - private function syncAutoCloseOpen(): void { $products = Product::with([])->get(); $current_time = now()->format('H:i:s'); - foreach ($products as $product) { - if (empty($product->auto_open_at) || empty($product->auto_close_at)) { - continue; - } - $show = ($current_time >= $product->auto_open_at && $current_time <= $product->auto_close_at); - Product::where('id', $product->id)->update([ 'show' => $show, ]); } - } - - public function ProductById($id) - { - if ($this->shouldUpdatePriceOnList()) { - $this->syncProductPrices(); - } - - if ($this->shouldAutoCloseOpenOnList()) { - $this->syncAutoCloseOpen(); - } - - $product = Product::with(['file']) - ->where('id', $id) - ->first(); - - if (!$product) { - return response()->json(false); - } - - $product->similar = Product::with(['file']) - ->where('group_type', $product->group_type) - ->where('id', '!=', $id) - ->get(); - - return response()->json($product); + return response()->json(true); } @@ -397,10 +267,8 @@ class ProductController extends SuperController return response()->json(true); } - public function updatePrice(Request $request) - { - $this->syncProductPrices(); + public function updatePrice(Request $request){ + - return response()->json(true); } } diff --git a/app/Services/ConfigService.php b/app/Services/ConfigService.php index 27e2a74..b5d6fd6 100644 --- a/app/Services/ConfigService.php +++ b/app/Services/ConfigService.php @@ -6,27 +6,14 @@ use App\Models\Setting; class ConfigService { - public function Config($name, $default = false) + public function Config($name) { - $value = Setting::where('key', $name)->value('value'); - - return $value !== null ? $value : $default; - } - - public function ConfigBool(string $name, bool $default = false): bool - { - $value = $this->Config($name, null); - - if ($value === null) { - return $default; - } - - return in_array(strtolower(trim((string) $value)), ['1', 'true', 'yes', 'on'], true); + return Setting::where('key', $name)->value('value') ?? false; } public function UpdateConfig($name, $value) { - return Setting::updateOrCreate( + return \App\Models\Setting::updateOrCreate( ['key' => $name], ['value' => $value] );