Anonymous
Laravel Livewire Расчет торговой аналитики
Сообщение
Anonymous » 19 фев 2025, 13:37
Я работаю над проектом, где мне нужно вычислить аналитику торговли пользователями и обновить ее на пользовательской панели. Все прошло гладко, пока число каждой пользовательской сделки не увеличилось (в общей сложности 10 000 сделок и выше), что увеличивает время нагрузки. Есть ли способ ускорить процесс?
Код: Выделить всё
public function updateChart()
{
$trades = $this->filterTrades();
$tradeAnalyticsService = app(TradeAnalyticsService::class, ['trades' => $trades, 'balance' => $this->portfolio->balance]);
$this->netProfitData = $tradeAnalyticsService->getRangeNetProfit();
$this->winLoseData = $tradeAnalyticsService->getWinLossPercentage();
$this->bestTradeReturn = $tradeAnalyticsService->getBestTradeReturn();
$this->worstTradeReturn = $tradeAnalyticsService->getWorstTradeReturn();
$this->essentialsData = $tradeAnalyticsService->getEssentialsData();
$this->emit('updateData');
}
public function filterTrades()
{
$trades = $this->portfolio->trades(['return', 'return_percentage', 'status', 'entry_date', 'id', 'instrument'])->latest('entry_date')->get();
// $trades = Trade::select(['return', 'return_percentage', 'status', 'entry_date', 'id'])->where('portfolio_id', $this->portfolio->id)->orderBy('entry_date')->get();
switch ($this->filter) {
case '7D':
return $trades->where('entry_date', '=', now()->startOfWeek());
break;
case '1M':
return $trades->where('entry_date', '=', now()->startOfMonth());
break;
case '3M':
return $trades->where('entry_date', '=', now()->startOfMonth()->subMonths(2));
break;
case '6M':
return $trades->where('entry_date', '=', now()->startOfMonth()->subMonth(5));
break;
case '1Y':
return $trades->where('entry_date', '=', now()->startOfYear());
break;
case '2Y':
return $trades->where('entry_date', '=', now()->startOfYear()->subYears(1));
break;
case '3Y':
return $trades->where('entry_date', '=', now()->startOfYear()->subYears(2));
break;
case 'All':
return $trades;
break;
default:
return $trades;
break;
}
}
< /code>
tradeanalyticsservice.php
Подробнее здесь: [url]https://stackoverflow.com/questions/70124129/laravel-livewire-calculate-trade-analytics[/url]
1739961442
Anonymous
Я работаю над проектом, где мне нужно вычислить аналитику торговли пользователями и обновить ее на пользовательской панели. Все прошло гладко, пока число каждой пользовательской сделки не увеличилось (в общей сложности 10 000 сделок и выше), что увеличивает время нагрузки. Есть ли способ ускорить процесс?[code]public function updateChart() { $trades = $this->filterTrades(); $tradeAnalyticsService = app(TradeAnalyticsService::class, ['trades' => $trades, 'balance' => $this->portfolio->balance]); $this->netProfitData = $tradeAnalyticsService->getRangeNetProfit(); $this->winLoseData = $tradeAnalyticsService->getWinLossPercentage(); $this->bestTradeReturn = $tradeAnalyticsService->getBestTradeReturn(); $this->worstTradeReturn = $tradeAnalyticsService->getWorstTradeReturn(); $this->essentialsData = $tradeAnalyticsService->getEssentialsData(); $this->emit('updateData'); } public function filterTrades() { $trades = $this->portfolio->trades(['return', 'return_percentage', 'status', 'entry_date', 'id', 'instrument'])->latest('entry_date')->get(); // $trades = Trade::select(['return', 'return_percentage', 'status', 'entry_date', 'id'])->where('portfolio_id', $this->portfolio->id)->orderBy('entry_date')->get(); switch ($this->filter) { case '7D': return $trades->where('entry_date', '=', now()->startOfWeek()); break; case '1M': return $trades->where('entry_date', '=', now()->startOfMonth()); break; case '3M': return $trades->where('entry_date', '=', now()->startOfMonth()->subMonths(2)); break; case '6M': return $trades->where('entry_date', '=', now()->startOfMonth()->subMonth(5)); break; case '1Y': return $trades->where('entry_date', '=', now()->startOfYear()); break; case '2Y': return $trades->where('entry_date', '=', now()->startOfYear()->subYears(1)); break; case '3Y': return $trades->where('entry_date', '=', now()->startOfYear()->subYears(2)); break; case 'All': return $trades; break; default: return $trades; break; } } < /code> tradeanalyticsservice.php Подробнее здесь: [url]https://stackoverflow.com/questions/70124129/laravel-livewire-calculate-trade-analytics[/url]