only(array_merge($grades, ['status', 'type', 'account_type', 'coin_name', 'user_id', 'username', 'datetime'])); if (!empty($params)) { // if(!empty($params['status'])){ // $builder->where('status',$params['status']); // } if (!empty($params['type'])) { $builder->where('type', $params['type']); } if (!empty($params['account_type'])) { $builder->where('account_type', $params['account_type']); } 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']) && !empty($params['datetime']['end'])) { $start = !empty($params['datetime']['start']) ? strtotime($params['datetime']['start']) : null; $end = !empty($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(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 . ''; // $con = '总单数:'.$total.' '.'USDT金额:'.$usdt_amount.' '; return Alert::make($con, '统计')->info(); } /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(Recharge::with(['user', 'user_auth']), function (Grid $grid) { #统计 $grid->header(function ($query) { return $this->statistics(); }); $grid->model()->orderByRaw("FIELD(status," . implode(",", array_keys(Recharge::$statusMap)) . ")")->orderByDesc('id'); // 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'] = Recharge::$statusMap[$row['status']]; } return $rows; })->xlsx(); $grid->setActionClass(Grid\Displayers\Actions::class); $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableDelete(); $actions->disableQuickEdit(); $actions->disableEdit(); $actions->disableView(); if ($actions->row->status == Recharge::status_wait) { $actions->append(new Pass()); } }); $grid->disableCreateButton(); $grid->disableDeleteButton(); $grid->disableEditButton(); $grid->disableBatchDelete(); // $grid->disableRowSelector(); $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->coin_id; $grid->coin_name; $grid->amount->display(function ($v) { return custom_number_format($v, 8); }); $grid->column('account_type', '账户类型')->using(UserWallet::$accountOptions)->label(); // $grid->collection_wallet; $grid->address->limit(20)->responsive(); $grid->type->using(Recharge::$typeMap); $grid->note; $grid->datetime->display(function ($datetime) { return date('Y-m-d H:i:s', $datetime); }); // $grid->status->using(Recharge::$statusMap)->dot([0=>'danger',1=>'success',2=>'primary'])->filter( // Grid\Column\Filter\In::make(Recharge::$statusMap) // ); $grid->filter(function (Grid\Filter $filter) { $grades = AgentGrade::getCachedGradeOption(); $filter->equal('coin_name')->width(2); $filter->whereBetween('datetime', function ($q) { $start = !empty($this->input['start']) ? strtotime($this->input['start']) : null; $end = !empty($this->input['end']) ? strtotime($this->input['end']) : null; // dd($this->input['end'],$end); $q->whereBetween('datetime', [$start, $end + 86399]); })->date()->width(4); $filter->equal('user_id', 'UID')->width(2); $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->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('acc', function ($q) { $username = $this->input; $aa = $q->whereHas('user', function ($q) use ($username) { $q->where('whethertopromote', $username); }); }, "是否营销")->select(UserAuth::$typeMap)->width(2); // $filter->equal('status','状态')->select(Recharge::$statusMap)->width(2); $filter->equal('account_type', '账户类型')->select(UserWallet::$accountOptions)->width(2); $filter->equal('type', '充值类型')->select(Recharge::$typeMap)->width(2); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Recharge(), function (Show $show) { $show->id; $show->user_id; $show->username; // $show->coin_id; $show->coin_name; $show->collection_wallet; $show->datetime; $show->amount; $show->status; $show->address; $show->created_at; $show->updated_at; }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new Recharge(), function (Form $form) { $form->display('id'); $form->text('user_id'); $form->text('username'); $form->text('coin_id'); $form->text('coin_name'); $form->text('collection_wallet'); $form->text('datetime'); $form->text('amount'); $form->text('status'); $form->text('address'); $form->display('created_at'); $form->display('updated_at'); }); } }