/** * 保存数据 * * @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('保存成功'); }
/** * 保存数据 * * @return array */ public function actionSave() { $url_id = \Yii::$app->request->post('url_id'); $menu_id = \Yii::$app->request->post('menu_id'); $name = \Yii::$app->request->post('name'); $alias = \Yii::$app->request->post('alias'); $route = \Yii::$app->request->post('route'); $method = \Yii::$app->request->post('method'); $host = \Yii::$app->request->post('host'); $enable_rule = \Yii::$app->request->post('enable_rule'); $note = \Yii::$app->request->post('note'); $status = \Yii::$app->request->post('status'); if (!$alias) { // 自动生成别名 if (strpos($route, '/') === 0) { $tempRoute = substr($route, 1, strlen($route)); } else { $tempRoute = $route; } $alias = join('.', StringHelper::explode($tempRoute, '/', true, true)); } $methodStr = ''; if (is_array($method)) { $method = array_filter($method, function ($value) { return in_array($value, ['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS']); }); $methodStr = join(',', $method); } $saveData = ['name' => $name, 'alias' => $alias, 'route' => $route, 'method' => $methodStr, 'host' => $host, 'enable_rule' => $enable_rule, 'note' => $note, 'status' => $status]; $obj = null; if ($url_id) { $obj = DpAdminMenuUrl::find()->findByUrlId($url_id)->one(); if (!$obj) { return $this->renderError('保存失败,记录不存在!'); } } else { if ($alias) { $obj = DpAdminMenuUrl::find()->findByAlias($alias)->one(); } if (!$obj) { $obj = new DpAdminMenuUrl(); } } $obj->setAttributes($saveData); if (!$obj->save()) { foreach ($obj->getErrors() as $error) { foreach ($error as $message) { return ['success' => false, 'msg' => $message]; } } } if ($menu_id) { if (!DpAdminMenu::getByMenuId($menu_id)) { return $this->renderError('菜单不存在'); } else { $linkObj = new DpAdminMenuUrlRelation(); $linkObj->setAttributes(['menu_id' => $menu_id, 'url_id' => $obj->url_id, 'status' => DpAdminMenuUrlRelation::STATUS_ACTIVE]); if (!$linkObj->save()) { foreach ($obj->getErrors() as $error) { foreach ($error as $message) { return ['success' => false, 'msg' => $message]; } } } } } return $this->renderSuccess('保存成功'); }
/** * 保存数据 * * @return array */ public function actionSave() { $user_id = \Yii::$app->request->post('user_id'); $menu_ids = \Yii::$app->request->post('menu_ids'); $username = \Yii::$app->request->post('username'); $nickname = \Yii::$app->request->post('nickname'); $source_password = \Yii::$app->request->post('source_password'); $group_ids = (array) \Yii::$app->request->post('group_ids'); $is_group_access = \Yii::$app->request->post('is_group_access'); $is_user_access = \Yii::$app->request->post('is_user_access'); $is_system = \Yii::$app->request->post('is_system'); $note = \Yii::$app->request->post('note'); $status = \Yii::$app->request->post('status'); $groupIdsStr = ''; if ($group_ids) { $groupIdsStr = join(',', array_filter($group_ids, function ($groupId) { return DpAdminGroup::getByGroupId($groupId); })); } $saveData = ['username' => $username, 'nickname' => $nickname, 'source_password' => $source_password, 'group_ids' => $groupIdsStr, 'is_group_access' => $is_group_access, 'is_user_access' => $is_user_access, 'is_system' => $is_system, 'note' => $note, 'status' => $status]; if ($user_id) { $obj = DpAdminUser::find()->where(['user_id' => $user_id])->one(); if (!$obj) { return $this->renderError('保存失败,记录不存在!'); } } else { $obj = new DpAdminUser(); } $obj->setAttributes($saveData); if (!$obj->save()) { foreach ($obj->getErrors() as $error) { foreach ($error as $message) { return ['success' => false, 'msg' => $message]; } } } // 用户关联的菜单权限更新 DpAdminUserMenuRelation::deleteByUserId($obj->user_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 DpAdminUserMenuRelation(); $linkObj->setAttributes(['user_id' => $obj->user_id, 'menu_id' => $menuId]); $linkObj->save(); } } } return $this->renderSuccess('保存成功'); }
/** * 菜单拖放更改排序 * * @return array */ public function actionDrop() { $ids = \Yii::$app->request->post('ids'); // 移动的菜单id集 $position = \Yii::$app->request->post('position'); // 位置 before.前插入,after.后插入 $toMenuId = \Yii::$app->request->post('to_menu_id'); // 移动目标的菜单id $toMenu = DpAdminMenu::getByMenuId($toMenuId); if (!$toMenu) { return $this->renderError('菜单不存在'); } // 调整排序的菜单id $dropMenuIdArr = array_filter(StringHelper::explode($ids, ',', true, true), function ($value) { return is_numeric($value) && DpAdminMenu::getByMenuId($value); }); // 调整排序菜单数量 $dropCount = count($dropMenuIdArr); if ('before' == $position) { // 在菜单前插入 $menuAllObj = DpAdminMenu::find()->findByParentId($toMenu['parent_id'])->orderBy('display_order asc')->all(); // 将要插入的菜单前面的排序向前移动 // 插入的开始排序号 $startOrder = $toMenu['display_order'] - 1; $otherStartOrder = $startOrder - $dropCount; foreach ($menuAllObj as $menuObj) { if ($menuObj->menu_id == $toMenu['menu_id']) { break; } $menuObj->display_order = $otherStartOrder--; $menuObj->save(); } $dropStartOrder = $toMenu['display_order'] - $dropCount; foreach ($dropMenuIdArr as $menuId) { $dropMenu = DpAdminMenu::find()->findByMenuId($menuId)->one(); if ($dropMenu) { $dropMenu->parent_id = $toMenu['parent_id']; $dropMenu->display_order = $dropStartOrder++; $dropMenu->save(); } } } elseif ('after' == $position) { // 在菜单后插入 $menuAllObj = DpAdminMenu::find()->findByParentId($toMenu['parent_id'])->andWhere('menu_id not in (' . join(',', $dropMenuIdArr) . ')')->all(); // 将要插入的菜单后面的排序向后移动 // 插入的开始排序号 $isStartOrder = false; $startOrder = $toMenu['display_order'] + 1; $otherStartOrder = $startOrder + $dropCount; foreach ($menuAllObj as $menuObj) { if ($menuObj->menu_id == $toMenu['menu_id']) { $isStartOrder = true; continue; } if (!$isStartOrder) { continue; } $menuObj->display_order = $otherStartOrder++; $menuObj->save(); } foreach ($dropMenuIdArr as $menuId) { $dropMenu = DpAdminMenu::find()->findByMenuId($menuId)->one(); if ($dropMenu) { $dropMenu->parent_id = $toMenu['parent_id']; $dropMenu->display_order = $startOrder++; $dropMenu->save(); } } } elseif ('append' == $position) { // 添加为子节点 $maxDisplayOrder = DpAdminMenu::find()->findByParentId($toMenu['menu_id'])->max('display_order'); foreach ($dropMenuIdArr as $menuId) { $dropMenu = DpAdminMenu::find()->findByMenuId($menuId)->one(); if ($dropMenu) { $dropMenu->parent_id = $toMenu['menu_id']; $dropMenu->display_order = ++$maxDisplayOrder; $dropMenu->save(); } } } else { return $this->renderError('未知插入位置'); } return $this->renderSuccess('排序调整成功'); }