WxUserStudentCertifyController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. namespace App\Admin\Controllers\User;
  3. use App\Admin\Actions\Extensions\UniversityButton;
  4. use App\Admin\Actions\Extensions\User\UserStudentCertifyButton;
  5. use App\Admin\Actions\Grid\User\UserStudentCertifyNoticeAction;
  6. use App\Admin\Repositories\User\WxUserStudentCertify;
  7. use App\Wen\Utils\Settings;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Show;
  11. use Dcat\Admin\Http\Controllers\AdminController;
  12. class WxUserStudentCertifyController extends AdminController
  13. {
  14. /**
  15. * Make a grid builder.
  16. *
  17. * @return Grid
  18. */
  19. protected function grid()
  20. {
  21. return Grid::make(new WxUserStudentCertify(), function (Grid $grid) {
  22. global $__MINI_GLOBAL_IS_ADMIN_SUPER__,$__MINI_GLOBAL_TENANT_ID__;
  23. $grid->quickSearch(['sid', 'school','user_id','user.user_name', 'email'])->placeholder('搜索sid,学校名称,用户ID,用户名字...')->width(50);
  24. $grid->model()->orderBy('updated_at','desc');
  25. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  26. $grid->model()->whereIn('sid', Settings::get('tenant_'.$__MINI_GLOBAL_TENANT_ID__.'_with_student_certify', []));
  27. }
  28. $grid->column('users', '头像')->display(function ($v) {
  29. return '<img src="' . ($this->user['user_avatar'] ?? Settings::get('img_default', 'https://img.mini.minisns.cn/icons/dafault.png')) . '" style="border-radius:50px;width:30px;" />';
  30. })->width('50px');
  31. $grid->column('user')->display(function ($v) {
  32. if($v && $v['user_name']){
  33. return '<a target="_blank" href="'.admin_url('users?id='.$v['id']).'">'.$v['user_name'].'</a>' ?? '用户已删除';
  34. }
  35. return '';
  36. })->width('100px');
  37. $grid->column('sid');
  38. $grid->column('school');
  39. $grid->column('email');
  40. $grid->column('role');
  41. $grid->column('term');
  42. $grid->column('questions');
  43. $grid->column('picture')->image();
  44. $grid->column('picture2')->image();
  45. $grid->column('introduce');
  46. $grid->column('status')->switch();
  47. // $grid->column('created_at')->sortable();
  48. $grid->column('updated_at')->sortable();
  49. $grid->filter(function (Grid\Filter $filter) {
  50. $filter->equal('user_id');
  51. });
  52. $grid->disableCreateButton();
  53. $grid->disableBatchDelete();
  54. $grid->disableEditButton();
  55. $grid->disableDeleteButton();
  56. $grid->disableViewButton();
  57. if($__MINI_GLOBAL_TENANT_ID__ === 0){
  58. $grid->tools([
  59. new UniversityButton(),
  60. new UserStudentCertifyButton()
  61. ]);
  62. }else{
  63. $grid->tools([
  64. new UniversityButton(),
  65. ]);
  66. }
  67. $grid->actions(function (Grid\Displayers\Actions $actions) {
  68. $actions->append((new UserStudentCertifyNoticeAction())->setKey($this->user_id));
  69. });
  70. });
  71. }
  72. /**
  73. * Make a show builder.
  74. *
  75. * @param mixed $id
  76. *
  77. * @return Show
  78. */
  79. protected function detail($id)
  80. {
  81. return Show::make($id, new WxUserStudentCertify(), function (Show $show) {
  82. $show->field('user_id');
  83. $show->field('sid');
  84. $show->field('school');
  85. $show->field('role');
  86. $show->field('term');
  87. $show->field('email');
  88. $show->field('questions');
  89. $show->field('picture');
  90. $show->field('picture2');
  91. $show->field('introduce');
  92. $show->field('status');
  93. $show->field('created_at');
  94. $show->field('updated_at');
  95. $show->disableDeleteButton();
  96. $show->disableEditButton();
  97. });
  98. }
  99. /**
  100. * Make a form builder.
  101. *
  102. * @return Form
  103. */
  104. protected function form()
  105. {
  106. return Form::make(new WxUserStudentCertify(), function (Form $form) {
  107. $form->select('user_id', '用户')->options(function ($id) {
  108. $user = \App\Models\User\WxUser::find($id);
  109. if ($user) {
  110. return [$user->id => $user->user_name];
  111. }
  112. })->ajax('select/users');
  113. $form->text('sid');
  114. $form->text('school');
  115. $form->text('role');
  116. $form->text('term');
  117. $form->text('email');
  118. $form->text('questions');
  119. $form->text('picture');
  120. $form->text('picture2');
  121. $form->text('introduce');
  122. $form->text('status');
  123. $form->display('created_at');
  124. $form->display('updated_at');
  125. $form->saving(function (Form $form){
  126. global $__MINI_GLOBAL_TENANT_ID__;
  127. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  128. $user_id = $form->getKey();
  129. $sid = \App\Models\User\WxUserStudentCertify::where('user_id', $user_id)->value('sid');
  130. if(!in_array($sid, Settings::get('tenant_'.$__MINI_GLOBAL_TENANT_ID__.'_with_student_certify', []))){
  131. return $form->response()->error('分站不能修改其他分站的学生认证');
  132. }
  133. }
  134. });
  135. $form->deleting(function (Form $form){
  136. global $__MINI_GLOBAL_TENANT_ID__;
  137. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  138. $user_id = $form->getKey();
  139. $sid = \App\Models\User\WxUserStudentCertify::where('user_id', $user_id)->value('sid');
  140. if(!in_array($sid, Settings::get('tenant_'.$__MINI_GLOBAL_TENANT_ID__.'_with_student_certify', []))){
  141. return $form->response()->error('权限不足,不可以删除其他分站对象');
  142. }
  143. }
  144. });
  145. });
  146. }
  147. }