管理员操作 * 功能: 管理员手动调整用户的种植点数 */ #[Resource('point-point-admin', names: 'dcat.admin.point-admin')] class PointAdminController extends AdminController { /** * 数据仓库 */ protected string $repository = PointAdminRepository::class; /** * 页面标题 */ protected $title = '管理员操作'; /** * 列表页面 */ protected function grid(): Grid { return Grid::make(new PointAdminRepository(), function (Grid $grid) { $gridHelper = new GridHelper($grid,$this); $grid->column('id', 'ID')->sortable(); $gridHelper->columnUserPoint(); $grid->column('admin_id', '管理员ID'); $gridHelper->columnAmount('total_points', '操作积分'); $gridHelper->columnStatus(); $grid->column('remark', '备注')->limit(30); $gridHelper->columnTimestamp('create_time', '创建时间'); $grid->filter(function (Grid\Filter $filter) { $filterHelper = new FilterHelper($filter,$this); $filterHelper->equalUserId(); $filterHelper->equalAdminId(); $filterHelper->equalPointId(); $filterHelper->equalStatus(); $filterHelper->betweenAmount('total_points', '操作积分'); $filterHelper->betweenTimestamp('create_time', '创建时间'); $filterHelper->likeRemark(); }); $grid->tools(function (Grid\Tools $tools) { $tools->append('用户积分'); }); }); } /** * 详情页面 */ protected function detail($id): Show { return Show::make($id, new PointAdminRepository(), function (Show $show) { $showHelper = new ShowHelper($show,$this); $show->field('id', 'ID'); $show->field('user_id', '用户ID'); $showHelper->fieldPointId(); $show->field('admin_id', '管理员ID'); $showHelper->fieldAmount('total_points', '操作积分'); $showHelper->fieldStatus(); $show->field('remark', '备注'); $showHelper->fieldTimestamp('create_time', '创建时间'); $showHelper->fieldTimestamp('update_time', '更新时间'); }); } /** * 表单页面 */ protected function form(): Form { return Form::make(new PointAdminRepository(), function (Form $form) { $formHelper = new FormHelper($form,$this); $form->display('id', 'ID'); $formHelper->numberUserId(); $formHelper->selectPointId(); $form->number('admin_id', '管理员ID')->required()->min(1)->default(Admin::user()->getKey()); $form->number('total_points', '操作积分')->required()->help('正数为增加,负数为减少'); $formHelper->selectStatus(); $formHelper->textareaRemark('remark', '备注', true); $formHelper->hiddenTimestamps(); $form->saving(function (Form $form) { if ($form->isCreating()) { $form->create_time = time(); $form->status = 0; // 待处理 } $form->update_time = time(); }); $form->saved(function (Form $form, $result) { // 如果是新建且状态为已完成,执行积分操作 if ($form->isCreating() && $form->status == 1) { try { $pointService = new PointService($form->user_id, $form->point_id); $pointType = POINT_TYPE::from($form->point_id); $result = $pointService->admin_operate( $form->admin_id, $pointType, $form->total_points, $form->remark ); if (is_string($result)) { return $form->response()->error('积分操作失败:' . $result); } } catch (\Exception $e) { return $form->response()->error('积分操作异常:' . $e->getMessage()); } } }); }); } }