FarmUserTalentController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace App\Module\Farm\AdminControllers;
  3. use App\Module\Farm\AdminControllers\Helper\GridHelper;
  4. use App\Module\Farm\Enums\TALENT_LEVEL;
  5. use App\Module\Farm\Repositories\FarmUserTalentRepository;
  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. /**
  12. * 达人等级管理控制器
  13. */
  14. #[Resource('farm-user-talents', names: 'dcat.admin.farm-user-talents')]
  15. class FarmUserTalentController extends AdminController
  16. {
  17. /**
  18. * 页面标题
  19. *
  20. * @var string
  21. */
  22. protected $title = '达人等级管理';
  23. /**
  24. * 页面描述
  25. *
  26. * @var string
  27. */
  28. protected $description = '管理用户的达人等级信息';
  29. /**
  30. * 构建表格
  31. *
  32. * @return Grid
  33. */
  34. protected function grid()
  35. {
  36. return Grid::make(new FarmUserTalentRepository(), function (Grid $grid) {
  37. $helper = new GridHelper($grid, $this);
  38. $grid->column('id', 'ID')->sortable();
  39. $grid->column('user_id', '用户ID')->sortable();
  40. $grid->column('talent_level', '达人等级')->display(function ($value) {
  41. return TALENT_LEVEL::getName($value);
  42. })->sortable();
  43. $grid->column('direct_count', '直推人数')->sortable();
  44. $grid->column('team_count', '团队总人数')->sortable();
  45. $grid->column('created_at', '创建时间')->sortable();
  46. $grid->column('updated_at', '更新时间')->sortable();
  47. $grid->filter(function (Grid\Filter $filter) {
  48. $filter->equal('id', 'ID');
  49. $filter->equal('user_id', '用户ID');
  50. $filter->equal('talent_level', '达人等级')->select([
  51. TALENT_LEVEL::NONE => TALENT_LEVEL::getName(TALENT_LEVEL::NONE),
  52. TALENT_LEVEL::BEGINNER => TALENT_LEVEL::getName(TALENT_LEVEL::BEGINNER),
  53. TALENT_LEVEL::INTERMEDIATE => TALENT_LEVEL::getName(TALENT_LEVEL::INTERMEDIATE),
  54. TALENT_LEVEL::ADVANCED => TALENT_LEVEL::getName(TALENT_LEVEL::ADVANCED),
  55. TALENT_LEVEL::SENIOR => TALENT_LEVEL::getName(TALENT_LEVEL::SENIOR),
  56. TALENT_LEVEL::TOP => TALENT_LEVEL::getName(TALENT_LEVEL::TOP),
  57. ]);
  58. $filter->between('direct_count', '直推人数');
  59. $filter->between('team_count', '团队总人数');
  60. $filter->between('created_at', '创建时间')->datetime();
  61. });
  62. });
  63. }
  64. /**
  65. * 构建详情页
  66. *
  67. * @param mixed $id
  68. * @return Show
  69. */
  70. protected function detail($id)
  71. {
  72. return Show::make($id, new FarmUserTalentRepository(), function (Show $show) {
  73. $show->field('id', 'ID');
  74. $show->field('user_id', '用户ID');
  75. $show->field('talent_level', '达人等级')->as(function ($value) {
  76. return TALENT_LEVEL::getName($value);
  77. });
  78. $show->field('direct_count', '直推人数');
  79. $show->field('team_count', '团队总人数');
  80. $show->field('created_at', '创建时间');
  81. $show->field('updated_at', '更新时间');
  82. });
  83. }
  84. /**
  85. * 构建表单
  86. *
  87. * @return Form
  88. */
  89. protected function form()
  90. {
  91. return Form::make(new FarmUserTalentRepository(), function (Form $form) {
  92. $form->display('id', 'ID');
  93. $form->text('user_id', '用户ID')->required()->rules('required|integer');
  94. $form->select('talent_level', '达人等级')->options([
  95. TALENT_LEVEL::NONE => TALENT_LEVEL::getName(TALENT_LEVEL::NONE),
  96. TALENT_LEVEL::BEGINNER => TALENT_LEVEL::getName(TALENT_LEVEL::BEGINNER),
  97. TALENT_LEVEL::INTERMEDIATE => TALENT_LEVEL::getName(TALENT_LEVEL::INTERMEDIATE),
  98. TALENT_LEVEL::ADVANCED => TALENT_LEVEL::getName(TALENT_LEVEL::ADVANCED),
  99. TALENT_LEVEL::SENIOR => TALENT_LEVEL::getName(TALENT_LEVEL::SENIOR),
  100. TALENT_LEVEL::TOP => TALENT_LEVEL::getName(TALENT_LEVEL::TOP),
  101. ])->required();
  102. $form->number('direct_count', '直推人数')->min(0)->default(0)->required();
  103. $form->number('team_count', '团队总人数')->min(0)->default(0)->required();
  104. $form->display('created_at', '创建时间');
  105. $form->display('updated_at', '更新时间');
  106. });
  107. }
  108. }