PointOrderController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace App\Module\Point\AdminControllers;
  3. use App\Module\Point\AdminControllers\Helper\FilterHelper;
  4. use App\Module\Point\AdminControllers\Helper\FormHelper;
  5. use App\Module\Point\AdminControllers\Helper\GridHelper;
  6. use App\Module\Point\AdminControllers\Helper\ShowHelper;
  7. use App\Module\Point\Repositorys\PointOrderRepository;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Show;
  11. use Spatie\RouteAttributes\Attributes\Resource;
  12. use UCore\DcatAdmin\AdminController;
  13. /**
  14. * 种植点数订单控制器
  15. *
  16. * 路由: /admin/point/point-order
  17. * 菜单: 积分管理 -> 点数订单
  18. * 功能: 管理与种植点数相关的订单记录
  19. */
  20. #[Resource('point-point-order', names: 'dcat.admin.point-order')]
  21. class PointOrderController extends AdminController
  22. {
  23. /**
  24. * 数据仓库
  25. */
  26. protected string $repository = PointOrderRepository::class;
  27. /**
  28. * 页面标题
  29. */
  30. protected $title = '点数订单';
  31. /**
  32. * 列表页面
  33. */
  34. protected function grid(): Grid
  35. {
  36. return Grid::make(new PointOrderRepository(), function (Grid $grid) {
  37. $gridHelper = new GridHelper($grid,$this);
  38. $grid->column('id', 'ID')->sortable();
  39. $grid->column('order_no', '订单号');
  40. $gridHelper->columnUserPoint();
  41. $gridHelper->columnPoints('amount', '积分数量');
  42. $grid->column('order_type', '订单类型')->using([
  43. 'exchange' => '积分兑换',
  44. 'consume' => '积分消费',
  45. 'reward' => '积分奖励',
  46. 'refund' => '积分退款',
  47. ])->label([
  48. 'exchange' => 'primary',
  49. 'consume' => 'danger',
  50. 'reward' => 'success',
  51. 'refund' => 'warning',
  52. ]);
  53. $grid->column('title', '订单标题')->limit(30);
  54. $gridHelper->columnStatus();
  55. $gridHelper->columnTimestamp('create_time', '创建时间');
  56. $grid->filter(function (Grid\Filter $filter) {
  57. $filterHelper = new FilterHelper($filter,$this);
  58. $filterHelper->likeOrderNo();
  59. $filterHelper->equalUserId();
  60. $filterHelper->equalPointId();
  61. $filterHelper->equalOrderType();
  62. $filterHelper->equalStatus();
  63. $filter->like('title', '订单标题');
  64. $filterHelper->betweenTimestamp('create_time', '创建时间');
  65. });
  66. $grid->tools(function (Grid\Tools $tools) {
  67. $tools->append('<a href="/admin/point/point" class="btn btn-sm btn-primary">用户积分</a>');
  68. });
  69. });
  70. }
  71. /**
  72. * 详情页面
  73. */
  74. protected function detail($id): Show
  75. {
  76. return Show::make($id, new PointOrderRepository(), function (Show $show) {
  77. $showHelper = new ShowHelper($show,$this);
  78. $show->field('id', 'ID');
  79. $show->field('order_no', '订单号');
  80. $show->field('user_id', '用户ID');
  81. $showHelper->fieldPointId();
  82. $showHelper->fieldPoints('amount', '积分数量');
  83. $showHelper->fieldOrderType();
  84. $show->field('title', '订单标题');
  85. $show->field('description', '订单描述');
  86. $showHelper->fieldStatus();
  87. $showHelper->fieldJson('extra_data', '额外数据');
  88. $showHelper->fieldTimestamp('create_time', '创建时间');
  89. $showHelper->fieldTimestamp('update_time', '更新时间');
  90. });
  91. }
  92. /**
  93. * 表单页面
  94. */
  95. protected function form(): Form
  96. {
  97. return Form::make(new PointOrderRepository(), function (Form $form) {
  98. $formHelper = new FormHelper($form,$this);
  99. $form->display('id', 'ID');
  100. $formHelper->textOrderNo('order_no', '订单号', false);
  101. $formHelper->numberUserId();
  102. $formHelper->selectPointId();
  103. $formHelper->numberAmount('amount', '积分数量', true, 1);
  104. $formHelper->selectOrderType();
  105. $formHelper->textTitle();
  106. $formHelper->textareaDescription();
  107. $formHelper->selectStatus();
  108. $formHelper->textareaJson('extra_data', '额外数据');
  109. $formHelper->hiddenTimestamps();
  110. $form->saving(function (Form $form) {
  111. if ($form->isCreating()) {
  112. // 自动生成订单号
  113. if (empty($form->order_no)) {
  114. $form->order_no = 'PO' . date('YmdHis') . mt_rand(1000, 9999);
  115. }
  116. $form->create_time = time();
  117. $form->status = $form->status ?? 0; // 默认待处理
  118. }
  119. $form->update_time = time();
  120. });
  121. });
  122. }
  123. }