TeamProfitController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Module\Promotion\AdminControllers;
  3. use App\Module\Promotion\AdminControllers\Helper\FilterHelper;
  4. use App\Module\Promotion\AdminControllers\Helper\FormHelper;
  5. use App\Module\Promotion\AdminControllers\Helper\GridHelper;
  6. use App\Module\Promotion\AdminControllers\Helper\ShowHelper;
  7. use App\Module\Promotion\Repositorys\PromotionProfitRepository;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Show;
  11. use UCore\DcatAdmin\AdminController;
  12. use Spatie\RouteAttributes\Attributes\Resource;
  13. /**
  14. * 团队收益记录管理控制器
  15. *
  16. * @package App\Module\Promotion\AdminControllers
  17. */
  18. #[Resource('promotion-profits', names: 'dcat.admin.promotion-profits')]
  19. class PromotionProfitController extends AdminController
  20. {
  21. /**
  22. * 标题
  23. *
  24. * @var string
  25. */
  26. protected $title = '团队收益记录管理';
  27. /**
  28. * 列表页
  29. *
  30. * @return Grid
  31. */
  32. protected function grid()
  33. {
  34. return Grid::make(new PromotionProfitRepository(['user', 'fromUser']), function (Grid $grid) {
  35. $helper = new GridHelper($grid, $this);
  36. $grid->column('id', 'ID')->sortable();
  37. $grid->column('user.username', '用户名');
  38. $grid->column('user.nickname', '用户昵称');
  39. $grid->column('from_user_id', '来源用户ID');
  40. $grid->column('fromUser.username', '来源用户名');
  41. $helper->columnProfitSourceType();
  42. $grid->column('source_id', '来源ID');
  43. $grid->column('item_id', '物品ID');
  44. $grid->column('amount', '数量');
  45. $grid->column('profit_rate', '分成比例');
  46. $grid->column('level', '层级');
  47. $grid->column('is_direct', '是否直推')->bool();
  48. $grid->column('created_at', '创建时间');
  49. $grid->column('updated_at', '更新时间');
  50. // 筛选
  51. $grid->filter(function ($filter) {
  52. $helper = new FilterHelper($filter, $this);
  53. $helper->equal('id', 'ID');
  54. $filter->equal('user_id', '用户ID');
  55. $filter->whereLike('user.username', '用户名');
  56. $filter->whereLike('user.nickname', '用户昵称');
  57. $filter->equal('from_user_id', '来源用户ID');
  58. $filter->whereLike('fromUser.username', '来源用户名');
  59. $helper->equalProfitSourceType();
  60. $filter->equal('source_id', '来源ID');
  61. $filter->equal('item_id', '物品ID');
  62. $filter->between('amount', '数量');
  63. $filter->between('profit_rate', '分成比例');
  64. $filter->equal('level', '层级');
  65. $filter->equal('is_direct', '是否直推')->radio([
  66. 1 => '是',
  67. 0 => '否',
  68. ]);
  69. $filter->between('created_at', '创建时间')->datetime();
  70. });
  71. return $grid;
  72. });
  73. }
  74. /**
  75. * 详情页
  76. *
  77. * @param mixed $id
  78. * @return Show
  79. */
  80. protected function detail($id)
  81. {
  82. return Show::make($id, new PromotionProfitRepository(['user', 'fromUser']), function (Show $show) {
  83. $helper = new ShowHelper($show, $this);
  84. $helper->field('id', 'ID');
  85. $show->field('user_id', '用户ID');
  86. $show->field('user.username', '用户名');
  87. $show->field('user.nickname', '用户昵称');
  88. $show->field('from_user_id', '来源用户ID');
  89. $show->field('fromUser.username', '来源用户名');
  90. $helper->fieldProfitSourceType();
  91. $show->field('source_id', '来源ID');
  92. $show->field('item_id', '物品ID');
  93. $show->field('amount', '数量');
  94. $show->field('profit_rate', '分成比例');
  95. $show->field('level', '层级');
  96. $show->field('is_direct', '是否直推')->using([
  97. 1 => '是',
  98. 0 => '否',
  99. ]);
  100. $show->field('created_at', '创建时间');
  101. $show->field('updated_at', '更新时间');
  102. return $show;
  103. });
  104. }
  105. /**
  106. * 表单
  107. *
  108. * @return Form
  109. */
  110. protected function form()
  111. {
  112. return Form::make(new PromotionProfitRepository(), function (Form $form) {
  113. $helper = new FormHelper($form, $this);
  114. $form->display('id', 'ID');
  115. $form->text('user_id', '用户ID')->required();
  116. $form->text('from_user_id', '来源用户ID')->required();
  117. $helper->selectProfitSourceType()->required();
  118. $form->text('source_id', '来源ID')->required();
  119. $form->text('item_id', '物品ID')->required();
  120. $form->number('amount', '数量')->min(0)->default(0)->required();
  121. $form->rate('profit_rate', '分成比例')->min(0)->max(1)->default(0)->required();
  122. $form->number('level', '层级')->min(1)->default(1)->required();
  123. $form->switch('is_direct', '是否直推')->default(0);
  124. $form->display('created_at', '创建时间');
  125. $form->display('updated_at', '更新时间');
  126. return $form;
  127. });
  128. }
  129. }