blue2(); // 卡片内容宽度 $this->contentWidth(11, 1); // 标题 $this->title('币币交易'); // 设置下拉选项 $coin_options = Coins::query()->where('status', 1)->orderBy('order', 'desc')->orderBy('coin_id', 'asc')->pluck('coin_name', 'coin_id')->toArray(); $this->dropdown($coin_options); // 设置图表颜色 $this->chartColors([ $dark35, $dark35, $dark35, $dark35, $dark35, $color->success(), ]); $this->request('POST', $this->getRequestUrl(), ['user_id' => request()->input('key')]); // 设置API请求地址 携带参数 } /** * 处理请求 * * @param Request $request * * @return mixed|void */ public function handle(Request $request) { $user_id = $request->get('user_id', null); $default_coin = Coins::query()->where('status', 1)->orderBy('order', 'desc')->orderBy('coin_id', 'asc')->value('coin_id'); $coin_id = $request->get('option', $default_coin); $today_date = Carbon::today()->format('Y-m-d'); $builder1 = InsideTradeOrder::query()->where(function ($q) use ($user_id) { $q->whereHas('buy_user', function ($q) use ($user_id) { $q->where('user_id', $user_id); }) ->orWhereHas('sell_user', function ($q) use ($user_id) { $q->where('user_id', $user_id); }); })->where('base_coin_id', $coin_id); $builder2 = InsideTradeOrder::query()->where(function ($q) use ($user_id) { $q->whereHas('buy_user', function ($q) use ($user_id) { $q->where('user_id', $user_id); }) ->orWhereHas('sell_user', function ($q) use ($user_id) { $q->where('user_id', $user_id); }); })->where('quote_coin_id', $coin_id); $total_vol = $builder1->sum('trade_amount') + $builder2->sum('trade_money'); $total_fee = $builder1->sum('trade_buy_fee') + $builder2->sum('trade_sell_fee'); $today_vol = $builder1->whereDate('created_at', $today_date)->sum('trade_amount') + $builder2->whereDate('created_at', $today_date)->sum('trade_money'); $today_fee = $builder1->whereDate('created_at', $today_date)->sum('trade_buy_fee') + $builder2->whereDate('created_at', $today_date)->sum('trade_sell_fee'); // 卡片内容 $this->withContent($user_id, $total_vol, $total_fee, $today_vol, $today_fee, '+5.2%'); // 图表数据 $this->withChart([ [ 'name' => 'Exchange', 'data' => [ $builder1->whereDate('created_at', Carbon::today()->subDays(6)->format('Y-m-d'))->sum('trade_amount') + $builder2->whereDate('created_at', Carbon::today()->subDays(6)->format('Y-m-d'))->sum('trade_money'), $builder1->whereDate('created_at', Carbon::today()->subDays(5)->format('Y-m-d'))->sum('trade_amount') + $builder2->whereDate('created_at', Carbon::today()->subDays(5)->format('Y-m-d'))->sum('trade_money'), $builder1->whereDate('created_at', Carbon::today()->subDays(4)->format('Y-m-d'))->sum('trade_amount') + $builder2->whereDate('created_at', Carbon::today()->subDays(4)->format('Y-m-d'))->sum('trade_money'), $builder1->whereDate('created_at', Carbon::today()->subDays(3)->format('Y-m-d'))->sum('trade_amount') + $builder2->whereDate('created_at', Carbon::today()->subDays(3)->format('Y-m-d'))->sum('trade_money'), $builder1->whereDate('created_at', Carbon::today()->subDays(2)->format('Y-m-d'))->sum('trade_amount') + $builder2->whereDate('created_at', Carbon::today()->subDays(2)->format('Y-m-d'))->sum('trade_money'), $builder1->whereDate('created_at', Carbon::today()->subDays(1)->format('Y-m-d'))->sum('trade_amount') + $builder2->whereDate('created_at', Carbon::today()->subDays(1)->format('Y-m-d'))->sum('trade_money'), $builder1->whereDate('created_at', $today_date)->sum('trade_amount') + $builder2->whereDate('created_at', $today_date)->sum('trade_money'), ], ], ]); } /** * 设置图表数据. * * @param array $data * * @return $this */ public function withChart(array $data) { return $this->chart([ 'series' => $data, ]); } /** * 设置卡片内容. * * @param int $user_id * @param string $total_vol * @param string $total_fee * @param string $today_vol * @param string $today_fee * @param string $style * * @return $this */ public function withContent($user_id, $total_vol, $total_fee, $today_vol, $today_fee, $style = 'success') { // 根据选项显示 $label = strtolower( $this->dropdown[request()->option] ?? 'last 7 days' ); $minHeight = '183px'; $admin_url = admin_url(); return $this->content( <<