/**
  * 保存数据
  *
  * @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('保存成功');
 }
Esempio n. 3
0
 /**
  * 保存数据
  *
  * @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('保存成功');
 }
Esempio n. 4
0
 /**
  * 菜单拖放更改排序
  *
  * @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('排序调整成功');
 }