GroupItemController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace App\Module\GameItems\AdminControllers;
  3. use App\Module\GameItems\Repositorys\ItemGroupItemRepository;
  4. use App\Module\GameItems\Repositorys\ItemGroupRepository;
  5. use App\Module\GameItems\Repositorys\ItemRepository;
  6. use Dcat\Admin\Form;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Show;
  9. use UCore\DcatAdmin\AdminController;
  10. use Spatie\RouteAttributes\Attributes\Resource;
  11. use UCore\DcatAdmin\FilterHelper;
  12. use UCore\DcatAdmin\FormHelper;
  13. use UCore\DcatAdmin\GridHelper;
  14. use UCore\DcatAdmin\ShowHelper;
  15. #[Resource('game-items-group-items', names: 'dcat.admin.game-items-group-items')]
  16. class GroupItemController extends AdminController
  17. {
  18. /**
  19. * 标题
  20. *
  21. * @var string
  22. */
  23. protected $title = '物品组内容管理';
  24. /**
  25. * 列表页
  26. *
  27. * @return Grid
  28. */
  29. protected function grid()
  30. {
  31. return Grid::make(new ItemGroupItemRepository(), function (Grid $grid) {
  32. $helper = new GridHelper($grid, $this);
  33. $helper->columnId();
  34. $grid->column('group.name', '物品组');
  35. $grid->column('item.name', '物品');
  36. $grid->column('weight', '权重');
  37. $grid->column('created_at', '创建时间');
  38. $grid->column('updated_at', '更新时间');
  39. // 筛选
  40. $grid->filter(function ($filter) {
  41. $helper = new FilterHelper($filter, $this);
  42. $helper->equal('id', 'ID');
  43. $filter->equal('group_id', '物品组')->select(
  44. (new ItemGroupRepository())->pluck('name', 'id')
  45. );
  46. $filter->equal('item_id', '物品')->select(
  47. (new ItemRepository())->pluck('name', 'id')
  48. );
  49. });
  50. });
  51. }
  52. /**
  53. * 详情页
  54. *
  55. * @param mixed $id
  56. * @return Show
  57. */
  58. protected function detail($id)
  59. {
  60. return Show::make((new ItemGroupItemRepository())->findOrFail($id), function (Show $show) {
  61. $helper = new ShowHelper($show, $this);
  62. $helper->field('id', 'ID');
  63. $show->field('group.name', '物品组');
  64. $show->field('item.name', '物品');
  65. $helper->field('weight', '权重');
  66. $helper->field('created_at', '创建时间');
  67. $helper->field('updated_at', '更新时间');
  68. });
  69. }
  70. /**
  71. * 表单
  72. *
  73. * @return Form
  74. */
  75. protected function form()
  76. {
  77. return Form::make(new ItemGroupItemRepository(), function (Form $form) {
  78. $helper = new FormHelper($form, $this);
  79. $form->select('group_id', '物品组')
  80. ->options((new ItemGroupRepository())->pluck('name', 'id'))
  81. ->required();
  82. $form->select('item_id', '物品')
  83. ->options((new ItemRepository())->pluck('name', 'id'))
  84. ->required();
  85. $helper->number('weight')
  86. ->default(1.0)
  87. ->min(0.001)
  88. ->step(0.001)
  89. ->required()
  90. ->help('权重越高,随机选择时概率越大');
  91. });
  92. }
  93. }