PermissionService.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/3/17
  6. * Time: 下午7:03
  7. */
  8. namespace app\backend\modules\user\services;
  9. class PermissionService
  10. {
  11. /*
  12. * 添加权限所属类型及所属人ID到权限数组$data
  13. *
  14. * @parms array $data
  15. *
  16. * @return array
  17. **/
  18. public function addedToPermission($data =[], $type, $itemId)
  19. {
  20. foreach ($data as $key => $value) {
  21. $permissions[] = array(
  22. 'type' => $type,
  23. 'item_id' => $itemId,
  24. 'permission' => $value
  25. );
  26. }
  27. return $permissions;
  28. }
  29. /*
  30. * 处理权限数组:读取权限数组,返回一维权限数组$permissions
  31. *
  32. * @parms array $data
  33. *
  34. * @return array
  35. **/
  36. public function handlePermission($data)
  37. {
  38. if (!is_array($data)) {
  39. return $permissions = [];
  40. }
  41. $permissions = [];
  42. foreach ($data as $key => $value) {
  43. if ($key['permission']) {
  44. $permissions[] = $key['permission'];
  45. }
  46. if ($value['permission']) {
  47. $permissions[] = $value['permission'];
  48. }
  49. }
  50. return $permissions;
  51. }
  52. //test
  53. public static function getPermission()
  54. {
  55. $permissions = \app\backend\modules\menu\Menu::current()->getItems();
  56. //一级循环
  57. foreach ($permissions as $keyOne => &$permissionOne) {
  58. if (isset($permissionOne['child']) && $permissionOne['child']) {
  59. $permissionOne['child'] = static::getAllChild($permissionOne['child']);
  60. }
  61. }
  62. return $permissions;
  63. }
  64. public static function getAllChild($permissions)
  65. {
  66. foreach ($permissions as $keyTwo => &$permissionTwo) {
  67. if (isset($permissionTwo['child']) && $permissionTwo['child']) {
  68. //三级循环
  69. foreach ($permissionTwo['child'] as $keyThree => $permissionThree) {
  70. //dump($keyThree);
  71. //dump($permissionThree);
  72. //如果三级有子集的提出,改为和二级同级别
  73. if (isset($permissionThree['child']) && $permissionThree['child']) {
  74. //$permissionThree['']
  75. $permissions[$keyThree] = $permissionThree;
  76. unset($permissionTwo['child'][$keyThree]);
  77. $permissions = static::getAllChild($permissions);
  78. }
  79. }
  80. }
  81. }
  82. return $permissions;
  83. }
  84. //按照前端要求的数据格式返回,去掉key,过滤没用数据
  85. public static function getApiData($permissions )
  86. {
  87. foreach ($permissions as $keyOne => &$valueOne){
  88. if(!isset($valueOne['permit']) || $valueOne['permit'] === 0 ){
  89. unset($permissions[$keyOne]);
  90. unset($valueOne);
  91. }else{
  92. $permissions[$keyOne]['key_name'] = $keyOne;
  93. }
  94. foreach ($valueOne['child'] as $keyTwo => $valueTwo){
  95. if(!isset($valueTwo['permit']) || $valueTwo['permit'] === 0 || in_array($keyTwo, \app\common\services\PermissionService::founderPermission())){
  96. unset($permissions[$keyOne]['child'][$keyTwo]);
  97. unset($valueTwo);
  98. }else{
  99. $permissions[$keyOne]['child'][$keyTwo]['key_name'] = $keyTwo;
  100. }
  101. foreach ($valueTwo['child'] as $keyThird => $valueThird){
  102. if(!isset($valueThird['permit']) || $valueThird['permit'] === 0){
  103. unset($permissions[$keyOne]['child'][$keyTwo]['child'][$keyThird]);
  104. }else{
  105. $permissions[$keyOne]['child'][$keyTwo]['child'][$keyThird]['key_name'] = $keyThird;
  106. }
  107. }
  108. }
  109. }
  110. $permissions = array_values($permissions);
  111. foreach ($permissions as $k => &$v){
  112. $permissions[$k]['child'] = array_values($permissions[$k]['child']);
  113. foreach ($v['child'] as $k1=>&$v1){
  114. $v1['child'] = array_values($v1['child']);
  115. }
  116. }
  117. return $permissions;
  118. }
  119. }