where(['dataFlag'=>1,'parentId'=>$parentId])->order('areaId desc')->paginate(input('post.limit/d')); } /** * 获取指定对象 */ public function getById($id){ return $this->get(['dataFlag'=>1,'areaId'=>$id]); } /** * 获取地区 */ public function getFieldsById($id,$fileds){ return $this->where(['dataFlag'=>1,'areaId'=>$id])->field($fileds)->find(); } /** * 显示是否显示/隐藏 */ public function editiIsShow(){ //获取子集 $ids = array(); $ids[] = input('post.id/d',0); $ids = $this->getChild($ids,$ids); $isShow = input('post.isShow/d',0)?0:1; $result = $this->where("areaId in(".implode(',',$ids).")")->update(['isShow' => $isShow]); if(false !== $result){ return WSTReturn("操作成功", 1); }else{ return WSTReturn($this->getError(),-1); } } /** * 迭代获取下级 */ public function getChild($ids = array(),$pids = array()){ $result = $this->where("dataFlag=1 and parentId in(".implode(',',$pids).")")->select(); if(count($result)>0){ $cids = array(); foreach ($result as $key =>$v){ $cids[] = $v['areaId']; } $ids = array_merge($ids,$cids); return $this->getChild($ids,$cids); }else{ return $ids; } } /** * 根据子分类获取其父级分类 */ public function getParentIs($id,$data = array()){ $data[] = $id; $parentId = $this->where('areaId',$id)->value('parentId'); if($parentId==0){ krsort($data); return $data; }else{ return $this->getParentIs($parentId, $data); } } /** * 获取自己以及父级的地区名称 */ public function getParentNames($id,$data = array()){ $areas = $this->where('areaId',$id)->field('parentId,areaName')->find(); $data[] = $areas['areaName']; if((int)$areas['parentId']==0){ krsort($data); return $data; }else{ return $this->getParentNames((int)$areas['parentId'], $data); } } /** * 排序字母 */ public function letterObtain(){ $areaName = input('code'); if($areaName =='')return WSTReturn("", 1); $areaName = WSTGetFirstCharter($areaName); if($areaName){ return WSTReturn($areaName, 1); }else{ return WSTReturn("", 1); } } /** * 新增 */ public function add(){ $areaType = 0; $parentId = input('post.parentId/d',0); if($parentId>0){ $prs = $this->getFieldsById($parentId,['areaType']); $areaType = $prs['areaType']+1; } $data = input('post.'); WSTUnset($data,'areaId,dataFlag'); $data['areaType'] = $areaType; $data['createTime'] = date('Y-m-d H:i:s'); $result = $this->validate('Areas.add')->allowField(true)->save($data); if(false !== $result){ return WSTReturn("新增成功", 1); }else{ return WSTReturn($this->getError(),-1); } } /** * 编辑 */ public function edit(){ $areaId = input('post.areaId/d'); $result = $this->validate('Areas.edit')->allowField(['areaName','isShow','areaSort','areaKey'])->save(input('post.'),['areaId'=>$areaId]); $ids = array(); $ids[] = $areaId; $ids = $this->getChild($ids,$ids); $this->where("areaId in(".implode(',',$ids).")")->update(['isShow' => input('post.')['isShow']]); if(false !== $result){ return WSTReturn("修改成功", 1); }else{ return WSTReturn($this->getError(),-1); } } /** * 删除 */ public function del(){ $ids = array(); $ids[] = input('post.id/d'); $ids = $this->getChild($ids,$ids); $data = []; $data['dataFlag'] = -1; $result = $this->where("areaId in(".implode(',',$ids).")")->update($data); if(false !== $result){ return WSTReturn("删除成功", 1); }else{ return WSTReturn($this->getError(),-1); } } /** * 获取地区列表 */ public function listQuery($parentId){ return $this->where(['dataFlag'=>1,'parentId'=>$parentId,'isShow'=>1])->field('areaId,areaName,parentId')->order('areaSort desc')->select(); } }