service = new LogService(); } /** * 列表页面 * * @return Grid */ protected function grid() { return Grid::make(new FundLog(['user']), function (Grid $grid) { // 使用GridHelper $helper = new GridHelper($grid, $this); // 使用高复用价值的列方法 $grid->column('id', 'ID')->sortable(); $helper->columnUserFund(); // 组合列,显示用户ID和资金账户 $helper->columnAmount(); // 格式化金额显示,带颜色 $helper->columnMoney('before_balance', '之前余额'); // 格式化金额显示 $helper->columnMoney('later_balance', '之后余额'); // 格式化金额显示 $grid->column('remark', '备注')->limit(30); $helper->columnTimestamp('create_time', '操作时间'); // 格式化时间戳 // 关联操作列 $grid->column('operate_type', '关联')->expand(function() { $url = admin_url('404'); $title = '未知'; if($this->operate_type == 'Circulation'){ $url = admin_route('fund_circulation.index',['id'=>$this->operate_id]); $title = '流转'; } if($this->operate_type == 'Trade'){ if(substr($this->operate_id,0,5) == 'order'){ // 订单 $url = admin_route('order.index',['id'=>substr($this->operate_id,6) ]); $title = '订单'; } if(substr($this->operate_id,0,8) == 'Transfer'){ // 订单 $url = admin_route('transfer.index',['id'=>substr($this->operate_id,9) ]); $title = '划转'; } } $link = new Link($title,$url); return $link; }); // 禁用不需要的功能 $grid->disableCreateButton(); $grid->disableDeleteButton(); // 筛选器 $grid->filter(function (Grid\Filter $filter) { // 使用FilterHelper $helper = new FilterHelper($filter, $this); // 直接实现资金日志筛选组 $filter->equal('user_id', '用户ID'); $helper->equalFundId(); $helper->equalOperateType(); $helper->betweenAmount(); $filter->like('remark', '备注'); $helper->betweenTimestamp('create_time', '创建时间'); }); // 操作按钮 $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableEdit(); $actions->disableDelete(); }); }); } /** * 详情页面 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new FundLog(), function (Show $show) { // 使用ShowHelper $helper = new ShowHelper($show, $this); // 直接实现资金日志详情面板 $show->divider('操作信息'); $show->field('user_id', '用户ID'); $helper->fieldFundId(); $helper->fieldAmount(); $helper->field('before_balance','操作前'); $helper->field('later_balance','操作后'); $helper->fieldOperateType(); $show->field('remark', '备注'); $helper->fieldTimestamp('create_time', '创建时间'); // $later_balance // $before_balance // 显示关联的资金账户 $show->relation('account', '资金账户', function ($model) { $show = Show::make($model, new FundModel( )); // 在关联显示中也使用ShowHelper $helper = new ShowHelper($show, $this); // 直接实现资金账户详情面板 $show->divider('账户信息'); $show->field('user_id', '用户ID'); $helper->fieldFundId(); $helper->fieldBalance(); $helper->fieldTimestamp('create_time', '创建时间'); $helper->fieldTimestamp('update_time', '更新时间'); return $show; }); }); } /** * 表单页面 * * @return Form */ protected function form() { return Form::make(new FundLog(), function (Form $form) { // 使用FormHelper $helper = new FormHelper($form, $this); $form->display('id', 'ID'); // 使用高复用价值的表单方法组 $helper->addFundOperationFields(); // 添加完整的资金操作表单组 $form->display('create_time', '创建时间'); // 保存前回调 $form->saving(function (Form $form) { // 检查用户和资金账户是否存在 if ($form->isCreating()) { $userId = $form->user_id; $fundId = $form->fund_id; $user = \App\Module\User\Models\User::find($userId); if (!$user) { return $form->response()->error('用户ID不存在'); } $account = \App\Module\Fund\Models\FundAccount::where('user_id', $userId) ->where('fund_id', $fundId) ->first(); if (!$account) { return $form->response()->error('资金账户不存在'); } } }); // 保存后回调 $form->saved(function (Form $form) { // 更新资金账户余额 if ($form->isCreating()) { $this->service->updateAccountBalance($form->user_id, $form->fund_id, $form->amount); return $form->response()->success('保存成功,资金账户余额已更新'); } }); }); } }