App_Controller_AuthorityController.proxy.php 5.4 KB

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