where($condition); if ($limit) { $findModel->limit($limit); } $rows = $findModel->all(); return $rows; } /** * @param $condition * @return null|static */ static function findOne($condition) { if (empty($condition)) { return null; } return AuthPermModel::findOne($condition); } /** * 根据扫描的route 返回他对应的级别 * @param $route * @return int */ static function routeLevel($route) { $items = explode('/',$route); $len = count($items); if (2 == $len) { if ('*' == $items[1]) { return AuthPerm::LEVEL_MODULE; } else { return 0; } } else if(3 == $len){ if ('*' == $items[2]) { return AuthPerm::LEVEL_CONTROLLER; } else { return AuthPerm::LEVEL_ACTION; } } } /** * @param $where * @param $asArr * @return array|\yii\db\ActiveRecord[] */ static function getPermsRouters($where, $asArr = false) { $routersModel = AuthPermsRoutesModel::find(); $routersModel->where($where); if ($asArr) { $routersModel->asArray(); } $return = $routersModel->all(); return $return; } /** * @param $confirmRouters * @return array */ static function getGroupPermsRouters($confirmRouters) { $routers = $confirmRouters; $modulesArr = []; $controllerArr = []; $actionArr = []; $groupRouter = []; $permModel = AuthPermModel::find(); $permModel->where('perm_id >0'); $permModel->asArray(); $confirmPerms = $permModel->all(); foreach ($routers as $rk => $rv) { $groupRouter[$rv['perm_id']][] = $rv['route']; } foreach ($confirmPerms as $k => $v) { if (AuthPerm::LEVEL_MODULE == $v['level']) { $modulesArr[$v['perm_id']] = ['id' => $v['perm_id'], 'label' => $v['name'],'items' => [],'routes' => '', 'parent_id' => $v['parent_id']]; } else if (AuthPerm::LEVEL_CONTROLLER == $v['level']) { $controllerArr[$v['perm_id']] = ['id' => $v['perm_id'], 'label' => $v['name'],'items' => [],'routes' => '', 'parent_id' => $v['parent_id']]; } else if (AuthPerm::LEVEL_ACTION == $v['level']) { $myRouters = isset($groupRouter[$v['perm_id']])? implode(',', $groupRouter[$v['perm_id']]): ''; $actionArr[$v['perm_id']] = ['id' => $v['perm_id'], 'label' => $v['name'], 'items' => [], 'routes' => $myRouters, 'parent_id' => $v['parent_id']]; } } foreach ($actionArr as $ak => $av) { if (isset($controllerArr[$av['parent_id']])) { $controllerArr[$av['parent_id']]['items'][] = $av; } } foreach ($controllerArr as $ck => $cv) { if (isset($modulesArr[$cv['parent_id']])) { $modulesArr[$cv['parent_id']]['items'][] = $cv; } } return $modulesArr; } }