header('会员账户') ->body($this->userGrid()); } /** * Make a grid builder. * @return Grid */ protected function userGrid() { $grid = new Grid(new UserAccount); $grid->disableCreateButton(); $grid->disableRowSelector(); $grid->paginate(10); $grid->model()->with('user.info'); $grid->filter(function ($filter) { $filter->disableIdFilter(); $filter->where(function ($query) { $query->whereHas('user', function ($query) { $query->whereHas('info', function ($query) { $query->where('nickname', 'like', "%{$this->input}%"); }); }); }, '用户昵称'); }); $grid->column('用户昵称')->display(function () { $avatar = ''; return $avatar . ' ' . $this->user->info->nickname; }); $grid->cash('现金账户')->modal('近期账变(20条)', function ($model) { $comments = $model->logs()->where('type', 'cash')->take(20)->orderBy('created_at', 'desc')->get()->map(function ($log) { return [$log->id, $log->rule->title, $log->variable, $log->frozen_text, $log->created_at, $log->source_formart]; }); return new Table(['ID', '触发事件', '变更数额', '已结算', '变更时间', '描述'], $comments->toArray()); }); $grid->score('积分账户')->modal('近期账变(20条)', function ($model) { $comments = $model->logs()->where('type', 'score')->take(20)->orderBy('created_at', 'desc')->get()->map(function ($log) { return [$log->id, $log->rule->title, $log->variable, $log->frozen_text, $log->created_at, $log->source_formart]; }); return new Table(['ID', '触发事件', '变更数额', '已结算', '变更时间', '描述'], $comments->toArray()); }); $grid->updated_at('最后变更时间'); $grid->actions(function ($actions) { $actions->disableDelete(); $actions->disableEdit(); $actions->disableView(); $actions->append('账户日志  '); $actions->append('充值余额'); }); return $grid; } public function recharge(Request $request, Content $content, User $user) { if ($request->isMethod('POST')) { try { $res = Account::executeRule($user, 'recharge', $request->amount, false, ['type' => 'recharge', 'admin' => 1]); admin_toastr('充值成功'); return redirect()->action('\App\Admin\Controllers\AccountController@users'); } catch (\Exception $e) { admin_toastr($e->getMessage(), 'error'); } } else { return $content ->header('账户充值') ->description($user->info->nickname) ->body($this->rechargeForm($user)); } } protected function rechargeForm($user) { $form = new Form(new User); $form->tools(function (Tools $tools) { $tools->disableList(); $tools->disableDelete(); $tools->disableView(); }); $form->footer(function ($footer) { $footer->disableReset(); $footer->disableViewCheck(); $footer->disableEditingCheck(); $footer->disableCreatingCheck(); }); $form->setAction(route('accounts.recharge', ['user' => $user])); $form->setTitle(' '); $form->setWidth(1, 2); $form->currency('amount', '充值金额')->symbol('¥'); return $form->render(); } public function user_logs(Content $content, User $user) { return $content ->header('账户日志') ->description($user->info->nickname) ->body($this->userLogsGrid($user->id)); } protected function userLogsGrid($user_id) { $grid = new Grid(new UserAccountLog); $grid->disableCreateButton(); $grid->disableRowSelector(); $grid->disableActions(); $grid->model()->where('user_id', $user_id)->orderBy('id', 'desc')->with(['rule']); $grid->filter(function ($filter) { $filter->disableIdFilter(); $filter->column(1 / 3, function ($filter) { $filter->equal('type', '账户类型')->select(config('user_account.account_type')); $filter->equal('rule.id', '触发规则')->select( UserAccountRule::pluck('title', 'id') ); }); $filter->column(1 / 3, function ($filter) { $filter->equal('variable', '账户变动'); $filter->equal('balance', '当期余额'); }); $filter->column(1 / 3, function ($filter) { $filter->between('created_at', '入账时间')->datetime(); $filter->equal('frozen', '已结算')->select([ 0 => '是', 1 => '否', ]); }); // $filter->expand(); }); $grid->column('账户类型')->display(function () { return $this->type_text; }); $grid->column('rule.title', '触发规则'); $grid->variable('账户变动'); $grid->balance('当期余额'); $grid->column('已结算')->display(function () { return $this->frozen_text; }); $grid->created_at('入账时间'); return $grid; } public function heads(Content $content) { return $content ->header('团长账户') ->body($this->headGrid()); } /** * Make a grid builder. * @return Grid */ protected function headGrid() { $grid = new Grid(new HeadAccount); $grid->disableCreateButton(); $grid->disableRowSelector(); $grid->disableFilter(); $grid->model()->with(['head.user.info']); $grid->filter(function ($filter) { $filter->disableIdFilter(); $filter->column(1 / 3, function ($filter) { $filter->equal('head_id', '团长编号'); }); $filter->column(1 / 3, function ($filter) { $filter->like('head.community_name', '社区名称'); }); $filter->column(1 / 3, function ($filter) { $filter->like('head.head_name', '团长姓名'); }); // $filter->expand(); }); $grid->head_id('团长编号')->sortable(); $grid->column('用户')->display(function () { $avatar = ''; return $avatar . ' ' . $this->head->user->info->nickname; }); $grid->column('社区/团长')->display(function () { return $this->head->community_name . '
' . $this->head->head_name; }); $grid->balance('账户余额'); $grid->updated_at('最后变更时间'); $grid->actions(function ($actions) { $actions->disableDelete(); $actions->disableEdit(); $actions->disableView(); $actions->append('账户日志'); }); return $grid; } /** * 团长账户日志 * @Author: * @Date:2019-04-17T11:32:12+0800 * @param Content $content [description] * @param Head $head [description] * @return [type] [description] */ public function head_logs(Content $content, Head $head) { return $content ->header('账户日志') ->description($head->head_name) ->body($this->headLogsGrid($head->id)); } protected function headLogsGrid($head_id) { $grid = new Grid(new HeadProfit); $grid->disableCreateButton(); $grid->disableRowSelector(); $grid->disableActions(); $grid->disableFilter(); $grid->model()->where('head_id', $head_id)->orderBy('id', 'desc')->with(['order', 'detail.item']); $grid->column('order.orderid', '订单编号'); $grid->column('order.amount', '订单总额'); $grid->column('商品名称')->display(function () { return $this->detail->item->name; }); $grid->column('detail.price', '商品价格'); $grid->column('detail.number', '购买数量'); $grid->column('商品小计')->display(function () { return $this->detail->total; }); $grid->amount('结算金额'); $grid->column('结算比例')->display(function () { return number_format($this->amount / $this->detail->total * 100, 2) . '%'; }); $grid->column('结算状态')->display(function () { if ($this->status == 1) { return '已结算'; } else { return '待结算'; } }); $grid->created_at('创建时间'); $grid->settled_at('结算时间'); return $grid; } }