areaRule($data,false); if(!$status) return [$status,$msg]; $model = Area::where('id',$data['id'])->first(); $model->title = $data['title']; $model->code = $data['code']; $model->type = $data['type']; $model->save(); return [true,'保存成功!']; } public function add($data){ list($status,$msg) = $this->areaRule($data); if(!$status) return [$status,$msg]; $model = new Area(); $model->title = $data['title']; $model->code = $data['code']; $model->type = $data['type']; $model->parent_id = $data['parent_id'] ?? 0; $model->save(); return [true,'保存成功!']; } public function del($data){ if($this->isEmpty($data,'id')) return [false,'请选择数据!']; $bool = Area::where('del_time',0)->whereIn('parent_id',$data['id'])->exists(); if($bool) return [false,'区域下存在子区域']; $bool = Screen::where('del_time',0)->whereIn('area_id',$data['id'])->exists(); if($bool) return [false,'区域已经绑定仓']; Area::whereIn('id',$data['id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function AreaList($data){ $model = Area::where('del_time',0) ->select('title','id','code','type','parent_id') ->orderby('id', 'desc'); if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%'); if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%'); if(! empty($data['type'])) $model->where('type', $data['type']); $list = $model->get()->toArray(); if(! empty($list)) { $list = $this->makeTree(0,$list); $list = $this->set_sort_circle($list); } return [true,$list]; } public function areaRule($data, $is_check = true){ if(empty($data['title'])) return [false,'区域名称不能为空!']; if(empty($data['code'])) return [false,'区域编码不能为空!']; if(empty($data['type'])) return [false,'区域类型不能为空']; if($is_check){ if(! empty($data['parent_id'])){ $bool = Screen::where('del_time',0) ->where('area_id',$data['parent_id']) ->exists(); if($bool) return [false,'该区域已绑定仓,操作失败!']; } $bool = Area::whereRaw("(binary code = '{$data['code']}' OR title = '{$data['title']}')") ->where('type',$data['type']) ->where('del_time',0) ->exists(); }else{ if(empty($data['id'])) return [false,'id不能为空!']; $bool = Area::whereRaw("(binary code = '{$data['code']}' OR title = '{$data['title']}')") ->where('type',$data['type']) ->where('id','<>',$data['id']) ->where('del_time',0) ->exists(); } if($bool) return [false,'编码或区域名称不能重复']; return [true, '']; } }