whereHas('user', function ($q) { $q->where('is_system', 0); }); $params = request()->only(['user_id', 'username', 'symbol', 'type', 'ts']); if (!empty($params)) { if (!empty($params['user_id'])) { $builder1->where('user_id', $params['user_id']); } if (!empty($params['username'])) { $username = $params['username']; $builder1->whereHas('user', function ($q) use ($username) { $q->where('username', $username)->orWhere('phone', $username)->orWhere('email', $username); }); } if (!empty($params['symbol'])) { $builder1->where('symbol', $params['symbol']); } if (!empty($params['type'])) { if ($params['type'] == 1) { $builder1->where('order_type', 1)->where('side', 1); } elseif ($params['type'] == 2) { $builder1->where('order_type', 1)->where('side', 2); } elseif ($params['type'] == 3) { $builder1->where('order_type', 2)->where('side', 2); } else { $builder1->where('order_type', 2)->where('side', 1); } } if (!empty($params['ts']) && !empty($params['ts']['start'])) { $start = $params['ts']['start'] ? strtotime($params['ts']['start']) : null; $end = $params['ts']['end'] ? strtotime($params['ts']['end']) : null; $builder1->whereBetween('ts', [$start, $end + 86399]); } } $res1 = $builder1->where('status', ContractEntrust::status_completed)->sum('profit'); $con = '' . '总盈亏:' . $res1 . 'USDT '; return Alert::make($con, '统计')->info(); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $data = ContractEntrust::with('user') ->whereHas('user', function ($q) { $q->where('is_system', 0); }); return Grid::make($data, function (Grid $grid) { $grid->model()->orderByDesc('id'); #统计 $grid->header(function ($query) { return $this->statistics(); }); $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableDelete(); $actions->disableQuickEdit(); $actions->disableEdit(); $actions->disableView(); if (in_array($actions->row->status, [ContractEntrust::status_wait, ContractEntrust::status_trading])) { $actions->append(new cancel()); } }); $grid->disableCreateButton(); $grid->disableBatchDelete(); // $grid->disableRowSelector(); $grid->tools([new BatchCancel()]); //$grid->column('id')->sortable(); $grid->column('order_no'); $grid->column('user_id'); $grid->column('usermail', '邮箱')->display(function () { //$realtime_price = Cache::store('redis')->get('swap:' . 'trade_detail_' . $this->symbol)['price'] ?? null; //dd(ContractTool::getUserMail($this->user_id)); return ContractTool::getUserMail($this->user_id); }); $grid->column('agname','代理邮箱')->display(function (){ $var = ContractTool::GetProxyEmail($this->user_id); //dd($var['username']); return $var['username']; }); $grid->column('order_type_side', '交易类型')->display(function () { if ($this->order_type == 1 && $this->side == 1) { return '买入开多'; } elseif ($this->order_type == 1 && $this->side == 2) { return '卖出开空'; } elseif ($this->order_type == 2 && $this->side == 1) { return '买入平空'; } else { return '卖出平多'; } })->label(); // $grid->column('order_type'); // $grid->column('side'); // $grid->column('contract_id'); // $grid->column('contract_coin_id'); $grid->column('symbol'); $grid->column('type')->using(ContractEntrust::$typeMap); $grid->column('lever_rate'); $grid->column('entrust_price'); // $grid->column('trigger_price'); $grid->column('amount'); $grid->column('traded_amount'); // $grid->column('margin'); $grid->column('avg_price'); $grid->column('fee'); $grid->column('profit'); $grid->column('settle_profit'); $grid->column('status')->using(ContractEntrust::$statusMap)->dot([ 1 => 'primary', 2 => 'danger', 3 => 'success', 4 => 'info', ], 'primary')->filter( Grid\Column\Filter\In::make(ContractEntrust::$statusMap) ); // $grid->column('hang_status'); // $grid->column('cancel_time'); // $grid->column('ts'); $grid->column('created_at')->sortable(); $grid->filter(function (Grid\Filter $filter) { $filter->whereBetween('ts', function ($q) { $start = $this->input['start'] ? strtotime($this->input['start']) : null; $end = $this->input['end'] ? strtotime($this->input['end']) : null; $q->whereBetween('ts', [$start, $end + 86399]); }, '时间')->date(); $filter->equal('user_id', 'UID')->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(3); $filter->equal('symbol')->width(3); $filter->where('type', function ($q) { if ($this->input == 1) { $q->where('order_type', 1)->where('side', 1); } elseif ($this->input == 2) { $q->where('order_type', 1)->where('side', 2); } elseif ($this->input == 3) { $q->where('order_type', 2)->where('side', 2); } else { $q->where('order_type', 2)->where('side', 1); } }, '交易类型')->select([1 => '开多', 2 => '开空', 3 => '平多', 4 => '平空'])->width(3); $filter->equal('user.pid', '代理商UID')->width(3); $filter->where('agent_id', function ($query) { $base_ids = collect(User::getChilds($this->input))->pluck('user_id'); $query->whereHas('user', function ($query) use ($base_ids) { $query->whereIn('user_id', $base_ids); }); }, '链上查询')->placeholder('输入代理商UID查询该代理链上委托')->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); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new ContractEntrust(), function (Show $show) { $show->field('id'); $show->field('order_no'); $show->field('order_type'); $show->field('user_id'); $show->field('side'); $show->field('contract_id'); $show->field('contract_coin_id'); $show->field('symbol'); $show->field('type'); $show->field('entrust_price'); $show->field('trigger_price'); $show->field('amount'); $show->field('traded_amount'); $show->field('lever_rate'); $show->field('margin'); $show->field('fee'); $show->field('status'); $show->field('hang_status'); $show->field('cancel_time'); $show->field('ts'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new ContractEntrust(), function (Form $form) { $form->display('id'); $form->text('order_no'); $form->text('order_type'); $form->text('user_id'); $form->text('side'); $form->text('contract_id'); $form->text('contract_coin_id'); $form->text('symbol'); $form->text('type'); $form->text('entrust_price'); $form->text('trigger_price'); $form->text('amount'); $form->text('traded_amount'); $form->text('lever_rate'); $form->text('margin'); $form->text('fee'); $form->text('status'); $form->text('hang_status'); $form->text('cancel_time'); $form->text('ts'); $form->display('created_at'); $form->display('updated_at'); }); } }