AreaService.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace App\Service;
  3. use App\Model\Area;
  4. use App\Model\Screen;
  5. /**
  6. * 区域相关
  7. * @package App\Models
  8. */
  9. class AreaService extends Service
  10. {
  11. public function edit($data){
  12. list($status,$msg) = $this->areaRule($data,false);
  13. if(!$status) return [$status,$msg];
  14. $model = Area::where('id',$data['id'])->first();
  15. $model->title = $data['title'];
  16. $model->code = $data['code'];
  17. $model->type = $data['type'];
  18. $model->save();
  19. return [true,'保存成功!'];
  20. }
  21. public function add($data){
  22. list($status,$msg) = $this->areaRule($data);
  23. if(!$status) return [$status,$msg];
  24. $model = new Area();
  25. $model->title = $data['title'];
  26. $model->code = $data['code'];
  27. $model->type = $data['type'];
  28. $model->parent_id = $data['parent_id'] ?? 0;
  29. $model->save();
  30. return [true,'保存成功!'];
  31. }
  32. public function del($data){
  33. if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
  34. $bool = Area::where('del_time',0)->whereIn('parent_id',$data['id'])->exists();
  35. if($bool) return [false,'区域下存在子区域'];
  36. $bool = Screen::where('del_time',0)->whereIn('area_id',$data['id'])->exists();
  37. if($bool) return [false,'区域已经绑定仓'];
  38. Area::whereIn('id',$data['id'])->update([
  39. 'del_time'=>time()
  40. ]);
  41. return [true,'删除成功'];
  42. }
  43. public function AreaList($data){
  44. $model = Area::where('del_time',0)
  45. ->select('title','id','code','type','parent_id')
  46. ->orderby('id', 'desc');
  47. if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
  48. if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
  49. if(! empty($data['type'])) $model->where('type', $data['type']);
  50. $list = $model->get()->toArray();
  51. if(! empty($list)) {
  52. $list = $this->makeTree(0,$list);
  53. $list = $this->set_sort_circle($list);
  54. }
  55. return [true,$list];
  56. }
  57. public function areaRule($data, $is_check = true){
  58. if(empty($data['title'])) return [false,'区域名称不能为空!'];
  59. if(empty($data['code'])) return [false,'区域编码不能为空!'];
  60. if(empty($data['type'])) return [false,'区域类型不能为空'];
  61. if($is_check){
  62. if(! empty($data['parent_id'])){
  63. $bool = Screen::where('del_time',0)
  64. ->where('area_id',$data['parent_id'])
  65. ->exists();
  66. if($bool) return [false,'该区域已绑定仓,操作失败!'];
  67. }
  68. $bool = Area::whereRaw("(binary code = '{$data['code']}' OR title = '{$data['title']}')")
  69. ->where('type',$data['type'])
  70. ->where('del_time',0)
  71. ->exists();
  72. }else{
  73. if(empty($data['id'])) return [false,'id不能为空!'];
  74. $bool = Area::whereRaw("(binary code = '{$data['code']}' OR title = '{$data['title']}')")
  75. ->where('type',$data['type'])
  76. ->where('id','<>',$data['id'])
  77. ->where('del_time',0)
  78. ->exists();
  79. }
  80. if($bool) return [false,'编码或区域名称不能重复'];
  81. return [true, ''];
  82. }
  83. }