menuRule($data); if(!$status) return [$status,$msg]; if($this->isEmpty($data,'id')) return [false,'ID必须!']; $id = $data['id']; $first = SysMenu::where('title',$data['title'])->where('id','<>',$id)->where('del_time',0)->first(); if(!empty($first))return [false,'名称已存在!']; $model = SysMenu::where('id',$id)->first(); $model->title = $data['title']; $model->icon = $data['icon'] ?? ''; $model->uri = $data['uri']; $model->parent_id = $data['parent_id']; $model->sort = $data['sort'] ?? 0; $model->save(); return [true,'保存成功!']; } public function add($data,$user){ list($status,$msg) = $this->menuRule($data); if(!$status) return [$status,$msg]; $first = SysMenu::where('title',$data['title'])->where('del_time',0)->first(); if(!empty($first))return [false,'名称已存在!']; $model = new SysMenu(); $sort = $model->where('parent_id',$data['parent_id'])->max('sort'); $model->title = $data['title']; $model->icon = $data['icon'] ?? ''; $model->uri = $data['uri'] ?? ''; $model->parent_id = $data['parent_id']; $model->sort = $sort ? $sort + 1 : 1; $model->crt_id = $user['id']; $model->save(); return [true,'保存成功!']; } public function del($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; SysMenu::where('id',$data['id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function menuList($data){ if(isset($data['type'])) $type = $data['type']; else $type = '1'; if($type === '1'){ $return = SysMenu::where('del_time',0)->select('title','icon','uri','parent_id','sort','crt_time','id')->orderBy('sort','desc')->get()->toArray(); }else{ $list = SysMenu::where('del_time',0)->where('state',1)->select('title','icon','uri','parent_id','sort','crt_time','id')->orderBy('sort','desc')->get()->toArray(); $return = $this->makeTree(0,$list); $return = $this->set_sort_circle($return); } return [200,$return]; } public function menuRule($data){ if($this->isEmpty($data,'title')) return [false,'名称不存在!']; if($this->isEmpty($data,'parent_id')) return [false,'父级不存在!']; return [true,'']; } public function menuMove($data){ if($this->isEmpty($data,'id')) return [false,'ID不能为空!']; if($this->isEmpty($data,'move')) return [false,'移动不能能为空!']; //移动项 $model = new SysMenu(); $res = $model->where('id', $data['id'])->first(); if($data['move'] == 1 || $data['move'] == -1){ //替项目 $moveModel = $model->where('del_time',0)->where('parent_id',$res->parent_id); //下移-1 上移1 $data['move'] == 1 ? $moveModel->orderby('sort','desc')->where('sort','<', $res['sort']) : $moveModel->orderby('sort','asc')->where('sort','>', $res['sort']); $moveRes = $moveModel->first(); if(! $moveRes) return [false, '移动失败']; $weightOne = $res->sort; $weightTwo = $moveRes->sort; $res->sort = $weightTwo; $res->save(); $moveRes->sort = $weightOne; $moveRes->save(); }elseif($data['move'] == 'top' || $data['move'] == 'bottom'){ if($data['move'] == 'top'){ $sort = $model->where('del_time',0)->where('parent_id',$res->parent_id)->max('sort'); if($sort == $res->sort) return [false,'已经置顶,移动失败!']; $res->sort = $sort + 1; }elseif($data['move'] == 'bottom'){ $sort = $model->where('del_time',0)->where('parent_id',$res->parent_id)->min('sort'); if($sort == $res->sort) return [false,'已经置底部,移动失败!']; $res->sort = $sort - 1; } $res->save(); }else{ return [false, '移动失败']; } return [true,'移动成功']; } }