column('id', 'ID')->sortable(); $grid->column('group_id', '奖励组')->display(function ($groupId) { $group = GameRewardGroup::find($groupId); return $group ? "{$group->name} ({$group->code})" : "未知 ({$groupId})"; }); $grid->column('reward_type', '奖励类型')->display(function ($type) { return REWARD_TYPE::getName($type); }); $grid->column('target_id', '目标ID'); $grid->column('quantity', '数量'); $grid->column('weight', '权重'); $grid->column('is_guaranteed', '必中')->switch(); $grid->column('created_at', '创建时间'); $grid->column('updated_at', '更新时间'); $grid->filter(function (Grid\Filter $filter) { $filter->equal('id', 'ID'); $filter->equal('group_id', '奖励组')->select( GameRewardGroup::pluck('name', 'id') ); $filter->equal('reward_type', '奖励类型')->select(REWARD_TYPE::getAll()); $filter->equal('target_id', '目标ID'); $filter->equal('is_guaranteed', '必中')->select([0 => '否', 1 => '是']); }); }); } /** * 创建详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new GameRewardItemRepository(), function (Show $show) { $show->field('id', 'ID'); $show->field('group_id', '奖励组')->as(function ($groupId) { $group = GameRewardGroup::find($groupId); return $group ? "{$group->name} ({$group->code})" : "未知 ({$groupId})"; }); $show->field('reward_type', '奖励类型')->as(function ($type) { return REWARD_TYPE::getName($type); }); $show->field('target_id', '目标ID'); $show->field('param1', '参数1'); $show->field('param2', '参数2'); $show->field('quantity', '数量'); $show->field('weight', '权重'); $show->field('is_guaranteed', '必中')->as(function ($value) { return $value ? '是' : '否'; }); $show->field('extra_data', '额外数据')->json(); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); }); } /** * 创建表单 * * @return Form */ protected function form() { return Form::make(new GameRewardItemRepository(), function (Form $form) { $form->display('id', 'ID'); $form->select('group_id', '奖励组') ->options(GameRewardGroup::pluck('name', 'id')) ->required(); $form->select('reward_type', '奖励类型') ->options(REWARD_TYPE::getAll()) ->required(); $form->number('target_id', '目标ID') ->required() ->help('根据奖励类型不同,表示物品ID、货币ID等'); $form->number('param1', '参数1') ->default(0) ->help('根据奖励类型不同含义,如物品的品质、货币的来源等'); $form->number('param2', '参数2') ->default(0) ->help('根据奖励类型不同含义,如物品的绑定状态、货币的类型等'); $form->number('quantity', '数量') ->default(1) ->min(1) ->required(); $form->number('weight', '权重') ->default(1.00) ->step(0.01) ->required() ->help('随机发放时使用,权重越高,被选中的概率越大'); $form->switch('is_guaranteed', '必中') ->default(0) ->help('开启后,在随机发放时会优先选择'); $form->textarea('extra_data', '额外数据') ->help('JSON格式,可存储特定奖励类型的额外参数'); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); }); } }