/** * 获取指定分组id数组的菜单id数组 * * @param array $groupIdArr 分组id数组 * @return array */ public static function getMenuIdArrByGroupIdArr($groupIdArr) { $menuIdArr = []; foreach ($groupIdArr as $groupId) { if (static::getByGroupId($groupId)) { $menuIdArr = array_merge($menuIdArr, DpAdminGroupMenuRelation::getAllMenuIdArrByGroupId($groupId)); } } return array_unique($menuIdArr); }
/** * 保存数据 * * @return array */ public function actionSave() { $group_id = \Yii::$app->request->post('group_id'); $menu_ids = \Yii::$app->request->post('menu_ids'); $name = \Yii::$app->request->post('name'); $is_system = \Yii::$app->request->post('is_system'); $note = \Yii::$app->request->post('note'); $status = \Yii::$app->request->post('status'); $saveData = ['name' => $name, 'is_system' => $is_system, 'note' => $note, 'status' => $status]; if ($group_id) { $obj = DpAdminGroup::find()->findByGroupId($group_id)->one(); if (!$obj) { return $this->renderError('保存失败,记录不存在!'); } } else { $obj = new DpAdminGroup(); } $obj->setAttributes($saveData); if (!$obj->save()) { foreach ($obj->getErrors() as $error) { foreach ($error as $message) { return ['success' => false, 'msg' => $message]; } } } // 用户组关联的菜单权限更新 DpAdminGroupMenuRelation::deleteByGroupId($obj->group_id); if ($menu_ids) { $menuIdArr = array_filter(StringHelper::explode($menu_ids, ',', true, true), function ($menuId) { return DpAdminMenu::getByMenuId($menuId); }); if ($menuIdArr) { foreach ($menuIdArr as $menuId) { $linkObj = new DpAdminGroupMenuRelation(); $linkObj->setAttributes(['group_id' => $obj->group_id, 'menu_id' => $menuId]); $linkObj->save(); } } } return $this->renderSuccess('保存成功'); }
/** * 根据parent_id获取用户组tree数据 * * @param int $groupId 用户组id * @param int $parentId 父级id * @param string $order 排序 * @return array */ public static function getGroupMenuTreeByParentId($groupId = 0, $parentId, $order = 'display_order asc') { $data = static::find()->normal()->findByParentId($parentId)->active()->orderBy($order)->asArray()->all(); $tree = []; if ($data) { foreach ($data as $item) { $text = $item['text']; if ($item['is_hide']) { $text .= ' -- [菜单中隐藏]'; } $node = ['menu_id' => $item['menu_id'], 'parent_id' => $item['parent_id'], 'tab_id' => 'tab_' . $item['menu_id'], 'text' => $text, 'origin_text' => $text, 'title' => $item['title'], 'url' => $item['url'], 'view_package' => $item['view_package'], 'expanded' => boolval($item['expanded']), 'is_expand' => boolval($item['expanded']), 'closable' => boolval($item['closable']), 'is_open_url' => boolval($item['is_open_url']), 'is_open_target' => boolval($item['is_open_target']), 'is_every_open' => boolval($item['is_every_open']), 'is_hide' => boolval($item['is_hide']), 'display_order' => $item['display_order'], 'note' => $item['note'], 'status' => intval($item['status']), 'checked' => DpAdminGroupMenuRelation::find()->findByGroupId($groupId)->findByMenuId($item['menu_id'])->exists()]; $children = static::getGroupMenuTreeByParentId($groupId, $item['menu_id'], $order); if ($children) { $node['leaf'] = false; $node['children'] = $children; } else { $node['leaf'] = true; } $tree[] = $node; } } return $tree; }
/** * 保存数据 * * @return array */ public function actionSave() { $menu_id = Yii::$app->request->post('menu_id'); $parent_id = intval(Yii::$app->request->post('parent_id')); $text = Yii::$app->request->post('origin_text'); $title = Yii::$app->request->post('title'); $url = Yii::$app->request->post('url'); $view_package = Yii::$app->request->post('view_package'); $expanded = intval(Yii::$app->request->post('is_expand')); $closable = intval(Yii::$app->request->post('closable')); $is_folder = intval(Yii::$app->request->post('is_folder')); $is_open_url = intval(Yii::$app->request->post('is_open_url')); $is_open_target = intval(Yii::$app->request->post('is_open_target')); $is_every_open = intval(Yii::$app->request->post('is_every_open')); $is_hide = intval(Yii::$app->request->post('is_hide')); $display_order = Yii::$app->request->post('display_order'); $params = Yii::$app->request->post('params'); $note = Yii::$app->request->post('note'); $status = intval(Yii::$app->request->post('status')); if ($parent_id) { if ($parent_id == $menu_id) { return $this->renderError('不能把自己当作父级'); } else { $menu = DpAdminMenu::find()->findByMenuId($parent_id)->asArray()->one(); if (!$menu) { return $this->renderError('父级不存在'); } } } $saveData = ['parent_id' => $parent_id, 'text' => $text, 'title' => $title, 'url' => $url, 'view_package' => $view_package, 'expanded' => $expanded, 'closable' => $closable, 'is_folder' => $is_folder, 'is_open_url' => $is_open_url, 'is_open_target' => $is_open_target, 'is_every_open' => $is_every_open, 'is_hide' => $is_hide, 'display_order' => $display_order, 'params' => $params, 'note' => $note, 'status' => $status]; if ($menu_id) { $obj = DpAdminMenu::find()->findByMenuId($menu_id)->one(); if (!$obj) { return $this->renderError('保存失败,记录不存在!'); } } else { $obj = new DpAdminMenu(); } $obj->setAttributes($saveData); if (!$obj->save()) { foreach ($obj->getErrors() as $error) { foreach ($error as $message) { return ['success' => false, 'msg' => $message]; } } } // 自动给系统用户添加菜单权限 if (!$menu_id) { $users = DpAdminUser::find()->findByIsSystem(1)->asArray()->all(); foreach ($users as $user) { $linkObj = new DpAdminUserMenuRelation(); $linkObj->setAttributes(['user_id' => $user['user_id'], 'menu_id' => $obj->menu_id]); $linkObj->save(); } } // 自动给系统用户组添加菜单权限 if (!$menu_id) { $groups = DpAdminGroup::find()->findByIsSystem(1)->asArray()->all(); foreach ($groups as $group) { $linkObj = new DpAdminGroupMenuRelation(); $linkObj->setAttributes(['group_id' => $group['group_id'], 'menu_id' => $obj->menu_id]); $linkObj->save(); } } return $this->renderSuccess('保存成功'); }