123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- namespace App\Service;
- use App\Model\Area;
- use App\Model\Screen;
- /**
- * 区域相关
- * @package App\Models
- */
- class AreaService extends Service
- {
- public function edit($data){
- list($status,$msg) = $this->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, ''];
- }
- }
|