1.优化后台管理员管理页面的权限设置,新增zihuaadmin账号
This commit is contained in:
@@ -59,58 +59,15 @@ class Channel extends Backend
|
||||
}
|
||||
$channels = $query->select()->toArray();
|
||||
|
||||
$groupChildrenCache = [];
|
||||
$getGroupChildren = function ($groupId) use (&$getGroupChildren, &$groupChildrenCache) {
|
||||
if ($groupId === null || $groupId === '') return [];
|
||||
if (array_key_exists($groupId, $groupChildrenCache)) return $groupChildrenCache[$groupId];
|
||||
$children = Db::name('admin_group')
|
||||
->where('pid', $groupId)
|
||||
->where('status', 1)
|
||||
->column('id');
|
||||
$all = [];
|
||||
foreach ($children as $cid) {
|
||||
$all[] = $cid;
|
||||
foreach ($getGroupChildren($cid) as $cc) {
|
||||
$all[] = $cc;
|
||||
}
|
||||
}
|
||||
$groupChildrenCache[$groupId] = $all;
|
||||
return $all;
|
||||
};
|
||||
|
||||
$tree = [];
|
||||
foreach ($channels as $ch) {
|
||||
$channelId = (int) ($ch['id'] ?? 0);
|
||||
$rootGroupIds = Db::name('admin_group')
|
||||
$admins = Db::name('admin')
|
||||
->field(['id', 'username'])
|
||||
->where('channel_id', $channelId)
|
||||
->where('pid', 0)
|
||||
->where('status', 1)
|
||||
->column('id');
|
||||
$groupIds = [];
|
||||
foreach ($rootGroupIds as $rootId) {
|
||||
$groupIds[] = $rootId;
|
||||
foreach ($getGroupChildren($rootId) as $gid) {
|
||||
$groupIds[] = $gid;
|
||||
}
|
||||
}
|
||||
|
||||
$adminIds = [];
|
||||
if ($groupIds) {
|
||||
$adminIds = Db::name('admin_group_access')
|
||||
->where('group_id', 'in', array_unique($groupIds))
|
||||
->column('uid');
|
||||
}
|
||||
$adminIds = array_values(array_unique($adminIds));
|
||||
|
||||
$admins = [];
|
||||
if ($adminIds) {
|
||||
$admins = Db::name('admin')
|
||||
->field(['id', 'username'])
|
||||
->where('id', 'in', $adminIds)
|
||||
->order('id', 'asc')
|
||||
->select()
|
||||
->toArray();
|
||||
}
|
||||
->order('id', 'asc')
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
$children = [];
|
||||
foreach ($admins as $a) {
|
||||
@@ -458,9 +415,27 @@ class Channel extends Backend
|
||||
if ($channelId <= 0 || $adminIds === []) {
|
||||
return [];
|
||||
}
|
||||
$accessRows = Db::name('admin_group_access')
|
||||
->field(['uid', 'group_id'])
|
||||
->where('uid', 'in', $adminIds)
|
||||
->order('uid', 'asc')
|
||||
->order('group_id', 'asc')
|
||||
->select()
|
||||
->toArray();
|
||||
$groupIds = [];
|
||||
foreach ($accessRows as $accessRow) {
|
||||
$gid = (int) ($accessRow['group_id'] ?? 0);
|
||||
if ($gid > 0) {
|
||||
$groupIds[] = $gid;
|
||||
}
|
||||
}
|
||||
$groupIds = array_values(array_unique($groupIds));
|
||||
if ($groupIds === []) {
|
||||
return [];
|
||||
}
|
||||
$groupRows = Db::name('admin_group')
|
||||
->field(['id', 'pid', 'name'])
|
||||
->where('channel_id', $channelId)
|
||||
->where('id', 'in', $groupIds)
|
||||
->order('id', 'asc')
|
||||
->select()
|
||||
->toArray();
|
||||
@@ -501,13 +476,6 @@ class Channel extends Backend
|
||||
return $depth;
|
||||
};
|
||||
|
||||
$accessRows = Db::name('admin_group_access')
|
||||
->field(['uid', 'group_id'])
|
||||
->where('uid', 'in', $adminIds)
|
||||
->order('uid', 'asc')
|
||||
->order('group_id', 'asc')
|
||||
->select()
|
||||
->toArray();
|
||||
$metaMap = [];
|
||||
foreach ($accessRows as $accessRow) {
|
||||
$uid = (int) ($accessRow['uid'] ?? 0);
|
||||
|
||||
Reference in New Issue
Block a user