App_Controller_AuthorityController.proxy.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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. if ($result['data']) {
  46. foreach ($result['data']['rows'] as $k => $v) {
  47. $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr'] ? json_decode($v['pid_arr']) : [0];
  48. }
  49. }
  50. return $result ? Result::success($result['data']) : Result::error($result['message']);
  51. }
  52. /**
  53. * 删除菜单
  54. * @return array
  55. */
  56. public function delMenu()
  57. {
  58. $id = (int) $this->request->input("id", 0);
  59. $data = ['id' => $id, 'page' => 1, 'pageSize' => 2];
  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($requireData, ['label' => 'required'], ['label.required' => '菜单名称不能为空']);
  74. if ($validator->fails()) {
  75. $errorMessage = $validator->errors()->first();
  76. return Result::error($errorMessage);
  77. }
  78. if (isset($requireData['pid']) && is_array($requireData['pid'])) {
  79. $requireData['pid_arr'] = json_encode($requireData['pid']);
  80. $requireData['pid'] = end($requireData['pid']);
  81. } else {
  82. $id = [0];
  83. $requireData['pid_arr'] = json_encode($id);
  84. $requireData['pid'] = end($id);
  85. }
  86. $result = $this->authorityServiceClient->addMenu($requireData);
  87. return $result ? Result::success($result['data']) : Result::error($result['message']);
  88. }
  89. /**
  90. * 修改菜单
  91. * @return array|void
  92. */
  93. public function updateMenu()
  94. {
  95. $requireData = $this->request->all();
  96. $validator = $this->validationFactory->make($requireData, [
  97. 'id' => 'required',
  98. // 'pid' => 'required',
  99. 'label' => 'required',
  100. ], [
  101. 'id.required' => 'id不能为空',
  102. // 'pid.required' => '父级id不能为空',
  103. 'label.required' => '菜单名称不能为空',
  104. ]);
  105. if ($validator->fails()) {
  106. $errorMessage = $validator->errors()->first();
  107. return Result::error($errorMessage);
  108. }
  109. unset($requireData['pid_arr']);
  110. var_dump("提交数据前:", $requireData);
  111. if (isset($requireData['pid']) && is_array($requireData['pid'])) {
  112. $requireData['pid_arr'] = json_encode($requireData['pid']);
  113. $requireData['pid'] = end($requireData['pid']);
  114. } else {
  115. if (isset($requireData['pid']) && $requireData['pid'] > 0) {
  116. // array_push($requireData['pid'],$requireData['pid']);
  117. $requireData['pid'] = [$requireData['pid']];
  118. $requireData['pid_arr'] = json_encode($requireData['pid']);
  119. $requireData['pid'] = end($requireData['pid']);
  120. } else {
  121. $id = [0];
  122. $requireData['pid_arr'] = json_encode($id);
  123. $requireData['pid'] = end($id);
  124. }
  125. }
  126. var_dump("提交数据后", $requireData);
  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. $header = $this->request->getHeaders();
  137. $reqData = ['user_id' => $this->UserId, 'logindevice' => $header['logindevice'][0]];
  138. $result = $this->authorityServiceClient->getRecursionMenu($reqData);
  139. $rep = PublicData::buildMenuTree($result['data']);
  140. return $rep ? Result::success($rep) : Result::error("查询失败");
  141. }
  142. }