123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- namespace app\common\model;
- use think\Config;
- /**
- * 菜单表
- * Class MenuModel
- * @package app\common\model
- */
- class MenuModel extends BaseModel
- {
- //菜单表
- protected $table='menu';
- /**
- * 获取侧边菜单
- * @return array
- */
- public function getSideMenu(){
- $sideMenu = [];
- //1、获取一级菜单
- $oneLevel = self::getChildByParentId(0);
- foreach($oneLevel as $oneItem){
- $sideMenu[$oneItem['menu_id']] = [
- 'menu_name'=>$oneItem['menu_name'],
- 'controller_name'=>strtolower($oneItem['controller_name']),
- 'action_name'=>strtolower($oneItem['action_name']),
- 'icon'=>$oneItem['icon']
- ];
- $menu_id = $oneItem['menu_id'];
- $secondLevel = self::getChildByParentId($menu_id);
- foreach($secondLevel as $secondItem){
- $sideMenu[$oneItem['menu_id']]['child'][] = [
- 'menu_name'=>$secondItem['menu_name'],
- 'url_path'=>url($secondItem['controller_name']."/".$secondItem['action_name']),
- 'action_name'=>strtolower($secondItem['action_name']),
- 'controller_name'=>strtolower($secondItem['controller_name'])
- ];
- }
- }
- return $sideMenu;
- }
- /**
- * 获取角色菜单的展现形式
- * @param int $role_id 角色id
- * @param int $where 条件
- * @return array
- */
- public function getRoleMenuShow($role_id,$where=[]){
- $where['menu.is_show']=1;
- $where['menu.status']=1;
- if($where){
- $this->where($where);
- }
- $join=[
- ['rel_role_menu rm','rm.menu_id = menu.menu_id and rm.role_id ='.$role_id],
- ];
- $field="menu.*,rm.role_id rm_role,rm.menu_id rm_menu";
- $this->alias('menu');
- $this->field('menu.*,rm.role_id');
- $this->join($join);
- $this->order('parent_menu_id asc,list_order desc');
- $res= $this->field($field)->select();
- return $this->BaseModel($res);
- }
- /**
- * 通过菜单获取子菜单信息
- * @param $parentId
- * @param bool $is_cache 是否缓存
- * @return false|\PDOStatement|string|\think\Collection
- */
- public function getChildByParentId($parentId,$is_cache=true){
- //缓存5分钟
- $menuSelect = $this->where(['parent_menu_id'=>"{$parentId}",'is_show'=>1,'status'=>1])->order('list_order desc,menu_id asc');
- if(Config::get('app_debug') == false){
- return $menuSelect->cache($is_cache,300)->select();
- }
- return $menuSelect->select();
- }
- }
|