Menu.php 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Description: 菜单
  4. // +----------------------------------------------------------------------
  5. // | Author:
  6. // +----------------------------------------------------------------------
  7. namespace app\admin\model;
  8. use think\Db;
  9. use app\admin\model\Common;
  10. class Menu extends Common
  11. {
  12. /**
  13. * 为了数据库的整洁,同时又不影响Model和Controller的名称
  14. * 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
  15. */
  16. protected $name = 'admin_menu';
  17. /**
  18. * [getDataList 获取列表]
  19. * @return [array]
  20. */
  21. public function getDataList()
  22. {
  23. $cat = new \com\Category('admin_menu', array('id', 'pid', 'title', 'title'));
  24. $data = $cat->getList('', 0, 'sort');
  25. return $data;
  26. }
  27. /**
  28. * [getDataById 根据主键获取详情]
  29. * @param string $id [主键]
  30. * @return [array]
  31. */
  32. public function getDataById($id = '')
  33. {
  34. $data = $this
  35. ->alias('menu')
  36. ->where('menu.id', $id)
  37. ->join('__ADMIN_RULE__ rule', 'menu.rule_id=rule.id', 'LEFT')
  38. ->field('menu.*, rule.title as rule_name')
  39. ->find();
  40. if (!$data) {
  41. $this->error = '暂无此数据';
  42. return false;
  43. }
  44. return $data;
  45. }
  46. /**
  47. * 整理菜单树形结构
  48. * @param array $param [description]
  49. */
  50. protected function getMenuTree()
  51. {
  52. $userInfo = $GLOBALS['userInfo'];
  53. if (!$userInfo) {
  54. return [];
  55. }
  56. $u_id = $userInfo['id'];
  57. if ($u_id === 1) {
  58. $map['status'] = 1;
  59. $menusList = Db::name('admin_menu')->where($map)->order('sort asc')->select();
  60. } else {
  61. $groups = model('User')->get($u_id)->groups;
  62. $ruleIds = [];
  63. foreach($groups as $k => $v) {
  64. $ruleIds = array_unique(array_merge($ruleIds, explode(',', $v['rules'])));
  65. }
  66. $ruleMap['id'] = array('in', $ruleIds);
  67. $ruleMap['status'] = 1;
  68. // 重新设置ruleIds,除去部分已删除或禁用的权限。
  69. $ruleIds = Db::name('admin_rule')->where($ruleMap)->column('id');
  70. empty($ruleIds)&&$ruleIds = '';
  71. $menuMap['status'] = 1;
  72. $menuMap['rule_id'] = array('in',$ruleIds);
  73. $menusList = Db::name('admin_menu')->where($menuMap)->order('sort asc')->select();
  74. }
  75. if (!$menusList) {
  76. return [];
  77. }
  78. //处理成树状
  79. // $tree = new \com\Tree();
  80. // $menusList = $tree->list_to_tree($menusList, 'id', 'pid', 'child', 0, true, array('pid'));
  81. // $menusList = memuLevelClear($menusList);
  82. return $menusList? $menusList: [];
  83. }
  84. }