service = new UserService(); } /** * 列表页面 * * @return Grid */ protected function grid() { return Grid::make(new UserPhone(), function (Grid $grid) { $helper = new GridHelper($grid, $this); $grid->column('id', 'ID')->sortable(); $grid->column('user_id', '用户ID')->sortable(); $grid->column('phone', '手机号'); $grid->column('status', '状态')->using([ PHONE_STATUS::BIND->value => '已绑定', PHONE_STATUS::UNBIND->value => '未绑定', PHONE_STATUS::WAIT_CHECK->value => '等待验证', ])->label([ PHONE_STATUS::BIND->value => 'success', PHONE_STATUS::UNBIND->value => 'danger', PHONE_STATUS::WAIT_CHECK->value => 'warning', ]); $grid->column('type', '类型')->using([ PHONE_TYPE::SYS->value => '系统认证', PHONE_TYPE::THREE->value => '第三方认证', ]); $helper->columnCreatedAt(); $helper->columnUpdatedAt(); // 筛选器 $grid->filter(function (Grid\Filter $filter) { $helper = new FilterHelper($filter, $this); $filter->equal('id', 'ID'); $filter->equal('user_id', '用户ID'); $filter->like('phone', '手机号'); $filter->equal('status', '状态')->select([ PHONE_STATUS::BIND->value => '已绑定', PHONE_STATUS::UNBIND->value => '未绑定', PHONE_STATUS::WAIT_CHECK->value => '等待验证', ]); $filter->equal('type', '类型')->select([ PHONE_TYPE::SYS->value => '系统认证', PHONE_TYPE::THREE->value => '第三方认证', ]); $helper->betweenCreatedAt(); }); }); } /** * 详情页面 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new UserPhone(), function (Show $show) { $helper = new ShowHelper($show, $this); $show->field('id', 'ID'); $show->field('user_id', '用户ID'); $show->field('phone', '手机号'); $show->field('status', '状态')->as(function ($value) { $statusMap = [ PHONE_STATUS::BIND->value => '已绑定', PHONE_STATUS::UNBIND->value => '未绑定', PHONE_STATUS::WAIT_CHECK->value => '等待验证', ]; return $statusMap[$value] ?? '未知'; }); $show->field('type', '类型')->as(function ($value) { $typeMap = [ PHONE_TYPE::SYS->value => '系统认证', PHONE_TYPE::THREE->value => '第三方认证', ]; return $typeMap[$value] ?? '未知'; }); $helper->fieldCreatedAt(); $helper->fieldUpdatedAt(); $helper->fieldDeletedAt(); // 显示关联的用户信息 $show->relation('user', '用户信息', function ($model) { $show = Show::make($model, new \App\Module\User\Models\User()); $helper = new ShowHelper($show, $this); $helper->fieldUserId(); $helper->fieldUsername(); $helper->fieldStatus(); $helper->fieldCreatedAt(); $helper->fieldUpdatedAt(); return $show; }); }); } /** * 表单页面 * * @return Form */ protected function form() { return Form::make(new UserPhone(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); $form->number('user_id', '用户ID') ->required() ->min(1) ->help('用户ID,必须是有效的用户'); $form->text('phone', '手机号') ->required() ->rules('required|regex:/^1[3-9]\d{9}$/|unique:user_phones,phone,' . $form->getKey() . ',id') ->help('请输入有效的手机号码'); $form->radio('status', '状态') ->options([ PHONE_STATUS::BIND->value => '已绑定', PHONE_STATUS::UNBIND->value => '未绑定', PHONE_STATUS::WAIT_CHECK->value => '等待验证', ]) ->default(PHONE_STATUS::UNBIND->value); $form->radio('type', '类型') ->options([ PHONE_TYPE::SYS->value => '系统认证', PHONE_TYPE::THREE->value => '第三方认证', ]) ->default(PHONE_TYPE::SYS->value); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); // 保存前回调 $form->saving(function (Form $form) { // 如果是新建记录,需要检查用户ID是否存在 if ($form->isCreating()) { $userId = $form->user_id; $user = \App\Module\User\Models\User::find($userId); if (!$user) { return $form->response()->error('用户ID不存在'); } } }); }); } }