From d6d20c6d535aa11e6c8e92ad675fbae3bc2d115b Mon Sep 17 00:00:00 2001 From: Karson Date: Thu, 26 Jun 2025 21:14:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=84=E5=88=AB=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/admin/controller/auth/Group.php | 25 ++++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) 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) {