only(array_merge($grades, ['status', 'coin_name', 'user_id', 'username', 'datetime'])); if (!empty($params)) { if (!empty($params['status'])) { $builder->where('status', $params['status']); } if (!empty($params['user_id'])) { $builder->where('user_id', $params['user_id']); } if (!empty($params['coin_name'])) { $builder->where('coin_name', $params['coin_name']); } if (!empty($params['username'])) { $username = $params['username']; $builder->whereHas('user', function ($q) use ($username) { $q->where('username', $username)->orWhere('phone', $username)->orWhere('email', $username); }); } if (!empty($params['datetime']) && !empty($params['datetime']['start'])) { $start = $params['datetime']['start'] ? strtotime($params['datetime']['start']) : null; $end = $params['datetime']['end'] ? strtotime($params['datetime']['end']) : null; $builder->whereBetween('datetime', [$start, $end + 86399]); } $lk = last(array_keys($grades)); foreach ($grades as $k => $v) { $key = 'A' . ($k + 1); if ($k == $lk && !empty($params[$key])) { $id = $params[$key]; $builder->whereHas('user', function ($q) use ($id) { $q->where('referrer', $id); }); } elseif (!empty($params[$key])) { $ids = Agent::getBaseAgentIds($params[$key]); $builder->whereHas('user', function ($q) use ($ids) { $q->whereIn('referrer', $ids); }); } } } $total = $builder->count(); $records = $builder->groupBy('coin_name')->selectRaw('sum(total_amount) as amount_sum, coin_name')->pluck('amount_sum', 'coin_name'); $usdt_amount = $records['USDT'] ?? 0; $eth_amount = $records['ETH'] ?? 0; $btc_amount = $records['BTC'] ?? 0; // $usdt_amount = 0; // foreach ($records as $coin_name => $amount){ // $symbol = strtolower($coin_name) . 'usdt'; // if($coin_name == 'USDT'){ // $price = 1; // }else{ // $price = Cache::store('redis')->get('market:' . $symbol . '_detail')['close'] ?? 1; // } // $usdt_amount = PriceCalculate($usdt_amount,'+',PriceCalculate($amount ,'*' ,$price,4),4); // } // $total_amount = $builder->sum('amount'); $con = '总单数:' . $total . ' ' . 'USDT金额:' . $usdt_amount . ' ' . 'ETH金额:' . $eth_amount . ' ' . 'BTC金额:' . $btc_amount . ''; return Alert::make($con, '统计')->info(); } /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(Withdraw::with(['user', 'user_auth']), function (Grid $grid) { #统计 $grid->header(function ($query) { return $this->statistics(); }); $grid->model()->orderByRaw("FIELD(status," . implode(",", array_keys(Withdraw::$statusMap)) . ")")->orderByDesc('id'); $grid->setActionClass(Grid\Displayers\Actions::class); // xlsx $titles = ['id' => 'ID', 'user_id' => 'UID', 'username' => '用户名', 'coin_name' => '币名', 'amount' => '金额', 'address' => '充币地址', 'datetime' => '时间', 'status' => '状态']; $grid->export()->titles($titles)->rows(function (array $rows) use ($titles) { foreach ($rows as $index => &$row) { $row['datetime'] = date('Y-m-d H:i:s', $row['datetime']); $row['status'] = Withdraw::$statusMap[$row['status']]; } return $rows; })->xlsx(); $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableDelete(); $actions->disableQuickEdit(); $actions->disableEdit(); $actions->disableView(); if ($actions->row->status == Withdraw::status_wait) { $actions->append(new Check()); } }); $grid->disableCreateButton(); $grid->disableDeleteButton(); $grid->disableEditButton(); $grid->id->sortable(); $grid->user_id; $grid->username; $grid->column('agname','代理邮箱')->display(function (){ $var = ContractTool::GetProxyEmail($this->user_id); //dd($var['username']); return $var['username']; }); $grid->column('user_auth.realname', '姓名'); // $grid->column('user.referrer',$grades[$lk])->display(function($v){ // return Agent::query()->where('id',$v)->value('name'); // }); $grid->coin_name; $grid->column('address_type', '币链')->using([1 => 'oimn', 2 => 'erc-20',3=>"trc-20"]); $grid->address; $grid->column('total_amount', '提币数量'); $grid->column('amount', '实际到账数量'); $grid->column("withdrawal_fee", "手续费"); // $grid->coin_id; $grid->datetime->display(function ($datetime) { return date('Y-m-d H:i:s', $datetime); }); $grid->status->using(Withdraw::$statusMap)->dot([0 => 'danger', 1 => 'success', 2 => 'primary', 3 => 'info'])->filter( Grid\Column\Filter\In::make(Withdraw::$statusMap) ); $grid->filter(function (Grid\Filter $filter) { $grades = AgentGrade::getCachedGradeOption(); $filter->whereBetween('datetime', function ($q) { $start = strtotime($this->input['start']); $end = strtotime($this->input['end']); $q->whereBetween('datetime', [$start, $end + 86399]); })->date()->width(4); $filter->equal('user_id', 'UID')->width(2); $filter->where('agent_id', function ($query) { $referrer = $this->input; $referrer = ContractTool::getmailtoid($referrer); $childs = collect(get_childs($referrer))->pluck('user_id')->toArray(); $query->whereIn('user_id', $childs); }, '代理邮箱')->placeholder('代理邮箱')->width(3); $filter->where('username', function ($q) { $username = $this->input; $q->whereHas('user', function ($q) use ($username) { $q->where('username', $username)->orWhere('phone', $username)->orWhere('email', $username); }); }, "用户名/手机/邮箱")->width(2); $filter->equal('status', '状态')->select(Withdraw::$statusMap)->width(2); $filter->equal('coin_name')->width(2); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Withdraw(), function (Show $show) { $show->id; $show->user_id; $show->username; $show->amount; $show->status; $show->coin_id; $show->coin_name; $show->address; $show->datetime; $show->agent_level; $show->agent_name; $show->created_at; $show->updated_at; }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new Withdraw(), function (Form $form) { $form->display('id'); $form->text('user_id'); $form->text('username'); $form->text('amount'); $form->text('status'); $form->text('coin_id'); $form->text('coin_name'); $form->text('address'); $form->text('datetime'); $form->text('agent_level'); $form->text('agent_name'); $form->display('created_at'); $form->display('updated_at'); }); } }