AuthorityController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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. #[Inject]
  19. protected ValidatorFactoryInterface $validationFactory;
  20. /**
  21. * @var AuthorityServiceInterface
  22. */
  23. #[Inject]
  24. private $authorityServiceClient;
  25. /**
  26. * 获取菜单列表
  27. * @return array
  28. */
  29. public function getMenuList()
  30. {
  31. $id = (int)$this->request->input("id",0);
  32. $page = (int)$this->request->input("page",1);
  33. $pageSize = (int)$this->request->input("pageSize",10);
  34. $data = [
  35. 'id'=>$id,
  36. 'page'=>$page,
  37. 'pageSize'=>$pageSize
  38. ];
  39. $result = $this->authorityServiceClient->getMenuList($data);
  40. return $result?Result::success($result['data']):Result::error($result['message']);
  41. }
  42. /**
  43. * 删除菜单
  44. * @return array
  45. */
  46. public function delMenu()
  47. {
  48. $id = (int)$this->request->input("id",0);
  49. $data = [
  50. 'id'=>$id,
  51. 'page'=>1,
  52. 'pageSize'=>2
  53. ];
  54. $result = $this->authorityServiceClient->getMenuList($data);
  55. if(count($result['data']['rows'])>0){
  56. return Result::error("有子菜单不能删除");
  57. }
  58. return $this->authorityServiceClient->delMenu($data);
  59. }
  60. /**
  61. * 添加菜单
  62. * @return array|void
  63. */
  64. public function addMenu()
  65. {
  66. $requireData = $this->request->all();
  67. $validator = $this->validationFactory->make(
  68. $requireData,
  69. [
  70. 'label' => 'required',
  71. 'url' => 'required',
  72. ],
  73. [
  74. 'label.required' => '菜单名称不能为空',
  75. 'url.required' => '路由地址不能为空',
  76. ]
  77. );
  78. if ($validator->fails()){
  79. $errorMessage = $validator->errors()->first();
  80. return Result::error($errorMessage);
  81. }
  82. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  83. $requireData['pid_arr'] = json_encode($requireData['pid']);
  84. $requireData['pid'] = end($requireData['pid']);
  85. }else{
  86. $id = [0];
  87. $requireData['pid_arr'] = json_encode($id);
  88. $requireData['pid'] = end($id);
  89. }
  90. $result = $this->authorityServiceClient->addMenu($requireData);
  91. return $result?Result::success($result['data']):Result::error($result['message']);
  92. }
  93. /**
  94. * 修改菜单
  95. * @return array|void
  96. */
  97. public function updateMenu()
  98. {
  99. $requireData = $this->request->all();
  100. $validator = $this->validationFactory->make(
  101. $requireData,
  102. [
  103. 'id' => 'required',
  104. 'pid' => 'required',
  105. 'label' => 'required',
  106. 'url' => 'required',
  107. ],
  108. [
  109. 'id.required' => 'id不能为空',
  110. 'pid.required' => '父级id不能为空',
  111. 'label.required' => '菜单名称不能为空',
  112. 'url.required' => '路由地址不能为空',
  113. ]
  114. );
  115. if ($validator->fails()){
  116. $errorMessage = $validator->errors()->first();
  117. return Result::error($errorMessage);
  118. }
  119. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  120. $requireData['pid_arr'] = json_encode($requireData['pid']);
  121. $requireData['pid'] = end($requireData['pid']);
  122. }else{
  123. $id = [0];
  124. $requireData['pid_arr'] = json_encode($id);
  125. $requireData['pid'] = end($id);
  126. }
  127. $result = $this->authorityServiceClient->updateMenu($requireData);
  128. return $result?Result::success($result['data']):Result::error($result['message']);
  129. }
  130. /**
  131. * 菜单递归查询处理
  132. * @return void
  133. */
  134. public function getRecursionMenu()
  135. {
  136. $result = $this->authorityServiceClient->getRecursionMenu([]);
  137. $rep = PublicData::buildMenuTree($result['data']);
  138. return $rep?Result::success($rep):Result::error("查询失败");
  139. }
  140. }