AuthorityController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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. ],
  77. [
  78. 'label.required' => '菜单名称不能为空',
  79. ]
  80. );
  81. if ($validator->fails()){
  82. $errorMessage = $validator->errors()->first();
  83. return Result::error($errorMessage);
  84. }
  85. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  86. $requireData['pid_arr'] = json_encode($requireData['pid']);
  87. $requireData['pid'] = end($requireData['pid']);
  88. }else{
  89. $id = [0];
  90. $requireData['pid_arr'] = json_encode($id);
  91. $requireData['pid'] = end($id);
  92. }
  93. $result = $this->authorityServiceClient->addMenu($requireData);
  94. return $result?Result::success($result['data']):Result::error($result['message']);
  95. }
  96. /**
  97. * 修改菜单
  98. * @return array|void
  99. */
  100. public function updateMenu()
  101. {
  102. $requireData = $this->request->all();
  103. $validator = $this->validationFactory->make(
  104. $requireData,
  105. [
  106. 'id' => 'required',
  107. // 'pid' => 'required',
  108. 'label' => 'required',
  109. // 'url' => 'required',
  110. ],
  111. [
  112. 'id.required' => 'id不能为空',
  113. // 'pid.required' => '父级id不能为空',
  114. 'label.required' => '菜单名称不能为空',
  115. // 'url.required' => '路由地址不能为空',
  116. ]
  117. );
  118. if ($validator->fails()){
  119. $errorMessage = $validator->errors()->first();
  120. return Result::error($errorMessage);
  121. }
  122. unset($requireData['pid_arr']);
  123. var_dump("提交数据前:",$requireData);
  124. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  125. $requireData['pid_arr'] = json_encode($requireData['pid']);
  126. $requireData['pid'] = end($requireData['pid']);
  127. }else if(isset($requireData['pid']) && $requireData['pid']>0){
  128. // array_push($requireData['pid'],$requireData['pid']);
  129. $requireData['pid'] = [$requireData['pid']];
  130. $requireData['pid_arr'] = json_encode($requireData['pid']);
  131. $requireData['pid'] = end($requireData['pid']);
  132. }else{
  133. $id = [0];
  134. $requireData['pid_arr'] = json_encode($id);
  135. $requireData['pid'] = end($id);
  136. }
  137. var_dump("提交数据后",$requireData);
  138. $result = $this->authorityServiceClient->updateMenu($requireData);
  139. return $result?Result::success($result['data']):Result::error($result['message']);
  140. }
  141. /**
  142. * 菜单递归查询处理
  143. * @return void
  144. */
  145. public function getRecursionMenu()
  146. {
  147. $header = $this->request->getHeaders();
  148. $reqData = [
  149. 'user_id' => $this->UserId,
  150. 'logindevice' => $header['logindevice'][0]
  151. ];
  152. $result = $this->authorityServiceClient->getRecursionMenu($reqData);
  153. $rep = PublicData::buildMenuTree($result['data']);
  154. return $rep?Result::success($rep):Result::error("查询失败");
  155. }
  156. }