AuthorityController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. if($result['data']){
  41. foreach ($result['data']['rows'] as $k=>$v) {
  42. $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr']?json_decode($v['pid_arr']):[0];
  43. }
  44. }
  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 = [
  55. 'id'=>$id,
  56. 'page'=>1,
  57. 'pageSize'=>2
  58. ];
  59. $result = $this->authorityServiceClient->getMenuList($data);
  60. if(count($result['data']['rows'])>0){
  61. return Result::error("有子菜单不能删除");
  62. }
  63. return $this->authorityServiceClient->delMenu($data);
  64. }
  65. /**
  66. * 添加菜单
  67. * @return array|void
  68. */
  69. public function addMenu()
  70. {
  71. $requireData = $this->request->all();
  72. $validator = $this->validationFactory->make(
  73. $requireData,
  74. [
  75. 'label' => 'required',
  76. // 'url' => 'required',
  77. ],
  78. [
  79. 'label.required' => '菜单名称不能为空',
  80. // 'url.required' => '路由地址不能为空',
  81. ]
  82. );
  83. if ($validator->fails()){
  84. $errorMessage = $validator->errors()->first();
  85. return Result::error($errorMessage);
  86. }
  87. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  88. $requireData['pid_arr'] = json_encode($requireData['pid']);
  89. $requireData['pid'] = end($requireData['pid']);
  90. }else{
  91. $id = [0];
  92. $requireData['pid_arr'] = json_encode($id);
  93. $requireData['pid'] = end($id);
  94. }
  95. $result = $this->authorityServiceClient->addMenu($requireData);
  96. return $result?Result::success($result['data']):Result::error($result['message']);
  97. }
  98. /**
  99. * 修改菜单
  100. * @return array|void
  101. */
  102. public function updateMenu()
  103. {
  104. $requireData = $this->request->all();
  105. $validator = $this->validationFactory->make(
  106. $requireData,
  107. [
  108. 'id' => 'required',
  109. // 'pid' => 'required',
  110. 'label' => 'required',
  111. // 'url' => 'required',
  112. ],
  113. [
  114. 'id.required' => 'id不能为空',
  115. // 'pid.required' => '父级id不能为空',
  116. 'label.required' => '菜单名称不能为空',
  117. // 'url.required' => '路由地址不能为空',
  118. ]
  119. );
  120. if ($validator->fails()){
  121. $errorMessage = $validator->errors()->first();
  122. return Result::error($errorMessage);
  123. }
  124. unset($requireData['pid_arr']);
  125. var_dump("提交数据前:",$requireData);
  126. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  127. $requireData['pid_arr'] = json_encode($requireData['pid']);
  128. $requireData['pid'] = end($requireData['pid']);
  129. }else if(isset($requireData['pid']) && $requireData['pid']>0){
  130. // array_push($requireData['pid'],$requireData['pid']);
  131. $requireData['pid'] = [$requireData['pid']];
  132. $requireData['pid_arr'] = json_encode($requireData['pid']);
  133. $requireData['pid'] = end($requireData['pid']);
  134. }else{
  135. $id = [0];
  136. $requireData['pid_arr'] = json_encode($id);
  137. $requireData['pid'] = end($id);
  138. }
  139. var_dump("提交数据后",$requireData);
  140. $result = $this->authorityServiceClient->updateMenu($requireData);
  141. return $result?Result::success($result['data']):Result::error($result['message']);
  142. }
  143. /**
  144. * 菜单递归查询处理
  145. * @return void
  146. */
  147. public function getRecursionMenu()
  148. {
  149. $result = $this->authorityServiceClient->getRecursionMenu([]);
  150. $rep = PublicData::buildMenuTree($result['data']);
  151. return $rep?Result::success($rep):Result::error("查询失败");
  152. }
  153. }