MenuModel.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace app\common\model;
  3. use think\Config;
  4. /**
  5. * 菜单表
  6. * Class MenuModel
  7. * @package app\common\model
  8. */
  9. class MenuModel extends BaseModel
  10. {
  11. //菜单表
  12. protected $table='menu';
  13. /**
  14. * 获取侧边菜单
  15. * @return array
  16. */
  17. public function getSideMenu(){
  18. $sideMenu = [];
  19. //1、获取一级菜单
  20. $oneLevel = self::getChildByParentId(0);
  21. foreach($oneLevel as $oneItem){
  22. $sideMenu[$oneItem['menu_id']] = [
  23. 'menu_name'=>$oneItem['menu_name'],
  24. 'controller_name'=>strtolower($oneItem['controller_name']),
  25. 'action_name'=>strtolower($oneItem['action_name']),
  26. 'icon'=>$oneItem['icon']
  27. ];
  28. $menu_id = $oneItem['menu_id'];
  29. $secondLevel = self::getChildByParentId($menu_id);
  30. foreach($secondLevel as $secondItem){
  31. $sideMenu[$oneItem['menu_id']]['child'][] = [
  32. 'menu_name'=>$secondItem['menu_name'],
  33. 'url_path'=>url($secondItem['controller_name']."/".$secondItem['action_name']),
  34. 'action_name'=>strtolower($secondItem['action_name']),
  35. 'controller_name'=>strtolower($secondItem['controller_name'])
  36. ];
  37. }
  38. }
  39. return $sideMenu;
  40. }
  41. /**
  42. * 获取角色菜单的展现形式
  43. * @param int $role_id 角色id
  44. * @param int $where 条件
  45. * @return array
  46. */
  47. public function getRoleMenuShow($role_id,$where=[]){
  48. $where['menu.is_show']=1;
  49. $where['menu.status']=1;
  50. if($where){
  51. $this->where($where);
  52. }
  53. $join=[
  54. ['rel_role_menu rm','rm.menu_id = menu.menu_id and rm.role_id ='.$role_id],
  55. ];
  56. $field="menu.*,rm.role_id rm_role,rm.menu_id rm_menu";
  57. $this->alias('menu');
  58. $this->field('menu.*,rm.role_id');
  59. $this->join($join);
  60. $this->order('parent_menu_id asc,list_order desc');
  61. $res= $this->field($field)->select();
  62. return $this->BaseModel($res);
  63. }
  64. /**
  65. * 通过菜单获取子菜单信息
  66. * @param $parentId
  67. * @param bool $is_cache 是否缓存
  68. * @return false|\PDOStatement|string|\think\Collection
  69. */
  70. public function getChildByParentId($parentId,$is_cache=true){
  71. //缓存5分钟
  72. $menuSelect = $this->where(['parent_menu_id'=>"{$parentId}",'is_show'=>1,'status'=>1])->order('list_order desc,menu_id asc');
  73. if(Config::get('app_debug') == false){
  74. return $menuSelect->cache($is_cache,300)->select();
  75. }
  76. return $menuSelect->select();
  77. }
  78. }