You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.1 KiB
166 lines
5.1 KiB
<?php |
|
/** |
|
* Created by IntelliJ IDEA. |
|
* User: luwei |
|
* Date: 2017/12/27 |
|
* Time: 10:44 |
|
*/ |
|
|
|
namespace app\modules\mch\models; |
|
|
|
use app\models\Option; |
|
use app\modules\mch\controllers\permission\PermissionsMenu; |
|
use app\modules\mch\models\permission\permission\IndexPermissionForm; |
|
use Yii; |
|
|
|
class MchMenu |
|
{ |
|
/** |
|
* 判断版本:we7(微擎版) | ind(独立版) |
|
*/ |
|
public $platform; |
|
/** |
|
* 账户权限 |
|
*/ |
|
public $user_auth; |
|
/** |
|
* 是否为总账户 |
|
*/ |
|
public $is_admin; |
|
/** |
|
* 线个版本 |
|
*/ |
|
public $offline; |
|
|
|
public function getList() |
|
{ |
|
|
|
$model = new IndexPermissionForm(); |
|
$permissions = $model->getPermissionByUser(); |
|
|
|
$menuList = []; |
|
$permissionsMenu = new PermissionsMenu(); |
|
$list = $permissionsMenu->getPermissionMenu(); |
|
|
|
$menuList = array_merge($menuList, $this->getMenuList($list, $permissions)); |
|
$menuList = $this->resetList($menuList); |
|
$menuList = $this->deleteEmptyList($menuList); |
|
|
|
return $menuList; |
|
} |
|
|
|
public function resetList($list) |
|
{ |
|
foreach ($list as $i => $item) { |
|
if ($item['name'] == '教程管理') { |
|
$a = Option::get('handle', 0, 'admin'); |
|
if ($a) { |
|
$arr = json_decode($a, true); |
|
if ($arr['status'] == 0) { |
|
$list[$i]['admin'] = true; |
|
$item['admin'] = true; |
|
} else { |
|
$list[$i]['admin'] = false; |
|
$item['admin'] = false; |
|
} |
|
} else { |
|
$list[$i]['admin'] = true; |
|
$item['admin'] = true; |
|
} |
|
} |
|
//如果不是总账号、则去除admin = true的菜单 |
|
if (isset($item['admin']) && $item['admin'] && !$this->is_admin) { |
|
unset($list[$i]); |
|
continue; |
|
} |
|
//独立版某些菜单在外面显示,通过is_ind判断 |
|
if (isset($item['is_ind']) && $item['is_ind'] && Yii::$app->controller->is_ind) { |
|
unset($list[$i]); |
|
continue; |
|
} |
|
if (isset($item['we7']) && $item['we7'] && $this->platform != 'we7') { |
|
unset($list[$i]); |
|
continue; |
|
} |
|
if (isset($item['key']) && $this->user_auth !== null && !in_array($item['key'], $this->user_auth)) { |
|
unset($list[$i]); |
|
continue; |
|
} |
|
|
|
if (isset($item['offline']) && isset($this->offline) && $this->offline !== true) { |
|
unset($list[$i]); |
|
continue; |
|
} |
|
if (isset($item['is_show']) && $item['is_show'] !== true) { |
|
unset($list[$i]); |
|
continue; |
|
} |
|
|
|
if (isset($item['children']) && is_array($item['children'])) { |
|
$list[$i]['children'] = $this->resetList($item['children']); |
|
} |
|
} |
|
$list = array_values($list); |
|
return $list; |
|
} |
|
|
|
/** |
|
* 获取动态生成的菜单 |
|
* @param $permissions |
|
* @param $arr |
|
* @return array |
|
*/ |
|
public function getMenuList($permissions, $arr) |
|
{ |
|
foreach ($permissions as $k => $item) { |
|
//微擎账号和独立版账号 |
|
if (Yii::$app->user->isGuest == false || Yii::$app->admin->isGuest == false) { |
|
$permissions[$k]['is_show'] = true; |
|
} else { |
|
if (in_array($item['route'], $arr) && $item['route']) { |
|
$permissions[$k]['is_show'] = true; |
|
} else { |
|
$permissions[$k]['is_show'] = false; |
|
} |
|
} |
|
|
|
if (isset($item['children'])) { |
|
$permissions[$k]['children'] = $this->getMenuList($item['children'], $arr); |
|
foreach ($permissions[$k]['children'] as $i) { |
|
if ($i['is_show'] == true) { |
|
$permissions[$k]['route'] = $i['route']; |
|
$permissions[$k]['is_show'] = true; |
|
break; |
|
} |
|
} |
|
} |
|
|
|
if (isset($item['sub'])) { |
|
$permissions[$k]['sub'] = $this->getMenuList($item['sub'], $arr); |
|
} |
|
} |
|
|
|
return $permissions; |
|
} |
|
|
|
/** |
|
* 当父数组下没有没有一个子元素时,因将该父数组删除 |
|
* @param $menuList |
|
* @return array |
|
*/ |
|
public function deleteEmptyList($menuList) |
|
{ |
|
foreach ($menuList as $i => $item) { |
|
if (is_array($item['children']) && count($item['children']) == 0) { |
|
unset($menuList[$i]); |
|
continue; |
|
} |
|
if (is_array($item['children'])) { |
|
$menuList[$i]['route'] = $item['children'][0]['route']; |
|
} |
|
} |
|
$menuList = array_values($menuList); |
|
|
|
return $menuList; |
|
} |
|
}
|
|
|