Esempio n. 1
0
 /**
  * 获取指定菜单id数组url规则记录
  *
  * @param array $menuIdArr 菜单id数组
  * @return array
  */
 public static function getUrlRuleByMenuIdArr($menuIdArr)
 {
     $urlRuls = [];
     $urlIdArr = DpAdminMenuUrlRelation::getUrlIdArrByMenuIdArr($menuIdArr);
     foreach ($urlIdArr as $urlId) {
         $url = static::find()->findByUrlId($urlId)->active()->asArray()->one();
         if ($url) {
             $urlRuleAll = DpAdminMenuUrlRule::find()->active()->findByUrlId($urlId)->all();
             $rule = [];
             foreach ($urlRuleAll as $item) {
                 $rule[$item['param_name']] = $item['rule'];
             }
             $urlRuls[] = ['route' => $url['route'], 'method' => $url['method'], 'enable_rule' => $url['enable_rule'], 'rule' => $rule];
         }
     }
     return $urlRuls;
 }
Esempio n. 2
0
 /**
  * 获取根据parent_id和菜单id权限url数据
  *
  * @param boolean $isSuper 是否为超级用户
  * @param array $menuIdList 菜单id列表
  * @param int $parentId 父级id
  * @param array|string $condition 条件
  * @param array $params 条件参数
  * @param string $order 排序
  * @return array
  */
 public static function getUrlsByParentId($isSuper, $menuIdList, $parentId, $condition = '', $params = [], $order = 'display_order asc')
 {
     $data = static::find()->normal()->findByParentId($parentId)->andWhere($condition, $params)->active()->orderBy($order)->asArray()->all();
     $urls = [];
     if ($data) {
         foreach ($data as $item) {
             if ($isSuper || in_array($item['menu_id'], $menuIdList)) {
                 $menuUrls = DpAdminMenuUrlRelation::getAllUrlByMenuId($item['menu_id']);
                 if ($menuUrls) {
                     foreach ($menuUrls as $menuUrl) {
                         $urls[$menuUrl['alias']] = Url::toRoute($menuUrl['route']);
                     }
                 }
                 $childrenUrls = static::getUrlsByParentId($isSuper, $menuIdList, $item['menu_id'], $condition, $params, $order);
                 if ($childrenUrls) {
                     $urls = array_merge($urls, $childrenUrls);
                 }
             }
         }
     }
     return $urls;
 }
 /**
  * 更新状态
  *
  * @return array
  */
 public function actionUpdateStatus()
 {
     $ids = \Yii::$app->request->post('ids');
     $status = intval(\Yii::$app->request->post('status'));
     if ($status != 0) {
         $status = 1;
     }
     foreach (StringHelper::explode($ids, ',', true, true) as $id) {
         $obj = DpAdminMenuUrlRelation::find()->findByLinkId($id)->one();
         if ($obj) {
             $obj->status = $status;
             $obj->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('保存成功');
 }