AuthorityService.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace App\JsonRpc;
  3. use App\Model\Role;
  4. use App\Model\Menu;
  5. use App\Model\Website;
  6. use App\Model\WebsiteRoleUser;
  7. use App\Tools\Result;
  8. use Hyperf\RpcServer\Annotation\RpcService;
  9. #[RpcService(name: "AuthorityService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
  10. class AuthorityService implements AuthorityServiceInterface
  11. {
  12. /**
  13. * @param array $data
  14. * @return array
  15. */
  16. public function getMenuList(array $data): array
  17. {
  18. // TODO: Implement getMenuList() method.
  19. $where = [
  20. "pid"=>$data['id']
  21. ];
  22. $data['pageSize'] = $data['pageSize']?$data['pageSize']:10;
  23. $data['page'] = $data['page']?$data['page']:1;
  24. $result = Menu::where($where)->limit($data['pageSize'])->offset(($data['page']-1)*$data['pageSize'])->get();
  25. $count = Menu::where($where)->count();
  26. if (empty($result)) {
  27. return Result::error("没有菜单",0,[]);
  28. }
  29. foreach($result as $k=>$v){
  30. $result[$k]['is_links'] = (int)$result[$k]['is_links'];
  31. $result[$k]['hidden'] = (int)$result[$k]['hidden'];
  32. }
  33. $data['rows'] = $result;
  34. $data['count'] = $count;
  35. return Result::success($data);
  36. }
  37. /**
  38. * @param array $data
  39. * @return array
  40. */
  41. public function getMenuInfo(array $data): array
  42. {
  43. // TODO: Implement getMenuInfo() method.
  44. return [];
  45. }
  46. /**
  47. * @param array $data
  48. * @return array
  49. */
  50. public function updateMenu(array $data): array
  51. {
  52. $where = [
  53. 'id'=>$data['id']
  54. ];
  55. unset($data['id']);
  56. $result = Menu::where($where)->update($data);
  57. if($result){
  58. return Result::success($data);
  59. }else{
  60. return Result::error($data);
  61. }
  62. }
  63. /**
  64. * @param array $data
  65. * @return array
  66. */
  67. public function delMenu(array $data): array
  68. {
  69. $result = Menu::where(['id'=>$data['id']])->delete();
  70. if($result){
  71. return Result::success($data);
  72. }else{
  73. return Result::error($data);
  74. }
  75. }
  76. /**
  77. * @param array $data
  78. * @return array
  79. */
  80. public function addMenu(array $data): array
  81. {
  82. $result = Menu::insertGetId($data);
  83. if($result){
  84. return Result::success($data);
  85. }else{
  86. return Result::error($data);
  87. }
  88. }
  89. /**
  90. * @param array $data
  91. * @return array
  92. */
  93. public function getRecursionMenu(array $data): array
  94. {
  95. //先查询站点ID
  96. $websiteData = [
  97. 'website_url' => $data['logindevice']
  98. ];
  99. $websiteInfo = Website::where($websiteData)->first();
  100. // var_dump($websiteInfo,$data['logindevice']);
  101. if(empty($websiteInfo)){
  102. return Result::error("网站不存在",0);
  103. }
  104. //根据网站和用户ID 查询出角色
  105. $whereData = [
  106. 'website_id'=>$websiteInfo['id'],
  107. 'user_id'=>$data['user_id']??''
  108. ];
  109. $WebsiteRoleUserInfo = WebsiteRoleUser::where($whereData)->first();
  110. // var_dump("++++:",$WebsiteRoleUserInfo['role_id']);
  111. if(empty($WebsiteRoleUserInfo)){
  112. return Result::error("角色不存在",0);
  113. }
  114. //根据角色查询权限信息
  115. $roleWhere = [
  116. 'id'=>$WebsiteRoleUserInfo['role_id']
  117. ];
  118. $roleInfo = Role::where($roleWhere)->first();
  119. // var_dump("+++++++++++",$roleInfo);
  120. if(empty($roleInfo)){
  121. return Result::error("没有权限",0);
  122. }
  123. //查询
  124. var_dump("=========:",$roleInfo['rule']);
  125. $roleArr = json_decode($roleInfo['rule']);
  126. // var_dump($roleArr);
  127. $result = Menu::whereIn('id',$roleArr)->get();
  128. // var_dump("+++++++++++",$result);
  129. if (empty($result)) {
  130. return Result::error("没有菜单",0,[]);
  131. }
  132. return Result::success($result);
  133. }
  134. }