FarmUserTalentController.php 4.3 KB

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