|
@@ -50,10 +50,28 @@ class BasicTypeService extends Service
|
|
|
}
|
|
|
|
|
|
public function basicTypeRule($data,$is_check = true){
|
|
|
- if($this->isEmpty($data,'type')) return [false,'基础类型不能为空'];
|
|
|
- if(! isset(BasicType::$type[$data['type']])) return [false,'基础类型不存在'];
|
|
|
if($this->isEmpty($data,'data')) return [false,'数据不能为空!'];
|
|
|
|
|
|
+ $type = array_column($data['data'],'type');
|
|
|
+ $type = array_map(function($val) {
|
|
|
+ return $val !== null ? $val : 0;
|
|
|
+ }, $type);
|
|
|
+ foreach ($type as $value){
|
|
|
+ if(empty($value)) return [false,'类型不能为空!'];
|
|
|
+ if(! isset(BasicType::$type[$value])) return [false,'类型不存在!'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $map = [];
|
|
|
+ foreach ($data['data'] as $value){
|
|
|
+ if(! isset($map[$value['title']])){
|
|
|
+ $map[$value['title']][] = $value['type'];
|
|
|
+ }else{
|
|
|
+ if(! in_array($value['type'],$map[$value['title']])){
|
|
|
+ $map[$value['title']][] = $value['type'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$title = array_column($data['data'],'title');
|
|
|
$title = array_map(function($val) {
|
|
|
return $val !== null ? $val : 0;
|
|
@@ -61,22 +79,22 @@ class BasicTypeService extends Service
|
|
|
$title_count = array_count_values($title);
|
|
|
foreach ($title as $value){
|
|
|
if(empty($value)) return [false,'名称不能为空!'];
|
|
|
- if($title_count[$value] > 1) return [false,'名称不能重复'];
|
|
|
+ if($title_count[$value] > 1 && count($map[$value]) != $title_count[$value]) return [false,'同一归属类别下,名称不能重复'];
|
|
|
}
|
|
|
|
|
|
foreach ($data['data'] as $key => $value){
|
|
|
- $data['data'][$key]['type'] = $data['type'];
|
|
|
+ $data['data'][$key]['type'] = $value['type'];
|
|
|
$data['data'][$key]['upd_time'] = time();
|
|
|
if($is_check){
|
|
|
$bool = BasicType::where('title',$value['title'])
|
|
|
- ->where('type',$data['type'])
|
|
|
+ ->where('type',$value['type'])
|
|
|
->where('del_time',0)
|
|
|
->exists();
|
|
|
$data['data'][$key]['crt_time'] = time();
|
|
|
}else{
|
|
|
if($this->isEmpty($data,'id')) return [false,'id不能为空!'];
|
|
|
$bool = BasicType::where('title',$value['title'])
|
|
|
- ->where('type',$data['type'])
|
|
|
+ ->where('type',$value['type'])
|
|
|
->where('id','<>',$data['id'])
|
|
|
->where('del_time',0)
|
|
|
->exists();
|
|
@@ -90,6 +108,10 @@ class BasicTypeService extends Service
|
|
|
public function fillData($data){
|
|
|
if(empty($data['data'])) return $data;
|
|
|
|
|
|
+ foreach ($data['data'] as $key => $value){
|
|
|
+ $data['data'][$key]['type_name'] = BasicType::$type[$value['type']] ?? '';
|
|
|
+ }
|
|
|
+
|
|
|
return $data;
|
|
|
}
|
|
|
}
|