96 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								namespace app\widget\manager;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use think\facade\{View, Cache};
							 | 
						||
| 
								 | 
							
								use app\model\Category;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Menu
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 左侧菜单
							 | 
						||
| 
								 | 
							
								     * milo
							 | 
						||
| 
								 | 
							
								     * 2018-01-06
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function left($categoryId = 0)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $auth = session('auth');
							 | 
						||
| 
								 | 
							
								        $authCates = array_filter(explode(',', $auth['cates']));
							 | 
						||
| 
								 | 
							
								        $rules = Cache::get('group_rules_'.$auth['groupId']);
							 | 
						||
| 
								 | 
							
								        $menuRules = $this->getMenuRules($rules);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $current = strtolower(request()->controller());
							 | 
						||
| 
								 | 
							
								        $current = str_replace('manager.', '', $current);
							 | 
						||
| 
								 | 
							
								        $currentAction = strtolower($current.'/'.request()->action());
							 | 
						||
| 
								 | 
							
								        // message 留言管理是否集成在内容管理中,后期开发中根据情况调整
							 | 
						||
| 
								 | 
							
								        if(in_array($current, ['article', 'product', 'page'], true)){
							 | 
						||
| 
								 | 
							
								            $current = 'content';
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        if($auth['groupId'] == 1) {
							 | 
						||
| 
								 | 
							
								            $menus = $this->getMenus(Category::getList(false));
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            $menus = $this->getMenus(Category::getList(true, $authCates));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        foreach ($menus as $key => $menu) {
							 | 
						||
| 
								 | 
							
								            if ($menu['backend_show'] == 0) {
							 | 
						||
| 
								 | 
							
								                unset($menus[$key]);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $data = [
							 | 
						||
| 
								 | 
							
								            'rules' => $menuRules,
							 | 
						||
| 
								 | 
							
								            'categoryId' => $categoryId,
							 | 
						||
| 
								 | 
							
								            'menus' => $menus,
							 | 
						||
| 
								 | 
							
								            'current' => $current,
							 | 
						||
| 
								 | 
							
								            'currentAction' => $currentAction
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								        return View::assign($data)->fetch('manager/widget/left');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 过滤出权限菜单
							 | 
						||
| 
								 | 
							
								     * @param $rules
							 | 
						||
| 
								 | 
							
								     * @return array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    private function getMenuRules($rules)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $menuRules = [];
							 | 
						||
| 
								 | 
							
								        if (!empty($rules)) {
							 | 
						||
| 
								 | 
							
								            foreach ($rules as $rule) {
							 | 
						||
| 
								 | 
							
								                $hasChildren = $rule['hasChildren'] ?? false;
							 | 
						||
| 
								 | 
							
								                if ($hasChildren) {
							 | 
						||
| 
								 | 
							
								                    $rule['children'] = $this->getMenuRules($rule['children']);
							 | 
						||
| 
								 | 
							
								                    if(count($rule['children']) > 0) {
							 | 
						||
| 
								 | 
							
								                        $rule['status'] = 1;
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if($rule['status'] > 0) {
							 | 
						||
| 
								 | 
							
								                    $menuRules[] = $rule;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return $menuRules;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 内容栏目菜单
							 | 
						||
| 
								 | 
							
								     * @param $cates
							 | 
						||
| 
								 | 
							
								     * @param int $parent_id
							 | 
						||
| 
								 | 
							
								     * @return array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    private function getMenus($cates,$parentId=0)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $menus = [];
							 | 
						||
| 
								 | 
							
								        foreach($cates as $cate){
							 | 
						||
| 
								 | 
							
								            if($cate['parent_id'] == $parentId && $cate['state'] == 1){
							 | 
						||
| 
								 | 
							
								                $children = $this->getMenus($cates,$cate['id']);
							 | 
						||
| 
								 | 
							
								                if(!empty($children)){
							 | 
						||
| 
								 | 
							
								                    $cate['children'] = $children;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(!empty($cate['children']) || !empty($cate['manager'])){
							 | 
						||
| 
								 | 
							
								                    $menus[] = $cate;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return $menus;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |