心理咨询网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MenuModel.php 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. /**
  3. * @copyright (C)2016-2099 Hnaoyun Inc.
  4. * @author XingMeng
  5. * @email hnxsh@foxmail.com
  6. * @date 2017年4月3日
  7. * 菜单管理模型类
  8. */
  9. namespace app\admin\model\system;
  10. use core\basic\Model;
  11. class MenuModel extends Model
  12. {
  13. // 获取菜单列表
  14. public function getList()
  15. {
  16. $result = parent::table('ay_menu')->order('pcode,sorting,id')->select();
  17. $tree = get_tree($result, 0, 'mcode', 'pcode');
  18. return $tree;
  19. }
  20. // 获取菜单选择列表
  21. public function getSelect()
  22. {
  23. $result = parent::table('ay_menu')->field('id,pcode,mcode,name,url,sorting')
  24. ->order('pcode,sorting,id')
  25. ->select();
  26. $tree = get_tree($result, 0, 'mcode', 'pcode');
  27. return $tree;
  28. }
  29. // 获取菜单详情
  30. public function getMenu($mcode)
  31. {
  32. $result = parent::table('ay_menu')->where("mcode='$mcode'")->find();
  33. if ($result)
  34. $result->actions = $this->getMenuAction($result->mcode);
  35. return $result;
  36. }
  37. // 检查是否存在
  38. public function checkMenu($data)
  39. {
  40. return parent::table('ay_menu')->where($data)->find();
  41. }
  42. // 获取最后一个code
  43. public function getLastCode()
  44. {
  45. return parent::table('ay_menu')->order('mcode DESC')->value('mcode');
  46. }
  47. // 新增菜单,$actions为菜单功能按钮数组
  48. public function addMenu(array $data, array $actions = array())
  49. {
  50. $result = parent::table('ay_menu')->autoTime()->insert($data);
  51. if ($result && $actions) {
  52. $this->delMenuAction($data['mcode']);
  53. $this->addMenuAction($data['mcode'], $actions);
  54. }
  55. return $result;
  56. }
  57. // 删除菜单
  58. public function delMenu($mcode)
  59. {
  60. $result = parent::table('ay_menu')->where("mcode='$mcode' OR pcode='$mcode'")->delete();
  61. if ($result) {
  62. $this->delMenuAction($mcode);
  63. }
  64. return $result;
  65. }
  66. // 修改菜单
  67. public function modMenu($mcode, $data, array $actions = null)
  68. {
  69. $result = parent::table('ay_menu')->where("mcode='$mcode'")
  70. ->autoTime()
  71. ->update($data);
  72. if ($result) {
  73. if (array_key_exists('mcode', $data) && $mcode != $data['mcode']) {
  74. $this->modSubMenu($mcode, $data['mcode']);
  75. }
  76. if (is_array($actions)) {
  77. $this->delMenuAction($mcode);
  78. }
  79. if ($actions) {
  80. if (array_key_exists('mcode', $data)) {
  81. $mcode = $data['mcode'];
  82. }
  83. $this->addMenuAction($mcode, $actions);
  84. }
  85. }
  86. return $result;
  87. }
  88. // 修改子菜单的父菜单
  89. private function modSubMenu($mcode, $mcodeNew)
  90. {
  91. return parent::table('ay_menu')->where("pcode='$mcode'")->update("mcode='$mcodeNew'");
  92. }
  93. // 获取指定菜单的功能数据
  94. private function getMenuAction($mcode)
  95. {
  96. return parent::table('ay_menu_action')->where("mcode='$mcode'")->column('action');
  97. }
  98. // 插入指定菜单功能关联数据
  99. private function addMenuAction($mcode, array $actions)
  100. {
  101. return parent::table('ay_menu_action')->field('mcode,action')
  102. ->relation($mcode, $actions)
  103. ->insert();
  104. }
  105. // 删除指定菜单功能关联数据
  106. private function delMenuAction($mcode)
  107. {
  108. return parent::table('ay_menu_action')->where("mcode='$mcode'")->delete();
  109. }
  110. // 获取菜单权限功能表
  111. public function getMenuLevel()
  112. {
  113. $table = array(
  114. 'ay_menu',
  115. 'ay_menu_action',
  116. 'ay_type'
  117. );
  118. $field = array(
  119. 'ay_menu.mcode',
  120. 'ay_menu.name',
  121. 'ay_menu.url',
  122. 'ay_type.item',
  123. 'ay_type.value'
  124. );
  125. $where = array(
  126. "ay_type.tcode='T101'",
  127. "ay_menu.mcode=ay_menu_action.mcode",
  128. "ay_type.value=ay_menu_action.action"
  129. );
  130. $order = array(
  131. 'ay_menu.mcode',
  132. 'ay_type.tcode',
  133. 'ay_type.sorting'
  134. );
  135. $result = parent::table($table)->field($field)
  136. ->where($where)
  137. ->order($order)
  138. ->select();
  139. $data = array();
  140. foreach ($result as $key => $value) {
  141. $data[$value->mcode][] = $value;
  142. }
  143. return $data;
  144. }
  145. }