whereHas('user', function ($q) { $q->where('is_system', 0); }); // 矿工佣金 $builder9 = BonusLog::query()->where('status', BonusLog::status_hand)->whereHas('user', function ($q) { $q->where('is_system', 0); }); $params = request()->only(['user_id', 'username', 'order_no', 'created_at']); if (!empty($params)) { if (!empty($params['user_id'])) { $builder1->where('user_id', $params['user_id']); $builder2->where('user_id', $params['user_id']); $builder3->where('user_id', $params['user_id']); $builder9->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); }); $builder2->whereHas('user', function ($q) use ($username) { $q->where('username', $username)->orWhere('phone', $username)->orWhere('email', $username); }); $builder3->whereHas('user', function ($q) use ($username) { $q->where('username', $username)->orWhere('phone', $username)->orWhere('email', $username); }); $builder9->whereHas('user', function ($q) use ($username) { $q->where('username', $username)->orWhere('phone', $username)->orWhere('email', $username); }); } if (!empty($params['order_no'])) { $builder1->where('order_no', 'like', $params['order_no']); $builder2->where('order_no', 'like', $params['order_no']); $builder3->where('order_no', 'like', $params['order_no']); } if (!empty($params['created_at']) && !empty($params['created_at']['start'])) { $start = $params['created_at']['start']; $end = $params['created_at']['end']; $builder1->whereDate('created_at', '>=', $start)->whereDate('created_at', '<=', $end); $builder2->whereDate('created_at', '>=', $start)->whereDate('created_at', '<=', $end); $builder3->whereDate('created_at', '>=', $start)->whereDate('created_at', '<=', $end); $builder9->whereDate('created_at', '>=', $start)->whereDate('created_at', '<=', $end); } } $res1 = $builder1->where('status', OptionSceneOrder::status_delivered)->where('delivery_amount', '>', 0)->sum('delivery_amount'); $res2 = $builder2->where('status', OptionSceneOrder::status_delivered)->where('delivery_amount', '>', 0)->sum('bet_amount'); $res3 = $builder3->where('status', OptionSceneOrder::status_delivered)->where('delivery_amount', '<', 0)->sum('delivery_amount'); //总盈利 结算为负数即用户亏损平台盈利 $p = abs($res3); //总亏损 $l = $res1 - $res2; $pl = $p - $l; $bonus_count = $builder9->sum('amount'); $con = '' . '总盈亏:' . $pl . 'USDT ' . '' . '矿工佣金:' . $bonus_count . 'USDT ' . '' . '实际盈亏:' . PriceCalculate($pl, '-', $bonus_count, 8) . 'USDT '; // $con = ''.'总盈亏:'. $pl .'USDT '; return Alert::make($con, '统计')->info(); } /** *期权订单 * * @return Grid */ protected $title = "期权订单"; protected function grid() { return Grid::make(OptionSceneOrder::with(['user', 'scene']), function (Grid $grid) { $grid->model()->orderByDesc("created_at"); #统计 $grid->header(function ($query) { return $this->statistics(); }); $grid->fixColumns(1); $grid->disableActions(); $grid->disableBatchDelete(); $grid->disableCreateButton(); // TODO 异常订单处理 // $grid->tools([ new Handle() ]); // $grid->order_id->sortable(); // $grid->column("order_no","订单号"); $grid->user_id; $grid->column('user.referrer', '代理')->display(function ($v) { return Agent::query()->where('id', $v)->value('name'); }); $grid->bet_amount; $grid->bet_coin_name; $grid->odds; $grid->range; $grid->column("涨跌平")->display(function () { if ($this->up_down == "1") { return ""; } else if ($this->up_down == "2") { return ""; } elseif ($this->up_down == 3) { return ""; } }); $grid->status->using(OptionSceneOrder::$statusMap)->dot([1 => 'primary', 2 => 'success']); $grid->fee->display(function ($v) { return $v . ' ' . $this->bet_coin_name; }); $grid->delivery_amount; $grid->delivery_time->display(function ($v) { return blank($v) ? null : date("Y-m-d H:i:s", $v); }); $grid->column('scene.begin_price', "开盘价"); $grid->column('scene.end_price', "收盘价"); $grid->column('scene.delivery_up_down', "")->display(function ($d) { if ($d == 1) { return ""; } else if ($d == 2) { return ""; } elseif ($d == 3) { return ""; } }); $grid->created_at->sortable(); $grid->filter(function (Grid\Filter $filter) { $filter->between('created_at', "时间")->datetime(); $filter->equal('user_id', '用户id')->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(4); // $filter->like('order_no', '订单号')->width(3); $filter->where('pid', function ($query) { $referrer = $this->input; $query->whereHas('user', function ($query) use ($referrer) { $query->where('pid', $referrer); }); }, '代理商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); }); }, '代理商UID')->width(3); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new OptionSceneOrder(), function (Show $show) { $show->order_id; $show->order_no; $show->user_id; $show->bet_amount; $show->bet_coin_name; $show->odds; $show->range; $show->up_down; $show->status; $show->fee; $show->delivery_amount; $show->delivery_time; $show->created_at; $show->updated_at; $show->panel() ->tools(function ($tools) { $tools->disableEdit(); //$tools->disableList(); $tools->disableDelete(); }); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new OptionSceneOrder(), function (Form $form) { $form->display('order_id'); $form->text('order_no'); $form->text('user_id'); $form->text('bet_amount'); $form->text('bet_coin_name'); $form->text('odds'); $form->text('range'); $form->text('up_down'); $form->text('status'); $form->text('fee'); $form->text('delivery_amount'); $form->text('delivery_time'); $form->display('created_at'); $form->display('updated_at'); if ($form->isCreating()) { } if ($form->isEditing()) { $form->saved(function (Form $form) { }); } }); } }