Просмотр исходного кода

自助建站-流程管理:获取所有通栏

15313670163 5 месяцев назад
Родитель
Сommit
be6469a135
1 измененных файлов с 97 добавлено и 20 удалено
  1. 97 20
      app/JsonRpc/PublicRpcService.php

+ 97 - 20
app/JsonRpc/PublicRpcService.php

@@ -2655,43 +2655,120 @@ class PublicRpcService implements PublicRpcServiceInterface
             array_push($where,['sector.page_type', 'like', '%'.$data['page_type'].'%']);
         }
         $sector = Sector::where($where)
-        ->leftJoin('sector_component','sector.sector_id','=','sector_component.sector_id')
-        ->leftJoin('component','sector_component.component_id','component.component_type')
-        ->select('sector.sector_name','sector_component.sector_id','component.*')
-        // ->select('sector.*')
+        ->leftJoin('sector_component', 'sector.sector_id', '=', 'sector_component.sector_id')
+        ->leftJoin('component', 'sector_component.component_id', '=', 'component.component_type')
+        ->when(isset($data['template_id']), function ($query) use ($data) {
+            // 当 type_id 等于 11 时,关联查询 component_img 表并添加 img_url 字段
+            return $query->leftJoin('component_img', function ($join) use ($data) {
+                $join->on('component.component_type', '=', 'component_img.component_id')
+                    ->where('component_img.template_id', $data['template_id'])
+                    ->where('component.type_id', 11);
+            });
+        })
+        ->select('sector.sector_name', 'sector_component.sector_id', 'component.*', 'component_img.img_url')
+        ->orderBy('component.sort_id')
         ->get()->all();
