123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- <?php
- /**
- *------------------------------------------------------
- * Menus.php
- *------------------------------------------------------
- *
- * @author qqiu@qq.com
- * @date 2016/12/19 11:31
- * @version V1.0
- *
- */
- namespace App\Services\Admin;
- use App\Services\Base\BaseProcess;
- use App\Models\AdminMenusModel;
- use App\Services\Base\Tree;
- class Menus extends BaseProcess {
- /**
- * 模型
- */
- private $_model;
- /**
- * 初始化
- */
- public function __construct()
- {
- if( ! $this->_model) $this->_model = new AdminMenusModel();
- }
- public function model() {
- $this->setSucessCode();
- return $this->_model;
- }
- public function find($id) {
- return $this->_model->find($id);
- }
- /**
- * 添加
- * @param unknown $data
- */
- public function create($data)
- {
- return $this->_model->create($data);
- }
- /**
- * 更新
- * @param unknown $id
- * @param unknown $data
- */
- public function update($id,$data)
- {
- $obj = $this->_model->find($id);
- if(!$obj) {
- return false;
- }
- $ok = $obj->update($data);
- return $ok;
- }
- /**
- * 删除
- * @param unknown $id
- */
- public function destroy($id)
- {
- return $this->_model->destroy($id);
- }
- /**
- * 获取当前菜单层级
- * @param $pid
- * @return level
- */
- public function getLevel($id)
- {
- $tree = new Tree();
- $MenusArr = $this->_model->orderBy('sort', 'DESC')->get()->toArray();
- $tree->init($MenusArr);
- $allParents = $tree->getPos($id);
- return count($allParents);
- }
- /**
- * 获取菜单树状结构
- */
- public function getMenusTree($search = array()){
- $currentQuery = $this->_model;
- if(isset($search['keyword']) && !empty($search['keyword'])) {
- $keywords = '%' . $search['keyword'] . '%';
- $currentQuery = $currentQuery->where(function ($query) use ($keywords) {
- $query->where('name' , 'like', $keywords)
- // ->orwhere('module', 'like', $keywords)
- ->orwhere('path', 'like', $keywords)
- ->orwhere('mark', 'like', $keywords);
- });
- }
- $MenusArr = $currentQuery->orderBy('sort', 'DESC')->get()->toArray();
- $tree = new Tree();
- $tree->icon = array(' │ ', ' ├─ ', ' └─ ');
- $tree->nbsp = ' ';
- $tree->init($MenusArr);
- return $tree->getTree();
- }
- /**
- * 搜索
- * @param $search
- * @param $pagesize
- */
- public function search($search,$orderby=array('sort'=>'desc'),$pagesize = PAGE_NUMS)
- {
- $currentQuery = $this->_model;
- if(isset($search['keyword']) && !empty($search['keyword'])) {
- $keywords = '%' . $search['keyword'] . '%';
- $currentQuery = $currentQuery->where(function ($query) use ($keywords) {
- $query->where('name' , 'like', $keywords)
- ->orwhere('module', 'like', $keywords)
- ->orwhere('contrl', 'like', $keywords);
- });
- }
- if(isset($search['min_level']) && !empty($search['min_level'])) {
- $currentQuery = $currentQuery->where('level','<=',$search['min_level']);
- }
- if(isset($search['display']) && !empty($search['display'])) {
- $currentQuery = $currentQuery->where('display',$search['display']);
- }
- if($orderby) {
- foreach ($orderby as $key=>$sort) {
- $currentQuery = $currentQuery->orderBy($key,$sort);
- }
- }
- if($pagesize){
- $currentQuery = $currentQuery->paginate($pagesize);
- }else{
- $currentQuery = $currentQuery->get();
- }
- return $currentQuery;
- }
- }
|