/**
  * 获取菜单
  */
 protected function getMenus()
 {
     //获取系统菜单导航
     $map['status'] = array('gt', 0);
     $SystemMenuModel = D('SystemMenu');
     $tree = new \Common\Util\Tree();
     $all_admin_menu_list = $tree->list_to_tree($SystemMenuModel->where($map)->select());
     //所有系统菜单
     //设置数组key为菜单ID
     foreach ($all_admin_menu_list as $key => $val) {
         $all_menu_list[$val['id']] = $val;
     }
     //获取功能模块的后台菜单列表
     $moule_list = D('StoreModule')->where($map)->select();
     //获取所有安装并启用的功能模块
     $all_module_menu_list = array();
     foreach ($moule_list as $key => $val) {
         $menu_list_item = $tree->list_to_tree(json_decode($val['admin_menu'], true));
         $all_module_menu_list[] = $menu_list_item[0];
     }
     //设置数组key为菜单ID
     foreach ($all_module_menu_list as &$menu) {
         $new_all_module_menu_list[$menu['id']] = $menu;
     }
     //合并系统核心菜单与功能模块菜单
     if ($new_all_module_menu_list) {
         $all_menu_list += $new_all_module_menu_list;
     }
     $current_menu = $SystemMenuModel->getCurrentMenu();
     //当前菜单
     $parent_menu = $SystemMenuModel->getParentMenu($current_menu['id']);
     //获取面包屑导航
     foreach ($parent_menu as $key => $val) {
         $parent_menu_id[] = $val['id'];
     }
     $current_root_menu = $SystemMenuModel->getRootMenuById($current_menu['id']);
     //当前菜单的顶级菜单
     $side_menu_list = $all_menu_list[$current_root_menu['id']]['_child'];
     //左侧菜单
     $this->assign('__ALL_MENU_LIST__', $all_menu_list);
     //所有菜单
     $this->assign('__SIDE_MENU_LIST__', $side_menu_list);
     //左侧菜单
     $this->assign('__PARENT_MENU__', $parent_menu);
     //当前菜单的所有父级菜单
     $this->assign('__PARENT_MENU_ID__', $parent_menu_id);
     //当前菜单的所有父级菜单的ID
     $this->assign('__CURRENT_ROOTMENU__', $current_root_menu['id']);
     //当前主菜单
     $this->assign('__USER__', session('user_auth'));
     //用户登录信息
 }
 /**
  * 获取分类树,指定分类则返回指定分类的子分类树,不指定则返回所有分类树,指定分类若无子分类则返回同级分类
  * @param  integer $id    分类ID
  * @param  boolean $field 查询字段
  * @return array          分类树
  * @author jry <*****@*****.**>
  */
 public function getCategoryTree($id = 0, $limit = null, $group = 1, $field = 'id,pid,title,icon,create_time,sort')
 {
     //获取当前分类信息
     if ((int) $id > 0) {
         $info = $this->find($id);
         $id = $info['id'];
     }
     //获取所有分类
     $map['status'] = array('eq', 1);
     $map['group'] = array('eq', $id ? $info['group'] : $group);
     $tree = new \Common\Util\Tree();
     $list = $this->field($field)->where($map)->order('sort asc, id asc')->select();
     $list = $tree->list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = (int) $id);
     //返回当前分类的子分类树
     if ($limit) {
         $list = array_slice($list, 0, $limit);
     }
     if (!$list) {
         return $this->getSameLevelCategoryTree($id);
     }
     return $list;
 }
 /**
  * 获取分类树,指定分类则返回指定分类的子分类树,不指定则返回所有分类树,指定分类若无子分类则返回同级分类
  * @param  integer $id    分类ID
  * @param  boolean $field 查询字段
  * @return array          分类树
  * @author jry <*****@*****.**>
  */
 public function getCategoryTree($id = 0, $limit = null, $page = 1, $group = 1, $field = true)
 {
     //获取当前分类信息
     if ((int) $id > 0) {
         $info = $this->find($id);
         $id = $info['id'];
     }
     //获取所有分类
     $map['status'] = array('eq', 1);
     $map['group'] = array('eq', $id ? $info['group'] : $group);
     $tree = new \Common\Util\Tree();
     $list = $this->field($field)->where($map)->order('sort asc, id asc')->select();
     // 拼接分类地址
     foreach ($list as $key => &$val) {
         $val['href'] = U($this->moduleName . '/Index/lists', array('cid' => $val['id']));
     }
     // 转换成树结构
     $list = $tree->list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = (int) $id);
     //返回当前分类的子分类树
     if ($limit) {
         $list = array_slice($list, 0, $limit);
     }
     if (!$list) {
         return $this->getSameLevelCategoryTree($id);
     }
     return $list;
 }
 /**
  * 初始化方法
  * @author jry <*****@*****.**>
  */
 protected function _initialize()
 {
     //登录检测
     if (!is_login()) {
         //还没登录跳转到登录页面
         $this->redirect('Admin/Public/login');
     }
     //权限检测
     if (!D('UserGroup')->checkAuth()) {
         $this->error('权限不足!');
     }
     //获取系统菜单导航
     $map['status'] = array('eq', 1);
     if (!C('DEVELOP_MODE')) {
         //是否开启开发者模式
         $map['dev'] = array('neq', 1);
     }
     $tree = new \Common\Util\Tree();
     $all_admin_menu_list = $tree->list_to_tree(D('SystemMenu')->where($map)->select());
     //所有系统菜单
     //设置数组key为菜单ID
     foreach ($all_admin_menu_list as $key => $val) {
         $all_menu_list[$val['id']] = $val;
     }
     //获取功能模块的后台菜单列表
     $moule_list = D('SystemModule')->where(array('status' => 1))->select();
     //获取所有安装并启用的功能模块
     $all_module_menu_list = array();
     foreach ($moule_list as $key => $val) {
         $menu_list_item = $tree->list_to_tree(json_decode($val['admin_menu'], true));
         $all_module_menu_list[] = $menu_list_item[0];
     }
     //设置数组key为菜单ID
     foreach ($all_module_menu_list as &$menu) {
         $new_all_module_menu_list[$menu['id']] = $menu;
     }
     //合并系统核心菜单与功能模块菜单
     if ($new_all_module_menu_list) {
         $all_menu_list += $new_all_module_menu_list;
     }
     $current_menu = D('SystemMenu')->getCurrentMenu();
     //当前菜单
     $parent_menu = D('SystemMenu')->getParentMenu($current_menu['id']);
     //获取面包屑导航
     foreach ($parent_menu as $key => $val) {
         $parent_menu_id[] = $val['id'];
     }
     $current_root_menu = D('SystemMenu')->getRootMenuById($current_menu['id']);
     //当前菜单的顶级菜单
     $side_menu_list = $all_menu_list[$current_root_menu['id']]['_child'];
     //左侧菜单
     $this->assign('__ALL_MENU_LIST__', $all_menu_list);
     //所有菜单
     $this->assign('__SIDE_MENU_LIST__', $side_menu_list);
     //左侧菜单
     $this->assign('__PARENT_MENU__', $parent_menu);
     //当前菜单的所有父级菜单
     $this->assign('__PARENT_MENU_ID__', $parent_menu_id);
     //当前菜单的所有父级菜单的ID
     $this->assign('__CURRENT_ROOTMENU__', $current_root_menu['id']);
     //当前主菜单
     $this->assign('__USER__', session('user_auth'));
     //用户登录信息
 }
 /**
  * 获取分类树,指定分类则返回指定分类的子分类树,不指定则返回所有分类树,指定分类若无子分类则返回同级分类
  * @param  integer $id    分类ID
  * @param  boolean $field 查询字段
  * @return array          分类树
  * @author jry <*****@*****.**>
  */
 public function getCategoryTree($id = 0, $group = 1, $field = true)
 {
     //获取当前分类信息
     if ((int) $id > 0) {
         $info = $this->find($id);
         $id = $info['id'];
     }
     //获取所有分类
     $map['status'] = array('eq', 1);
     $map['group'] = array('eq', $id ? $info['group'] : $group);
     $tree = new \Common\Util\Tree();
     $list = $this->field($field)->where($map)->order('sort asc')->select();
     $list = $this->getCategoryCount($list);
     //获取分类的文档数目
     $list = $tree->list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = (int) $id);
     //返回当前分类的子分类树
     if (!$list) {
         return $this->getSameLevelCategoryTree($id);
     }
     return $list;
 }