App_Controller_AuthorityController.proxy.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. declare (strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\AuthorityServiceInterface;
  5. use App\Tools\PublicData;
  6. use Hyperf\Di\Annotation\Inject;
  7. use Hyperf\HttpServer\Annotation\AutoController;
  8. use App\Tools\Result;
  9. use App\Constants\ErrorCode;
  10. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  11. /**
  12. * Class AuthorityController
  13. * @package App\Controller
  14. */
  15. #[AutoController]
  16. class AuthorityController extends AbstractController
  17. {
  18. use \Hyperf\Di\Aop\ProxyTrait;
  19. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  20. function __construct(\Hyperf\Logger\LoggerFactory $loggerFactory)
  21. {
  22. if (method_exists(parent::class, '__construct')) {
  23. parent::__construct(...func_get_args());
  24. }
  25. $this->__handlePropertyHandler(__CLASS__);
  26. }
  27. #[Inject]
  28. protected ValidatorFactoryInterface $validationFactory;
  29. /**
  30. * @var AuthorityServiceInterface
  31. */
  32. #[Inject]
  33. private $authorityServiceClient;
  34. /**
  35. * 获取菜单列表
  36. * @return array
  37. */
  38. public function getMenuList()
  39. {
  40. $id = (int) $this->request->input("id", 0);
  41. $page = (int) $this->request->input("page", 1);
  42. $pageSize = (int) $this->request->input("pageSize", 10);
  43. $data = ['id' => $id, 'page' => $page, 'pageSize' => $pageSize];
  44. $result = $this->authorityServiceClient->getMenuList($data);
  45. return $result ? Result::success($result['data']) : Result::error($result['message']);
  46. }
  47. /**
  48. * 删除菜单
  49. * @return array
  50. */
  51. public function delMenu()
  52. {
  53. $id = (int) $this->request->input("id", 0);
  54. $data = ['id' => $id, 'page' => 1, 'pageSize' => 2];
  55. $result = $this->authorityServiceClient->getMenuList($data);
  56. if (count($result['data']['rows']) > 0) {
  57. return Result::error("有子菜单不能删除");
  58. }
  59. return $this->authorityServiceClient->delMenu($data);
  60. }
  61. /**
  62. * 添加菜单
  63. * @return array|void
  64. */
  65. public function addMenu()
  66. {
  67. $requireData = $this->request->all();
  68. $validator = $this->validationFactory->make($requireData, ['label' => 'required', 'url' => 'required'], ['label.required' => '菜单名称不能为空', 'url.required' => '路由地址不能为空']);
  69. if ($validator->fails()) {
  70. $errorMessage = $validator->errors()->first();
  71. return Result::error($errorMessage);
  72. }
  73. if (isset($requireData['pid']) && is_array($requireData['pid'])) {
  74. $requireData['pid_arr'] = json_encode($requireData['pid']);
  75. $requireData['pid'] = end($requireData['pid']);
  76. } else {
  77. $id = [0];
  78. $requireData['pid_arr'] = json_encode($id);
  79. $requireData['pid'] = end($id);
  80. }
  81. $result = $this->authorityServiceClient->addMenu($requireData);
  82. return $result ? Result::success($result['data']) : Result::error($result['message']);
  83. }
  84. /**
  85. * 修改菜单
  86. * @return array|void
  87. */
  88. public function updateMenu()
  89. {
  90. $requireData = $this->request->all();
  91. $validator = $this->validationFactory->make($requireData, ['id' => 'required', 'pid' => 'required', 'label' => 'required', 'url' => 'required'], ['id.required' => 'id不能为空', 'pid.required' => '父级id不能为空', 'label.required' => '菜单名称不能为空', 'url.required' => '路由地址不能为空']);
  92. if ($validator->fails()) {
  93. $errorMessage = $validator->errors()->first();
  94. return Result::error($errorMessage);
  95. }
  96. if (isset($requireData['pid']) && is_array($requireData['pid'])) {
  97. $requireData['pid_arr'] = json_encode($requireData['pid']);
  98. $requireData['pid'] = end($requireData['pid']);
  99. } else {
  100. $id = [0];
  101. $requireData['pid_arr'] = json_encode($id);
  102. $requireData['pid'] = end($id);
  103. }
  104. $result = $this->authorityServiceClient->updateMenu($requireData);
  105. return $result ? Result::success($result['data']) : Result::error($result['message']);
  106. }
  107. /**
  108. * 菜单递归查询处理
  109. * @return void
  110. */
  111. public function getRecursionMenu()
  112. {
  113. $result = $this->authorityServiceClient->getRecursionMenu([]);
  114. $rep = PublicData::buildMenuTree($result['data']);
  115. return $rep ? Result::success($rep) : Result::error("查询失败");
  116. }
  117. }