FriendRequestController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. namespace App\Module\Friend\AdminControllers;
  3. use App\Module\Friend\AdminControllers\Helper\FilterHelper;
  4. use App\Module\Friend\AdminControllers\Helper\FormHelper;
  5. use App\Module\Friend\AdminControllers\Helper\GridHelper;
  6. use App\Module\Friend\AdminControllers\Helper\ShowHelper;
  7. use App\Module\Friend\Enums\READ_STATUS;
  8. use App\Module\Friend\Enums\REQUEST_STATUS;
  9. use App\Module\Friend\Repositories\FriendRequestRepository;
  10. use Dcat\Admin\Form;
  11. use Dcat\Admin\Grid;
  12. use Dcat\Admin\Show;
  13. use UCore\DcatAdmin\AdminController;
  14. use Spatie\RouteAttributes\Attributes\Resource;
  15. /**
  16. * 好友申请管理控制器
  17. *
  18. * @package App\Module\Friend\AdminControllers
  19. */
  20. #[Resource('friend-requests', names: 'dcat.admin.friend-requests')]
  21. class FriendRequestController extends AdminController
  22. {
  23. /**
  24. * 标题
  25. *
  26. * @var string
  27. */
  28. protected $title = '好友申请管理';
  29. /**
  30. * 仓库实例
  31. *
  32. * @var FriendRequestRepository
  33. */
  34. protected $repository;
  35. /**
  36. * 构造函数
  37. */
  38. public function __construct()
  39. {
  40. $this->repository = new FriendRequestRepository();
  41. }
  42. /**
  43. * 列表页面
  44. *
  45. * @param Grid $grid
  46. * @return Grid
  47. */
  48. protected function grid(Grid $grid)
  49. {
  50. $helper = GridHelper::make($grid);
  51. $helper->id('ID');
  52. $helper->column('sender_id', '发送者ID')->sortable();
  53. $helper->column('receiver_id', '接收者ID')->sortable();
  54. $helper->column('message', '申请消息');
  55. $helper->column('status', '状态')->using([
  56. REQUEST_STATUS::PENDING => '待处理',
  57. REQUEST_STATUS::ACCEPTED => '已同意',
  58. REQUEST_STATUS::REJECTED => '已拒绝',
  59. REQUEST_STATUS::EXPIRED => '已过期',
  60. ])->label([
  61. REQUEST_STATUS::PENDING => 'warning',
  62. REQUEST_STATUS::ACCEPTED => 'success',
  63. REQUEST_STATUS::REJECTED => 'danger',
  64. REQUEST_STATUS::EXPIRED => 'default',
  65. ]);
  66. $helper->column('read_status', '读取状态')->using([
  67. READ_STATUS::UNREAD => '未读',
  68. READ_STATUS::READ => '已读',
  69. ])->label([
  70. READ_STATUS::UNREAD => 'danger',
  71. READ_STATUS::READ => 'success',
  72. ]);
  73. $helper->column('created_at', '创建时间')->sortable();
  74. $helper->column('updated_at', '更新时间')->sortable();
  75. $helper->column('expired_at', '过期时间')->sortable();
  76. // 筛选
  77. $filter = $grid->filter();
  78. FilterHelper::make($filter, $this->repository);
  79. $filter->equal('sender_id', '发送者ID');
  80. $filter->equal('receiver_id', '接收者ID');
  81. $filter->equal('status', '状态')->select([
  82. REQUEST_STATUS::PENDING => '待处理',
  83. REQUEST_STATUS::ACCEPTED => '已同意',
  84. REQUEST_STATUS::REJECTED => '已拒绝',
  85. REQUEST_STATUS::EXPIRED => '已过期',
  86. ]);
  87. $filter->equal('read_status', '读取状态')->select([
  88. READ_STATUS::UNREAD => '未读',
  89. READ_STATUS::READ => '已读',
  90. ]);
  91. $filter->between('created_at', '创建时间')->datetime();
  92. $filter->between('expired_at', '过期时间')->datetime();
  93. return $grid;
  94. }
  95. /**
  96. * 详情页面
  97. *
  98. * @param Show $show
  99. * @return Show
  100. */
  101. protected function detail(Show $show)
  102. {
  103. $helper = ShowHelper::make($show);
  104. $helper->field('id', 'ID');
  105. $helper->field('sender_id', '发送者ID');
  106. $helper->field('receiver_id', '接收者ID');
  107. $helper->field('message', '申请消息');
  108. $helper->field('status', '状态')->using([
  109. REQUEST_STATUS::PENDING => '待处理',
  110. REQUEST_STATUS::ACCEPTED => '已同意',
  111. REQUEST_STATUS::REJECTED => '已拒绝',
  112. REQUEST_STATUS::EXPIRED => '已过期',
  113. ]);
  114. $helper->field('read_status', '读取状态')->using([
  115. READ_STATUS::UNREAD => '未读',
  116. READ_STATUS::READ => '已读',
  117. ]);
  118. $helper->field('created_at', '创建时间');
  119. $helper->field('updated_at', '更新时间');
  120. $helper->field('expired_at', '过期时间');
  121. return $show;
  122. }
  123. /**
  124. * 表单页面
  125. *
  126. * @param Form $form
  127. * @return Form
  128. */
  129. protected function form(Form $form)
  130. {
  131. $helper = FormHelper::make($form);
  132. $helper->display('id', 'ID');
  133. $helper->text('sender_id', '发送者ID')->required();
  134. $helper->text('receiver_id', '接收者ID')->required();
  135. $helper->textarea('message', '申请消息');
  136. $helper->select('status', '状态')->options([
  137. REQUEST_STATUS::PENDING => '待处理',
  138. REQUEST_STATUS::ACCEPTED => '已同意',
  139. REQUEST_STATUS::REJECTED => '已拒绝',
  140. REQUEST_STATUS::EXPIRED => '已过期',
  141. ])->default(REQUEST_STATUS::PENDING);
  142. $helper->select('read_status', '读取状态')->options([
  143. READ_STATUS::UNREAD => '未读',
  144. READ_STATUS::READ => '已读',
  145. ])->default(READ_STATUS::UNREAD);
  146. $helper->display('created_at', '创建时间');
  147. $helper->display('updated_at', '更新时间');
  148. $helper->datetime('expired_at', '过期时间');
  149. return $form;
  150. }
  151. }