ManagerDetailResponse.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * 管理员详情返回封装.
  4. *
  5. * @author nj <nj@gmail.com>
  6. * @date 2020-01-23 17:36:29
  7. */
  8. declare(strict_types=1);
  9. namespace Modules\Manage\Responses;
  10. use App\Contracts\Responsable;
  11. use App\Model\PermissionResourceModel;
  12. class ManagerDetailResponse implements Responsable
  13. {
  14. /**
  15. * 录入的数据.
  16. *
  17. * @var mixed
  18. */
  19. private $data = null;
  20. /**
  21. * 附加条件参数.
  22. *
  23. * @var array
  24. */
  25. private $params = [];
  26. public function __construct($data = null, $params = [])
  27. {
  28. $this->data = $data;
  29. $this->params = $params;
  30. }
  31. public function toResponse(
  32. $request = null
  33. ) {
  34. if (empty($this->data)) {
  35. return json_fail(trans('common.err_resource_not_found'));
  36. }
  37. $result = $this->data->toArray();
  38. if (isset($result['role']['permissions']) && is_string($result['role']['permissions'])) {
  39. $arrPermissions = !empty($result['role']['permissions']) ?
  40. explode(',', $result['role']['permissions']) : [];
  41. $result['role']['permissions'] = $arrPermissions;
  42. if ($result['role']['permissions'][0] !== "-1") {
  43. // 我的
  44. $permissionsName = (new PermissionResourceModel())->whereIn('id', $arrPermissions)->get()->toArray();
  45. // 全部的
  46. $permissionsAll = (new PermissionResourceModel())->pluck('operate', 'id')->toArray();
  47. // 处理成一维
  48. $dataArr = [];
  49. foreach ($permissionsName as &$item) {
  50. // 父菜单
  51. if ($item['parent_id'] === 0) {
  52. $dataArr[] = $item['operate'];
  53. } else {
  54. // 子级
  55. $dataArr[] = $permissionsAll[$item['parent_id']] . '_' . $item['operate'];
  56. }
  57. unset($item);
  58. }
  59. $result['role']['permissions'] = $dataArr;
  60. }
  61. }
  62. unset($result['id']);
  63. return json_success($result);
  64. }
  65. }