点数订单 * 功能: 管理与种植点数相关的订单记录 */ #[Resource('point-point-order', names: 'admin.point.point-order')] class PointOrderController extends AdminController { /** * 数据仓库 */ protected string $repository = PointOrderRepository::class; /** * 页面标题 */ protected $title = '点数订单'; /** * 列表页面 */ protected function grid(): Grid { return Grid::make(new PointOrderRepository(), function (Grid $grid) { $gridHelper = new GridHelper($grid,$this); $grid->column('id', 'ID')->sortable(); $grid->column('order_no', '订单号'); $gridHelper->columnUserPoint(); $gridHelper->columnPoints('amount', '积分数量'); $grid->column('order_type', '订单类型')->using([ 'exchange' => '积分兑换', 'consume' => '积分消费', 'reward' => '积分奖励', 'refund' => '积分退款', ])->label([ 'exchange' => 'primary', 'consume' => 'danger', 'reward' => 'success', 'refund' => 'warning', ]); $grid->column('title', '订单标题')->limit(30); $gridHelper->columnStatus(); $gridHelper->columnTimestamp('create_time', '创建时间'); $grid->filter(function (Grid\Filter $filter) { $filterHelper = new FilterHelper($filter,$this); $filterHelper->likeOrderNo(); $filterHelper->equalUserId(); $filterHelper->equalPointId(); $filterHelper->equalOrderType(); $filterHelper->equalStatus(); $filter->like('title', '订单标题'); $filterHelper->betweenTimestamp('create_time', '创建时间'); }); $grid->tools(function (Grid\Tools $tools) { $tools->append('用户积分'); }); }); } /** * 详情页面 */ protected function detail($id): Show { return Show::make($id, new PointOrderRepository(), function (Show $show) { $showHelper = new ShowHelper($show,$this); $show->field('id', 'ID'); $show->field('order_no', '订单号'); $show->field('user_id', '用户ID'); $showHelper->fieldPointId(); $showHelper->fieldPoints('amount', '积分数量'); $showHelper->fieldOrderType(); $show->field('title', '订单标题'); $show->field('description', '订单描述'); $showHelper->fieldStatus(); $showHelper->fieldJson('extra_data', '额外数据'); $showHelper->fieldTimestamp('create_time', '创建时间'); $showHelper->fieldTimestamp('update_time', '更新时间'); }); } /** * 表单页面 */ protected function form(): Form { return Form::make(new PointOrderRepository(), function (Form $form) { $formHelper = new FormHelper($form,$this); $form->display('id', 'ID'); $formHelper->textOrderNo('order_no', '订单号', false); $formHelper->numberUserId(); $formHelper->selectPointId(); $formHelper->numberAmount('amount', '积分数量', true, 1); $formHelper->selectOrderType(); $formHelper->textTitle(); $formHelper->textareaDescription(); $formHelper->selectStatus(); $formHelper->textareaJson('extra_data', '额外数据'); $formHelper->hiddenTimestamps(); $form->saving(function (Form $form) { if ($form->isCreating()) { // 自动生成订单号 if (empty($form->order_no)) { $form->order_no = 'PO' . date('YmdHis') . mt_rand(1000, 9999); } $form->create_time = time(); $form->status = $form->status ?? 0; // 默认待处理 } $form->update_time = time(); }); }); } }