PointController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. namespace App\Module\Point\AdminControllers;
  3. use App\Module\Point\Models\PointModel;
  4. use App\Module\Point\Repositorys\PointRepository;
  5. use Dcat\Admin\Form;
  6. use Dcat\Admin\Grid;
  7. use Dcat\Admin\Show;
  8. use UCore\DcatAdmin\AdminController;
  9. /**
  10. * 积分管理控制器
  11. *
  12. * 路由: /admin/point/point
  13. * 菜单: 积分管理 -> 用户积分
  14. */
  15. class PointController extends AdminController
  16. {
  17. /**
  18. * 数据仓库
  19. */
  20. protected string $repository = PointRepository::class;
  21. /**
  22. * 页面标题
  23. */
  24. protected string $title = '用户积分';
  25. /**
  26. * 列表页面
  27. */
  28. protected function grid(): Grid
  29. {
  30. return Grid::make(new PointRepository(), function (Grid $grid) {
  31. $grid->column('id', 'ID')->sortable();
  32. $grid->column('user_id', '用户ID')->sortable();
  33. $grid->column('point_id', '积分类型')->using([
  34. 1 => '经验积分',
  35. 2 => '成就积分',
  36. 3 => '活动积分',
  37. 4 => '签到积分',
  38. 5 => '推荐积分',
  39. ])->label([
  40. 1 => 'primary',
  41. 2 => 'success',
  42. 3 => 'warning',
  43. 4 => 'info',
  44. 5 => 'danger',
  45. ]);
  46. $grid->column('balance', '积分余额')->sortable()->display(function ($balance) {
  47. return number_format($balance);
  48. });
  49. $grid->column('create_time', '创建时间')->display(function ($time) {
  50. return date('Y-m-d H:i:s', $time);
  51. })->sortable();
  52. $grid->column('update_time', '更新时间')->display(function ($time) {
  53. return date('Y-m-d H:i:s', $time);
  54. })->sortable();
  55. $grid->filter(function (Grid\Filter $filter) {
  56. $filter->equal('user_id', '用户ID');
  57. $filter->equal('point_id', '积分类型')->select([
  58. 1 => '经验积分',
  59. 2 => '成就积分',
  60. 3 => '活动积分',
  61. 4 => '签到积分',
  62. 5 => '推荐积分',
  63. ]);
  64. $filter->between('balance', '积分余额');
  65. $filter->between('create_time', '创建时间')->datetime();
  66. });
  67. $grid->disableCreateButton();
  68. $grid->disableDeleteButton();
  69. $grid->actions(function (Grid\Displayers\Actions $actions) {
  70. $actions->disableDelete();
  71. });
  72. $grid->tools(function (Grid\Tools $tools) {
  73. $tools->append('<a href="/admin/point/point-log" class="btn btn-sm btn-primary">查看日志</a>');
  74. });
  75. });
  76. }
  77. /**
  78. * 详情页面
  79. */
  80. protected function detail($id): Show
  81. {
  82. return Show::make($id, new PointRepository(), function (Show $show) {
  83. $show->field('id', 'ID');
  84. $show->field('user_id', '用户ID');
  85. $show->field('point_id', '积分类型')->using([
  86. 1 => '经验积分',
  87. 2 => '成就积分',
  88. 3 => '活动积分',
  89. 4 => '签到积分',
  90. 5 => '推荐积分',
  91. ]);
  92. $show->field('balance', '积分余额')->as(function ($balance) {
  93. return number_format($balance);
  94. });
  95. $show->field('create_time', '创建时间')->as(function ($time) {
  96. return date('Y-m-d H:i:s', $time);
  97. });
  98. $show->field('update_time', '更新时间')->as(function ($time) {
  99. return date('Y-m-d H:i:s', $time);
  100. });
  101. $show->disableEditButton();
  102. $show->disableDeleteButton();
  103. });
  104. }
  105. /**
  106. * 表单页面
  107. */
  108. protected function form(): Form
  109. {
  110. return Form::make(new PointRepository(), function (Form $form) {
  111. $form->display('id', 'ID');
  112. $form->number('user_id', '用户ID')->required();
  113. $form->select('point_id', '积分类型')->options([
  114. 1 => '经验积分',
  115. 2 => '成就积分',
  116. 3 => '活动积分',
  117. 4 => '签到积分',
  118. 5 => '推荐积分',
  119. ])->required();
  120. $form->number('balance', '积分余额')->required()->min(0);
  121. $form->hidden('create_time');
  122. $form->hidden('update_time');
  123. $form->saving(function (Form $form) {
  124. if ($form->isCreating()) {
  125. $form->create_time = time();
  126. }
  127. $form->update_time = time();
  128. });
  129. $form->disableCreatingCheck();
  130. $form->disableEditingCheck();
  131. });
  132. }
  133. }