diff --git a/application/admin/controller/auth/Group.php b/application/admin/controller/auth/Group.php index 6ee525af..be4c2c62 100644 --- a/application/admin/controller/auth/Group.php +++ b/application/admin/controller/auth/Group.php @@ -3,6 +3,7 @@ namespace app\admin\controller\auth; use app\admin\model\AuthGroup; +use app\admin\model\AuthGroupAccess; use app\common\controller\Backend; use fast\Tree; use think\Db; @@ -38,22 +39,24 @@ class Group extends Backend $groupList = collection(AuthGroup::where('id', 'in', $this->childrenGroupIds)->select())->toArray(); - Tree::instance()->init($groupList); - $groupList = []; if ($this->auth->isSuperAdmin()) { - $groupList = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0)); + $tree = Tree::instance()->init($groupList); + $groupList = $tree->getTreeList($tree->getTreeArray(0)); } else { $groups = $this->auth->getGroups(); - $groupIds = []; - foreach ($groups as $m => $n) { - if (in_array($n['id'], $groupIds) || in_array($n['pid'], $groupIds)) { - continue; - } - $groupList = array_merge($groupList, Tree::instance()->getTreeList(Tree::instance()->getTreeArray($n['pid']))); - foreach ($groupList as $index => $item) { - $groupIds[] = $item['id']; + $allIds = array_column($groups, 'id'); + + foreach ($groups as &$item) { + $item['parent_id'] = $item['pid']; + if (!in_array($item['parent_id'], $allIds)) { + $item['parent_id'] = 0; } + $item['status'] = 'normal'; } + unset($item); + + $tree = Tree::instance()->init($groups, 'parent_id'); + $groupList = $tree->getTreeList($tree->getTreeArray(0)); } $groupName = []; foreach ($groupList as $k => $v) {