Menus.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. /**
  3. *------------------------------------------------------
  4. * Menus.php
  5. *------------------------------------------------------
  6. *
  7. * @author qqiu@qq.com
  8. * @date 2016/12/19 11:31
  9. * @version V1.0
  10. *
  11. */
  12. namespace App\Services\Admin;
  13. use App\Services\Base\BaseProcess;
  14. use App\Models\AdminMenusModel;
  15. use App\Services\Base\Tree;
  16. class Menus extends BaseProcess {
  17. /**
  18. * 模型
  19. */
  20. private $_model;
  21. /**
  22. * 初始化
  23. */
  24. public function __construct()
  25. {
  26. if( ! $this->_model) $this->_model = new AdminMenusModel();
  27. }
  28. public function model() {
  29. $this->setSucessCode();
  30. return $this->_model;
  31. }
  32. public function find($id) {
  33. return $this->_model->find($id);
  34. }
  35. /**
  36. * 添加
  37. * @param unknown $data
  38. */
  39. public function create($data)
  40. {
  41. return $this->_model->create($data);
  42. }
  43. /**
  44. * 更新
  45. * @param unknown $id
  46. * @param unknown $data
  47. */
  48. public function update($id,$data)
  49. {
  50. $obj = $this->_model->find($id);
  51. if(!$obj) {
  52. return false;
  53. }
  54. $ok = $obj->update($data);
  55. return $ok;
  56. }
  57. /**
  58. * 删除
  59. * @param unknown $id
  60. */
  61. public function destroy($id)
  62. {
  63. return $this->_model->destroy($id);
  64. }
  65. /**
  66. * 获取当前菜单层级
  67. * @param $pid
  68. * @return level
  69. */
  70. public function getLevel($id)
  71. {
  72. $tree = new Tree();
  73. $MenusArr = $this->_model->orderBy('sort', 'DESC')->get()->toArray();
  74. $tree->init($MenusArr);
  75. $allParents = $tree->getPos($id);
  76. return count($allParents);
  77. }
  78. /**
  79. * 获取菜单树状结构
  80. */
  81. public function getMenusTree($search = array()){
  82. $currentQuery = $this->_model;
  83. if(isset($search['keyword']) && !empty($search['keyword'])) {
  84. $keywords = '%' . $search['keyword'] . '%';
  85. $currentQuery = $currentQuery->where(function ($query) use ($keywords) {
  86. $query->where('name' , 'like', $keywords)
  87. // ->orwhere('module', 'like', $keywords)
  88. ->orwhere('path', 'like', $keywords)
  89. ->orwhere('mark', 'like', $keywords);
  90. });
  91. }
  92. $MenusArr = $currentQuery->orderBy('sort', 'DESC')->get()->toArray();
  93. $tree = new Tree();
  94. $tree->icon = array('&nbsp;&nbsp;&nbsp;│ ', '&nbsp;&nbsp;&nbsp;├─ ', '&nbsp;&nbsp;&nbsp;└─ ');
  95. $tree->nbsp = '&nbsp;&nbsp;&nbsp;';
  96. $tree->init($MenusArr);
  97. return $tree->getTree();
  98. }
  99. /**
  100. * 搜索
  101. * @param $search
  102. * @param $pagesize
  103. */
  104. public function search($search,$orderby=array('sort'=>'desc'),$pagesize = PAGE_NUMS)
  105. {
  106. $currentQuery = $this->_model;
  107. if(isset($search['keyword']) && !empty($search['keyword'])) {
  108. $keywords = '%' . $search['keyword'] . '%';
  109. $currentQuery = $currentQuery->where(function ($query) use ($keywords) {
  110. $query->where('name' , 'like', $keywords)
  111. ->orwhere('module', 'like', $keywords)
  112. ->orwhere('contrl', 'like', $keywords);
  113. });
  114. }
  115. if(isset($search['min_level']) && !empty($search['min_level'])) {
  116. $currentQuery = $currentQuery->where('level','<=',$search['min_level']);
  117. }
  118. if(isset($search['display']) && !empty($search['display'])) {
  119. $currentQuery = $currentQuery->where('display',$search['display']);
  120. }
  121. if($orderby) {
  122. foreach ($orderby as $key=>$sort) {
  123. $currentQuery = $currentQuery->orderBy($key,$sort);
  124. }
  125. }
  126. if($pagesize){
  127. $currentQuery = $currentQuery->paginate($pagesize);
  128. }else{
  129. $currentQuery = $currentQuery->get();
  130. }
  131. return $currentQuery;
  132. }
  133. }