AuthorityController.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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. use Hyperf\Context\Context;
  12. /**
  13. * Class AuthorityController
  14. * @package App\Controller
  15. */
  16. //#[AutoController]
  17. class AuthorityController extends AbstractController
  18. {
  19. #[Inject]
  20. protected ValidatorFactoryInterface $validationFactory;
  21. /**
  22. * @var AuthorityServiceInterface
  23. */
  24. #[Inject]
  25. private $authorityServiceClient;
  26. /**
  27. * 获取菜单列表
  28. * @return array
  29. */
  30. public function getMenuList()
  31. {
  32. $id = (int)$this->request->input("id",0);
  33. $page = (int)$this->request->input("page",1);
  34. $pageSize = (int)$this->request->input("pageSize",10);
  35. $data = [
  36. 'id'=>$id,
  37. 'page'=>$page,
  38. 'pageSize'=>$pageSize
  39. ];
  40. $result = $this->authorityServiceClient->getMenuList($data);
  41. if($result['data']){
  42. foreach ($result['data']['rows'] as $k=>$v) {
  43. $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr']?json_decode($v['pid_arr']):[0];
  44. }
  45. }
  46. return $result?Result::success($result['data']):Result::error($result['message']);
  47. }
  48. /**
  49. * 删除菜单
  50. * @return array
  51. */
  52. public function delMenu()
  53. {
  54. $id = (int)$this->request->input("id",0);
  55. $data = [
  56. 'id'=>$id,
  57. 'page'=>1,
  58. 'pageSize'=>2
  59. ];
  60. $result = $this->authorityServiceClient->getMenuList($data);
  61. if(count($result['data']['rows'])>0){
  62. return Result::error("有子菜单不能删除");
  63. }
  64. return $this->authorityServiceClient->delMenu($data);
  65. }
  66. /**
  67. * 添加菜单
  68. * @return array|void
  69. */
  70. public function addMenu()
  71. {
  72. $requireData = $this->request->all();
  73. $validator = $this->validationFactory->make(
  74. $requireData,
  75. [
  76. 'label' => 'required',
  77. ],
  78. [
  79. 'label.required' => '菜单名称不能为空',
  80. ]
  81. );
  82. if ($validator->fails()){
  83. $errorMessage = $validator->errors()->first();
  84. return Result::error($errorMessage);
  85. }
  86. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  87. $requireData['pid_arr'] = json_encode($requireData['pid']);
  88. $requireData['pid'] = end($requireData['pid']);
  89. }else{
  90. $id = [0];
  91. $requireData['pid_arr'] = json_encode($id);
  92. $requireData['pid'] = end($id);
  93. }
  94. $result = $this->authorityServiceClient->addMenu($requireData);
  95. return $result?Result::success($result['data']):Result::error($result['message']);
  96. }
  97. /**
  98. * 修改菜单
  99. * @return array|void
  100. */
  101. public function updateMenu()
  102. {
  103. $requireData = $this->request->all();
  104. $validator = $this->validationFactory->make(
  105. $requireData,
  106. [
  107. 'id' => 'required',
  108. // 'pid' => 'required',
  109. 'label' => 'required',
  110. // 'url' => 'required',
  111. ],
  112. [
  113. 'id.required' => 'id不能为空',
  114. // 'pid.required' => '父级id不能为空',
  115. 'label.required' => '菜单名称不能为空',
  116. // 'url.required' => '路由地址不能为空',
  117. ]
  118. );
  119. if ($validator->fails()){
  120. $errorMessage = $validator->errors()->first();
  121. return Result::error($errorMessage);
  122. }
  123. unset($requireData['pid_arr']);
  124. var_dump("提交数据前:",$requireData);
  125. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  126. $requireData['pid_arr'] = json_encode($requireData['pid']);
  127. $requireData['pid'] = end($requireData['pid']);
  128. }else if(isset($requireData['pid']) && $requireData['pid']>0){
  129. // array_push($requireData['pid'],$requireData['pid']);
  130. $requireData['pid'] = [$requireData['pid']];
  131. $requireData['pid_arr'] = json_encode($requireData['pid']);
  132. $requireData['pid'] = end($requireData['pid']);
  133. }else{
  134. $id = [0];
  135. $requireData['pid_arr'] = json_encode($id);
  136. $requireData['pid'] = end($id);
  137. }
  138. var_dump("提交数据后",$requireData);
  139. $result = $this->authorityServiceClient->updateMenu($requireData);
  140. return $result?Result::success($result['data']):Result::error($result['message']);
  141. }
  142. /**
  143. * 菜单递归查询处理
  144. * @return void
  145. */
  146. public function getRecursionMenu()
  147. {
  148. $header = $this->request->getHeaders();
  149. if(!isset($header['origin'])){
  150. return Result::error("header请配置origin");
  151. }
  152. $origin = $header['origin'][0];
  153. $logindevice = explode("//", $origin);
  154. $reqData = [
  155. 'user_id' =>Context::get("UserId"),
  156. 'logindevice' => $logindevice[1]
  157. ];
  158. $result = $this->authorityServiceClient->getRecursionMenu($reqData);
  159. $rep = PublicData::buildMenuTree($result['data']);
  160. return $rep?Result::success($rep):Result::error("查询失败");
  161. }
  162. }