UserController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Actions\Games\GameScores;
  4. use App\Admin\Actions\Users\FansList;
  5. use App\Admin\Actions\Users\FollowList;
  6. use App\Admin\Actions\Users\IntegralList;
  7. use App\Admin\Actions\Users\SetUserInfo;
  8. use App\Admin\Actions\Users\UserAction;
  9. use App\Admin\Actions\Users\UserAuth;
  10. use App\Admin\Actions\Users\UserChange;
  11. use App\Admin\Actions\Users\UsersInfo;
  12. use App\Admin\Actions\Users\UserVip;
  13. use App\Models\User;
  14. use Dcat\Admin\Form;
  15. use Dcat\Admin\Grid;
  16. use Dcat\Admin\Show;
  17. use Dcat\Admin\Http\Controllers\AdminController;
  18. use Dcat\Admin\Widgets\Modal;
  19. use Illuminate\Database\Eloquent\Model;
  20. class UserController extends AdminController
  21. {
  22. /**
  23. * Make a grid builder.
  24. *
  25. * @return Grid
  26. */
  27. protected function grid()
  28. {
  29. $grid = new Grid(new User());
  30. $grid->model()->with('user_extra')->orderBy('id', 'desc');
  31. $grid->column('id')->sortable();
  32. $grid->column('avatar')->display(function () {
  33. $str = "";
  34. $str .= "<div style='margin-right:10px;display: flex;align-items: center'>";
  35. $str .= '<img data-action="preview-img" src="' . $this->avatar . '" style="height:60px;width:60px;cursor:pointer;margin-right:10px;" class="img img-thumbnail">';
  36. $str .= '<div>';
  37. $str .= '<p style="margin-bottom: 5px">姓名:' . $this->name . '</p>';
  38. $str .= '<p style="margin-bottom: 0px">电话:' . $this->mobile . '</p>';
  39. $str .= '<p style="margin-bottom: 0px">邮箱:' . $this->email . '</p>';
  40. $str .= "</div>";
  41. $str .= "</div>";
  42. return $str;
  43. });
  44. $grid->column('sex')->using([
  45. 0 => trans('user.fields.unknown'),
  46. 1 => trans('user.fields.man'),
  47. 2 => trans('user.fields.woman')])->label(['gray', 'primary', 'danger']);
  48. $grid->column('user_extra.integral', trans('user.fields.integral'))->display(function ($res) {
  49. $form = IntegralList::make()->payload(['id' => $this->id]);
  50. return Modal::make()
  51. ->lg()
  52. ->title(trans('user.fields.integral'))
  53. ->body($form)
  54. ->button('<i class="feather icon-align-right"></i> ' . $res);
  55. });
  56. $grid->column('user_extra.fans_count', trans('user.fields.fansNum'))->display(function ($res) {
  57. $form = FansList::make()->payload(['id' => $this->id]);
  58. return Modal::make()
  59. ->lg()
  60. ->title(trans('user.fields.fansList'))
  61. ->body($form)
  62. ->button('<i class="feather icon-align-right"></i> ' . $res);
  63. });
  64. $grid->column('user_extra.follow_count', trans('user.fields.followNum'))->display(function ($res) {
  65. $form = FollowList::make()->payload(['id' => $this->id]);
  66. return Modal::make()
  67. ->lg()
  68. ->title(trans('user.fields.followList'))
  69. ->body($form)
  70. ->button('<i class="feather icon-align-right"></i> ' . $res);
  71. });
  72. $grid->column('is_auth')->using([
  73. 0 => trans('user.fields.unauthorized'),
  74. 1 => trans('user.fields.organization'),
  75. 2 => trans('user.fields.public_figure')])->label(['gray', 'success', 'red']);
  76. $grid->column('online', trans('user.fields.online_status'))->using([
  77. 0 => trans('user.fields.offline'),
  78. 1 => trans('user.fields.online')])->label(['gray', 'success']);
  79. $grid->column('status')->switch('success', true);
  80. $grid->column('created_at');
  81. $grid->filter(function (Grid\Filter $filter) {
  82. $filter->panel();
  83. $filter->equal('id')->width(3);
  84. $filter->like('mobile')->width(3);
  85. $filter->like('email')->width(3);
  86. $filter->like('name')->width(3);
  87. $filter->equal('sex')->select([
  88. 1 => trans('user.fields.man'),
  89. 2 => trans('user.fields.woman')
  90. ])->width(3);
  91. $filter->equal('is_auth')->select([
  92. 0 => trans('user.fields.unauthorized'),
  93. 1 => trans('user.fields.organization'),
  94. 2 => trans('user.fields.public_figure')
  95. ])->width(3);
  96. $filter->equal('status')->select([
  97. 0 => trans('user.fields.frozen'),
  98. 1 => trans('user.fields.normal'),
  99. ])->width(3);
  100. });
  101. //操作管理
  102. $grid->actions(function (Grid\Displayers\Actions $actions) {
  103. $actions->disableView();
  104. $actions->append(new UserChange(User::class));
  105. $actions->append(new UserAuth(User::class));
  106. $actions->append(new GameScores('user'));
  107. });
  108. // 禁用
  109. $grid->disableRowSelector();
  110. $grid->disableCreateButton();
  111. $grid->disableBatchActions();
  112. return $grid;
  113. }
  114. /**
  115. * Make a form builder.
  116. *
  117. * @return Form
  118. */
  119. protected function form()
  120. {
  121. return Form::make(new User(), function (Form $form) {
  122. $form->display('id')->width(6);
  123. $form->text('name')->width(6);
  124. $form->image('avatar')->width(6);
  125. $form->text('email')->width(6);
  126. $form->text('mobile')->width(6);
  127. $form->textarea('bio');
  128. $form->image('bg')->width(6);
  129. $form->text('tencent_im_user_id')->readOnly()->width(6);
  130. $form->switch('status')->default(1)->width(6);
  131. $form->display('created_at')->width(6);
  132. $form->display('updated_at')->width(6);
  133. $form->footer(function ($footer) {
  134. // 去掉`查看`checkbox
  135. $footer->disableViewCheck();
  136. // 去掉`继续编辑`checkbox
  137. $footer->disableEditingCheck();
  138. // 去掉`继续创建`checkbox
  139. $footer->disableCreatingCheck();
  140. });
  141. });
  142. }
  143. }