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

初步完成自助建站-随机模板

15313670163 4 месяцев назад
Родитель
Сommit
28f9b0db7e
1 измененных файлов с 84 добавлено и 162 удалено
  1. 84 162
      app/JsonRpc/PublicRpcService.php

+ 84 - 162
app/JsonRpc/PublicRpcService.php

@@ -2725,7 +2725,7 @@ class PublicRpcService implements PublicRpcServiceInterface
         $sectors = Sector::where('sector.template_id',$data['template_id'])
         ->where('sector.page_type','like','%'.$page.'%')
         ->select('sector.sector_name', 'sector.sector_id','sector.pic_height','sector.sector_img',
-        'sector.sector_type','sector.sector_code','sector.id')  
+        'sector.sector_type','sector.sector_code','sector.id','sector.sector_width')  
         ->orderBy('id')
         ->get()->all();
         if(empty($sectors)){
@@ -2907,10 +2907,12 @@ class PublicRpcService implements PublicRpcServiceInterface
         }
         $sector_id = array_column($sector,'id');
         $data['page'] = $page;
-        $component = $this->randomComponent($sector_id,$data,$sector);
+        $component[] = $this->randomComponent($sector_id,$data,$sector);
 
         return ['sector_id'=>$sector_id,
-        'component'=>$component
+        // 'sector'=>$sector,
+        'component'=>$component,
+        // 'sector'=>$sector,
     ];
     }
     public function randomComponent($sector_id,$data,$sector){
@@ -2922,12 +2924,13 @@ class PublicRpcService implements PublicRpcServiceInterface
             ->where('component_img.template_id','=',$data['template_id'])
             ->select('component.*','component_img.img_name','component_img.img_id','component_img.img_url',
             'sector_component.sort_id','sector_component.sectorid')
+            ->orderBy('sector_component.sort_id')
+            ->orderBy('component.component_type')
             ->get();
         // 按sectorid和sort_id分组数据
         $groupedResults = [];
         $arr = 0;
         $component_list = [];
-        $sorts =  [];
         // return $rawResults;
         // $groupedResults重构数组,将相同位置的组件合并,相同组件的样式合并(已经包括所有选择的组件及组件样式)
         foreach ($rawResults as $key => $item) {
@@ -2938,7 +2941,6 @@ class PublicRpcService implements PublicRpcServiceInterface
             $component_column = $item->component_column;
             $component_type = $item->type_id;
             $component_ad = $item->ad;
-            
             if (!isset($groupedResults[$sectorId])) {
                 $groupedResults[$sectorId] = [];
             }
@@ -2955,7 +2957,7 @@ class PublicRpcService implements PublicRpcServiceInterface
                 $component_list[$key] = $component_code;
                 // $component_list[$key]['listType'] = $component_listtype;
             // }
-             $sort_id = intval($sortId-1);
+            $sort_id = intval($sortId-1);
             if(!isset($groupedResults[$sectorId][$sort_id])) {
                 // $groupedResults[$sectorId][$sortId] = [];
                 $com_key = 0;
@@ -2970,14 +2972,19 @@ class PublicRpcService implements PublicRpcServiceInterface
                             ]
                 ];                
                 // 检查 $sectorId 和 $sort_id 是否为合法的数组键类型(字符串或整数)
+               
             }else{
-                if(isset($com_key)){
+                
+                if((isset($component_ids) && in_array($componentId,$component_ids))){
+                    if(isset($img_arr)){
+                        $img_arr++;
+                    }else{
+                        $img_arr = 0;
+                        if(isset($com_key)){
                     $com_key++;
                 }
-                if((isset($component_ids) && in_array($componentId,$component_ids)) && isset($img_arr)){
-                    if(in_array($sortId,$sorts)){
-                        $img_arr++;
                     }
+                    // $com_id_key = array_search($componentId,$component_ids);
                     $groupedResults[$sectorId][$sort_id][$com_key]['images'][$img_arr] = [
                         'img_name' => $item->img_name,
                         'img_id' => $item->img_id,
@@ -2985,34 +2992,32 @@ class PublicRpcService implements PublicRpcServiceInterface
                     ];
                 }else{
                     $img_arr = 0;
+                    $com_key = $com_key ?? 0;
                     $groupedResults[$sectorId][$sort_id][$com_key] = [
                         'component_type' => $item->component_type,
                         'type_id' => $component_type,
                         'sort' => $sortId,
-
                         'images' => 
-                        [$img_arr =>
-                            [
-                                'img_name' => $item->img_name,
-                                'img_id' => $item->img_id,
-                                'img_url' => $item->img_url,
-                            ]
+                        [
+                            $img_arr =>
+                                [
+                                    'img_name' => $item->img_name,
+                                    'img_id' => $item->img_id,
+                                    'img_url' => $item->img_url,
+                                ]
                         ]
-                        
                     ];
                 }
-
             }
             // 组件分类:1.头条资讯;2.轮播图资讯;3.推荐图;4.最新资讯;5.推荐资讯;6.热点资讯;7.栏目资讯;8.列表类;9.详情类;
             // 10.二级导航类;11.广告类;12.静态类;13.单页导航类;14.资讯广告混合类;15.滚动图文类;16.搜索框类;17.单页列表类;18.单页详情类;
-             if (is_scalar($sectorId) && is_scalar($sort_id)) {
+            if (is_scalar($sectorId) && is_scalar($sort_id)) {
                 if(!in_array($component_type,[10,12,16])){
                     if($component_type == 15){
                         $groupedResults[(int)$sectorId][(int)$sort_id][$com_key]['ad'] = $component_ad;
                     }else{
                         $groupedResults[(int)$sectorId][(int)$sort_id][$com_key]['componentData'] = $component_code['componentData'];
                     }
-
                 }else{
                     $groupedResults[(int)$sectorId][(int)$sort_id][$com_key]['componentData'] = [];
                 }
@@ -3021,14 +3026,14 @@ class PublicRpcService implements PublicRpcServiceInterface
                 trigger_error('Illegal offset type for $sectorId or $sort_id', E_USER_WARNING);
             }
             // 判断此组件是否存在数组中的依据(若是有重复的组件,一定是组件样式重复)
-            $component_ids[$key] = $componentId;
-            $sorts[$key] = $item->sort_id;
+            $component_ids[$sort_id] = $componentId;
         }
 
-        return $groupedResults;
+        // return $groupedResults;
 
         $result = [];
         // return  $sectors;
+        $y_num = 0;
         foreach ($sector as $key => $value) {
             // array_push($value['sort_id'],$key);
             
@@ -3038,6 +3043,28 @@ class PublicRpcService implements PublicRpcServiceInterface
                 'sectorName' => $value['sector_id'],
                 'sort' => $key+1,
             ]; 
+            $date = date('mdHisu' ); // 获取时分秒微秒,转换为纯数字格式
+            // $date = 11010630021;
+            if(substr($date,0,1) == 0){
+                $date = substr($date, 0, 10); // 截取前9位
+            }else{
+                $date = substr($date, 0, 9); // 截取前9位
+            }
+            $random_num = intval($date) . rand(1000, 9999); // 拼接4位随机数,组成13位随机数
+            $y_num = $y_num + $value['pic_height'];
+            $sector_width = $value['sector_width']/100;
+            $canvas_data[$key] = [
+                'i' => $random_num,
+                'x' => 0,
+                'y' => $y_num,
+                'w' => $sector_width,
+                'h' => $value['pic_height'],
+                'type' => $value['sector_id'],
+                'content' => [
+                    'sectorName' => $value['sector_id'],
+                ]
+
+            ];
             // $sector_key[$key] = array_keys($value );
             $sector_component = [];
             if(isset($groupedResults[$sectorid]) && !empty($groupedResults[$sectorid]) && is_array($groupedResults[$sectorid])){
@@ -3055,152 +3082,47 @@ class PublicRpcService implements PublicRpcServiceInterface
                     $Component['sort'] = $components[$selectedComponentId]['sort'] ?? 1;
                     // 通栏某一位置的随机组件样式图
                     // 检查 $Component['images'] 是否存在且为数组
-                    // if (isset($components[$selectedComponentId]['images']) && is_array($components[$selectedComponentId]['images'])) {
-                    //     $images = count($components[$selectedComponentId]['images']);
-                    //     $selectedImage = 0;
-                    //     if ($images > 1) {
-                    //         $selectedImage = rand(0, $images - 1);
-                    //     }
-                    //     if (isset($components[$selectedComponentId]['images'][$selectedImage])) {
-                    //         $Component['component_style'] = is_object($components[$selectedComponentId]['images'][$selectedImage]) ? $components[$selectedComponentId]['images'][$selectedImage]->img_id : $components[$selectedComponentId]['images'][$selectedImage]['img_id'];
-                    //     }
-                    // }
-                    // $Component['componentData'] = $components[$selectedComponentId]['componentData'];
-                    // if($data['page'] == 1 && in_array($components[$selectedComponentId]['type_id'],[7,14,15])){
-                    //     $Component['componentData']['name'] = '请选择栏目';
-                    // }
-                    // if($data['page'] == 2 && in_array($components[$selectedComponentId]['type_id'],[7,14,15])){
-                    //     $Component['componentData']['name'] = '自动生成';
-                    // }
-                    // if($components[$selectedComponentId]['type_id'] == 11){
-                    //    $template_data[$key]['ad'] = $components[$selectedComponentId]['componentData']['ad'];
-                    //    $Component['componentData'] = [];
-                    // }
-                    // if($components[$selectedComponentId]['type_id'] == 15){
-                    //    $template_data[$key]['ad'] = $components[$selectedComponentId]['ad'];
-                    // //    $components[$selectedComponentId]['componentData'] = [];
-                    // }
+                    if (isset($components[$selectedComponentId]['images']) && is_array($components[$selectedComponentId]['images'])) {
+                        $images = count($components[$selectedComponentId]['images']);
+                        $selectedImage = 0;
+                        if ($images > 1) {
+                            $selectedImage = rand(0, $images - 1);
+                        }
+                        if (isset($components[$selectedComponentId]['images'][$selectedImage])) {
+                            $Component['component_style'] = is_object($components[$selectedComponentId]['images'][$selectedImage]) ? $components[$selectedComponentId]['images'][$selectedImage]->img_id : $components[$selectedComponentId]['images'][$selectedImage]['img_id'];
+                        }
+                    }
+                    // var_dump($images);
+                    $Component['componentData'] = $components[$selectedComponentId]['componentData'];
+                    if($data['page'] == 1 && in_array($components[$selectedComponentId]['type_id'],[7,14,15])){
+                        $Component['componentData']['name'] = '请选择栏目';
+                    }
+                    if($data['page'] == 2 && in_array($components[$selectedComponentId]['type_id'],[7,14,15])){
+                        $Component['componentData']['name'] = '自动生成';
+                    }
+                    if($components[$selectedComponentId]['type_id'] == 11){
+                       $template_data[$key]['ad'] = $components[$selectedComponentId]['componentData']['ad'];
+                       $Component['componentData'] = [];
+                    }
+                    if($components[$selectedComponentId]['type_id'] == 15){
+                       $template_data[$key]['ad'] = $components[$selectedComponentId]['ad'];
+                    //    $components[$selectedComponentId]['componentData'] = [];
+                    }
                     $sector_component[$sortId] = $Component;
                     //  $sector_component[$sortId] = $selectedComponentId;
                 }
                 // var_dump("image",$image);
             }
             $template_data[$key]['componentList'] = $sector_component;
+            $canvas_data[$key]['content']['componentList'] = $sector_component;
+            $canvas_data[$key]['dataSort'] = $key;
+            $canvas_data[$key]['moved'] = false;
             // $page['template'][$key][$sector_key]['componentData'] = $result[$sectorId];
         }
         
-        return $template_data;
-    }
-    public function getPageCode($sector,$page){
-        if(empty($sector)){
-            return Result::error('通栏不存在!');
-        }
-        // $sectors_key = array_keys(array_diff($com_num, [1]));
-        // return Result::success($sector);
-        $num = 0;
-        $array_key = 0;
-        foreach($sector as $key => $value){
-            $sector_id = $value['sector_id'];
-            $sectors[$key] = $value['sector_id'];
-            // if(isset($comlist_key) && !empty($comlist_key)){
-            //     $sector_arr_key[$key] = array_keys($comlist_key);
-            // }
-            if(in_array($sector_id,$sectors_key) && in_array($sector_id,$sectors)){
-                $array_key = array_search($sector_id,$sectors); 
-                if(isset($sectors) && !in_array($sector_id,$sectors)){
-                    $array_key++;
-                }
-                $num++;
-                $array_key++;
-            }else{
-                $array_key++;
-            }
-            // var_dump($array_key);
-            // var_dump(in_array($sector_id,$sectors_key));
-            $comlist_key[$array_key][$sector_id]['sectorName'] = $value['sector_name'];
-            $comlist_key[$array_key][$sector_id]['sectorHeight'] = $value['pic_height'];
-            $comlist_key[$array_key][$sector_id]['sectorImg'] = $value['sector_img'];
-            $comlist_key[$array_key][$sector_id]['sort'] = $array_key;
-            $componentList['component_style'] =  1;
-            $componentList['sort'] =  $value['sort_id'];
-            // 1:资讯;2:广告;3:静态;
-            $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:广告资讯混合类;15:滚动图文;16:搜索框类;17:单页列表类;18:单页详情类;
-            if(in_array($value['type_id'],[1,2,3,4,5,6,7,8,9,15,17,18])){
-                $type = 1;
-                $componentList['component_type'] = $type;
-                if(in_array($value['type_id'],[7,15]) && $page == 1){
-                    $component_data->componentData->name = '请选择导航..';
-                }else if(in_array($value['type_id'],[7,15]) && $page == 2){
-                    $component_data->componentData->name = '自动生成';
-                }else if($page == 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;
-                $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[$array_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'] ?? [];
-                
-            }else if($value['type_id'] == 14){
-                $type = 1;
-                $componentList['component_type'] = $type;
-                if($page == 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[$array_key][$sector_id]['ad'] =is_object($ad) ? (array)$ad ?? [] : $ad ?? [];
-
-            }else{
-
-            }
-            if( in_array($sector_id,$sectors_key)){
-                $comlist_key[$array_key][$sector_id]['componentList'][$num-1] = $componentList;
-                $comlist_key[$array_key][$sector_id]['componentList'] = array_values($comlist_key[$array_key][$sector_id]['componentList']);
-
-            }else{
-                $comlist_key[$array_key][$sector_id]['componentList'] = $componentList;
-            }
-            $keys[$key] = $key;
-        }
-        //  return Result::success($sector_arr_key);
-        // $page[$keys] = array_column($page,$sectors_key[0]);
-        $comlist_key = array_values($comlist_key);
-        // $sector_page = json_encode($comlist_key);
-        if(empty($comlist_key)){
-            return Result::error('通栏不存在!');
-        }
-        return ($comlist_key);
+        return [
+            'template_data' => $template_data,
+            'canvas_data' => $canvas_data,
+        ];
     }
 }