积分账户
* 功能: 管理用户的种植点数,每种植一个种子增长1点
*/
#[Resource('point-point', names: 'dcat.admin.point')]
class PointController extends AdminController
{
/**
* 数据仓库
*/
protected string $repository = PointRepository::class;
/**
* 页面标题
*/
protected $title = '积分账户';
/**
* 列表页面
*/
protected function grid(): Grid
{
return Grid::make(new PointRepository(), function (Grid $grid) {
$gridHelper = new GridHelper($grid,$this);
$grid->column('id', 'ID')->sortable();
$gridHelper->columnUserPoint();
$gridHelper->columnBalance();
$gridHelper->columnTimestamp('create_time', '创建时间');
$gridHelper->columnTimestamp('update_time', '更新时间');
$grid->filter(function (Grid\Filter $filter) {
$filterHelper = new FilterHelper($filter,$this);
$filterHelper->equalUserId();
$filterHelper->equalPointId();
$filterHelper->betweenBalance();
$filterHelper->betweenTimestamp('create_time', '创建时间');
});
$grid->disableCreateButton();
$grid->disableDeleteButton();
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->disableDelete();
});
$grid->tools(function (Grid\Tools $tools) {
$tools->append('查看日志');
$tools->append('管理员操作');
});
});
}
/**
* 详情页面
*/
protected function detail($id): Show
{
return Show::make($id, new PointRepository(), function (Show $show) {
$showHelper = new ShowHelper($show,$this);
$show->field('id', 'ID');
$show->field('user_id', '用户ID');
$showHelper->fieldPointId();
$showHelper->fieldBalance();
$showHelper->fieldTimestamp('create_time', '创建时间');
$showHelper->fieldTimestamp('update_time', '更新时间');
$show->disableEditButton();
$show->disableDeleteButton();
});
}
/**
* 表单页面
*/
protected function form(): Form
{
return Form::make(new PointRepository(), function (Form $form) {
$formHelper = new FormHelper($form,$this);
$form->display('id', 'ID');
$formHelper->numberUserId();
$formHelper->selectPointId();
$formHelper->numberBalance();
$formHelper->hiddenTimestamps();
$form->saving(function (Form $form) {
if ($form->isCreating()) {
$form->create_time = time();
}
$form->update_time = time();
});
$form->disableCreatingCheck();
$form->disableEditingCheck();
});
}
}