+        $com_num = array_count_values(array_column($sector,'sector_id'));
+        // 使用 array_keys 和 array_diff 函数,不使用循环将值不为 1 的字段键提取到 $sectors_key 中
+        $sectors_key = array_keys(array_diff($com_num, [1]));
+        // return Result::success($sector);
+        $num = 0;
         foreach($sector as $key => $value){
-            $setor_id = $value['sector_id'];
-            $page[$key][$setor_id]['sectorName'] = $value['sector_name'];
+            $sector_id = $value['sector_id'];
+            if(in_array($sector_id,$sectors_key)){
+                // $keys = $key;
+                $sector_key[$num] = $key; 
+                $key =  $sector_key[0];
+                // $comlist_key[$key][$sector_id]['componentList'][$num] = $sector_key ;
+                $num++;
+                // $key = $sector_key[0];
+            }else{
+                $key = $key-$num;
+                //  $comlist_key[$key][$sector_id]['componentList'] = '';
+            }
+            $comlist_key[$key][$sector_id]['sectorName'] = $value['sector_name'];
+            $componentList['component_style'] =  1;
+            $componentList['sort'] =  $value['sort_id'];
+            
             // 1:资讯;2:广告;3:静态;
             // $component_code = json_decode($value['component_code']) ?? [];
-
+            // $component[$key] = $value['component_data'];
+            $component_data = empty($value['component_data']) ? null : (json_decode($value['component_data']) ?? []);
+            // 检查 $value['component_column'] 是否为非空字符串,避免传递 null 给 json_decode
+            $listType = empty($value['component_column']) ? null : (json_decode($value['component_column']) ?? []);;
             // $page[$key][$setor_id]['componentList'] = 
-            // '组件分类:1:资讯-头条组件;2:资讯-轮播组件;3:资讯-推荐图类组件;4:资讯-最新类组件;5:资讯-推荐类;6:资讯-热点类组件;7:资讯-栏目类组件;
-            // 8:列表类组件;9:详情类组件;10:二级导航栏类组件;11:广告类;12:静态资源类;13:底部导航类;14:广告资讯混合类'
-            if(in_array($value['type_id'],[1,2,3,4,5,6,7,8,9,13,14])){
+            // 组件分类:1:资讯-头条组件;2:资讯-轮播组件;3:资讯-推荐图类组件;4:资讯-最新类组件;5:资讯-推荐类;6:资讯-热点类组件;7:资讯-栏目类组件;8:列表类组件;9:详情类组件;
+            // 10:二级导航栏类组件;11:广告类;12:静态资源类;13:单页导航类;14:广告资讯混合类;15:滚动图文;16:搜索框类;17:单页列表类;18:单页详情类;
+            if(in_array($value['type_id'],[1,2,3,4,5,6,7,8,9,15,17,18])){
                 $type = 1;
-            }else if(in_array($value['type_id'],[10,12])){
+                $componentList['component_type'] = $type;
+                if(in_array($value['type_id'],[7,15]) && $data['page_type'] == 1){
+                    $component_data->componentData->name = '请选择导航..';
+                }else if(in_array($value['type_id'],[7,15]) && $data['page_type'] == 2){
+                    $component_data->componentData->name = '自动生成';
+                }else if($data['page_type'] == 3){
+                    if($value['type_id'] == 4){
+                        $component_data->componentData->name = '最新资讯';
+                    }
+                    if($value['type_id'] == 6){
+                        $component_data->componentData->name = '热点精选';
+                    }
+                }else{
+                    unset($component_data->componentData->name);
+                }
+                $componentData = $component_data->componentData;
+                $componentList['componentData'] = is_object($componentData) ? (array)$componentData ?? [] : $componentData ?? [];
+
+                // $page_listType = is_object($listType) ? (array)$listType->listType ?? [] : $listType['listType'] ?? [];
+                $componentList['componentData']['listType'] = $listType->listType;
+            }else if(in_array($value['type_id'],[10,12,13,16])){
                 $type = 3;
+                $componentList['component_type'] = $type;
+                $componentList['componentData']=(object)[];
             }else if($value['type_id']== 11){
                 $type = 2;
-                $page[$key][$setor_id]['componentList']['componentData']=[];
+                $componentList['component_type'] = $type;
+                $componentList['componentData']=(object)[];
                 $ad = json_decode($value['ad']) ?? [];
+                if(is_object($ad)){
+                    $ad->thumb = $value['img_url'];
+                }else{
+                    $ad['thumb'] = $value['img_url'];
+                }
+                $comlist_key[$key][$sector_id]['ad'] =is_object($ad) ? (array)$ad ?? [] : $ad ?? [];
                 // 在 $page[$key][$setor_id] 中增加一个键值为 ad 的数组
                 // $page[$key][$setor_id]['ad'] = is_object($ad) ? (array)$ad->ad ?? [] : $ad['ad'] ?? [];
-                $page[$key][$setor_id]['ad'] = $ad ?? [];
+                
+            }else if($value['type_id'] == 14){
+                $type = 1;
+                $componentList['component_type'] = $type;
+                if($data['page_type'] == 1){
+                    $component_data->componentData->name = '请选择导航..';
+                }
+                $componentData = $component_data->componentData;
+                $componentList['componentData'] = is_object($componentData) ? (array)$componentData ?? [] : $componentData ?? [];
+                $componentList['componentData']['listType'] = $listType->listType;
+                $ad = json_decode($value['ad']) ?? [];
+                $comlist_key[$key][$sector_id]['ad'] =is_object($ad) ? (array)$ad ?? [] : $ad ?? [];
+
             }else{
-                $type = 0;
+
+            }
+            if(isset($sector_key) && in_array($sector_id,$sectors_key)){
+                $comlist_key[$key][$sector_id]['componentList'][$num-1] = $componentList;
+                $comlist_key[$key][$sector_id]['componentList'] = array_values($comlist_key[$key][$sector_id]['componentList']);
+
+            }else{
+                $comlist_key[$key][$sector_id]['componentList'] = $componentList;
             }
-            $page[$key][$setor_id]['componentList']['component_style'] =  1;
-            $page[$key][$setor_id]['componentList']['sort'] =  $value['sort_id'];
-            $page[$key][$setor_id]['componentList']['component_type'] = $type;
         }
-        // $sector_page = $this->getSectorPage($sector);
-        if(empty($sector)){
+        // $page[$keys] = array_column($page,$sectors_key[0]);
+        $sector_page = json_encode($comlist_key);
+        if(empty($sector_page)){
             return Result::error('通栏不存在!');
         }
-        return Result::success($page);
+        return Result::success($sector_page);
+        // return Result::success(gettype($listType));
     }
     /**
      * 自助建站-组件管理-获取组件预览图列表