Przeglądaj źródła

修改接口:随机模板

15313670163 4 miesięcy temu
rodzic
commit
91141d96b9
1 zmienionych plików z 169 dodań i 60 usunięć
  1. 169 60
      app/JsonRpc/PublicRpcService.php

+ 169 - 60
app/JsonRpc/PublicRpcService.php

@@ -2942,8 +2942,6 @@ class PublicRpcService implements PublicRpcServiceInterface
     ];
     ];
     }
     }
     public function randomComponent($sector_id,$data,$sector){
     public function randomComponent($sector_id,$data,$sector){
-        // return $sector;
-        // 获取原始查询结果
         $rawResults = SectorComponent::whereIn('sector_component.sectorid', $sector_id)
         $rawResults = SectorComponent::whereIn('sector_component.sectorid', $sector_id)
             ->leftJoin('component','component.component_type','sector_component.component_id')
             ->leftJoin('component','component.component_type','sector_component.component_id')
             ->leftJoin('component_img','component_img.component_id','component.component_type')
             ->leftJoin('component_img','component_img.component_id','component.component_type')
@@ -2955,10 +2953,15 @@ class PublicRpcService implements PublicRpcServiceInterface
             ->get();
             ->get();
         // 按sectorid和sort_id分组数据
         // 按sectorid和sort_id分组数据
         $groupedResults = [];
         $groupedResults = [];
-        $arr = 0;
+        $sort_ids = [];
+        $sector_ids = [];
         $component_list = [];
         $component_list = [];
+        $component_ids = [];
+        $img_ids = [];
+        $sort_key = 0;
         // return $rawResults;
         // return $rawResults;
         // $groupedResults重构数组,将相同位置的组件合并,相同组件的样式合并(已经包括所有选择的组件及组件样式)
         // $groupedResults重构数组,将相同位置的组件合并,相同组件的样式合并(已经包括所有选择的组件及组件样式)
+        // $sort_component = array_column($rawResults,'sort_id');
         foreach ($rawResults as $key => $item) {
         foreach ($rawResults as $key => $item) {
             $sectorId = $item->sectorid;
             $sectorId = $item->sectorid;
             $sortId = $item->sort_id;
             $sortId = $item->sort_id;
@@ -2967,6 +2970,7 @@ class PublicRpcService implements PublicRpcServiceInterface
             $component_column = $item->component_column;
             $component_column = $item->component_column;
             $component_type = $item->type_id;
             $component_type = $item->type_id;
             $component_ad = $item->ad;
             $component_ad = $item->ad;
+            $imgId = $item->img_id;
             if (!isset($groupedResults[$sectorId])) {
             if (!isset($groupedResults[$sectorId])) {
                 $groupedResults[$sectorId] = [];
                 $groupedResults[$sectorId] = [];
             }
             }
@@ -2979,64 +2983,116 @@ class PublicRpcService implements PublicRpcServiceInterface
                 $componentData['componentData'] = [];
                 $componentData['componentData'] = [];
             }
             }
             $componentData['componentData'] += $component_listtype;
             $componentData['componentData'] += $component_listtype;
-                $component_code = $componentData;
-                $component_list[$key] = $component_code;
+            $component_code = $componentData;
+            $component_list[$key] = $component_code;
                 // $component_list[$key]['listType'] = $component_listtype;
                 // $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] = [];
+            // if(!isset($groupedResults[$sectorId][$sort_id])) {
+            //     // $groupedResults[$sectorId][$sortId] = [];
+            //     $com_key = 0;
+            //         $groupedResults[$sectorId][$sort_id][$com_key] = [
+            //         'component_type' => $item->component_type,
+            //         'type_id' => $component_type,
+            //         'sort' => $sortId,
+            //         'width' => $item->component_width,
+            //         'height' => $item->component_height,
+            //         'images'  =>   [
+            //                     'img_name' => $item->img_name,
+            //                     'img_id' => $item->img_id,
+            //                     'img_url' => $item->img_url,
+            //                     'component_type' => $component_type,
+            //                 ]
+            //     ];                
+            //     // 检查 $sectorId 和 $sort_id 是否为合法的数组键类型(字符串或整数)
+               
+            // }else{
+                
+            //     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++;
+            //     }
+            //         }
+            //         // $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,
+            //             'img_url' => $item->img_url,
+            //             'component_type' => $component_type,
+            //         ];
+            //     }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,
+            //             'width' => $item->component_width,
+            //             'height' => $item->component_height,
+            //             'images' => 
+            //             [
+            //                 $img_arr =>
+            //                     [
+            //                         'img_name' => $item->img_name,
+            //                         'img_id' => $item->img_id,
+            //                         'img_url' => $item->img_url,
+            //                         'component_type' => $component_type,
+            //                     ]
+            //             ]
+            //         ];
+            //     }
+            // }
+            // $component = $groupedResults[$sectorId][$sort_id];
+            // if(count($component) > 1){
+            //     $com_key = 0;
+            // }
+            // if(!in_array($sectorId,$sector_ids)){
+            //     $sort_key = 0;
+            //     $sector_ids[$sectorId][$sort_key] = $sectorId;
+            // }else{
+            //     $sort_key++;
+            //     $sector_ids[$sectorId][$sort_key] = $sectorId;
+            // }
+            if(!isset($com_key) || !in_array($sectorId,$sector_ids) || !isset($sort_ids[$sectorId]) || !in_array($sortId, $sort_ids[$sectorId])){
                 $com_key = 0;
                 $com_key = 0;
-                    $groupedResults[$sectorId][$sort_id][$com_key] = [
+                // if(!in_array($componentId,$component_ids)){
+                //     $img_key = 0;
+                // }
+                $img_key = 0;
+            }else if(in_array($sortId,$sort_ids[$sectorId]) && in_array($sectorId, $sector_ids) && !in_array($componentId,$component_ids)){
+                $com_key++;
+            }
+            if(in_array($componentId,$component_ids) && !in_array($imgId,$img_ids[$componentId])){
+                $img_key++;
+            }else{
+                $img_key=0;
+            }
+            if(!in_array($componentId,$component_ids)){
+                $groupedResults[$sectorId][$sort_id][$com_key] = [
                     'component_type' => $item->component_type,
                     'component_type' => $item->component_type,
                     'type_id' => $component_type,
                     'type_id' => $component_type,
                     'sort' => $sortId,
                     'sort' => $sortId,
-                    'images'  =>   [
-                                'img_name' => $item->img_name,
-                                'img_id' => $item->img_id,
-                                'img_url' => $item->img_url,
-                            ]
-                ];                
-                // 检查 $sectorId 和 $sort_id 是否为合法的数组键类型(字符串或整数)
-               
-            }else{
-                
-                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++;
-                }
-                    }
-                    // $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,
-                        'img_url' => $item->img_url,
-                    ];
-                }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,
-                                ]
-                        ]
-                    ];
-                }
+                    'width' => $item->component_width,
+                    'height' => $item->component_height,
+                ];
             }
             }
-            // 组件分类:1.头条资讯;2.轮播图资讯;3.推荐图;4.最新资讯;5.推荐资讯;6.热点资讯;7.栏目资讯;8.列表类;9.详情类;
-            // 10.二级导航类;11.广告类;12.静态类;13.单页导航类;14.资讯广告混合类;15.滚动图文类;16.搜索框类;17.单页列表类;18.单页详情类;
+            $groupedResults[$sectorId][$sort_id][$com_key]['images'][$img_key] = [
+                'img_name' => $item->img_name,
+                'img_id' => $imgId,
+                'img_url' => $item->img_url,
+                'component_type' => $componentId,
+            ];
+            // $component_type[$key] = $groupedResults[$sectorId][$sort_id]['component_type'];
+            // $sort_com = $groupedResults[$sectorId][$sort_id]['component_type'];
+            // if(count($sort_com) == 1){
+            //     $com_key = 0;
+            // }
+            // // 组件分类: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(!in_array($component_type,[10,12,16])){
                     if($component_type == 15){
                     if($component_type == 15){
@@ -3051,8 +3107,22 @@ class PublicRpcService implements PublicRpcServiceInterface
                 // 处理非法键类型的情况,可根据实际需求修改错误处理逻辑
                 // 处理非法键类型的情况,可根据实际需求修改错误处理逻辑
                 trigger_error('Illegal offset type for $sectorId or $sort_id', E_USER_WARNING);
                 trigger_error('Illegal offset type for $sectorId or $sort_id', E_USER_WARNING);
             }
             }
-            // 判断此组件是否存在数组中的依据(若是有重复的组件,一定是组件样式重复)
-            $component_ids[$sort_id] = $componentId;
+            // // 判断此组件是否存在数组中的依据(若是有重复的组件,一定是组件样式重复)
+            $component_ids[$key] = $componentId;
+            if (!isset($sort_ids[$sectorId])) {
+                $sort_ids[$sectorId] = [];
+            }
+            if (!in_array($sortId, $sort_ids[$sectorId])) {
+                $sort_ids[$sectorId][] = $sortId;
+            }
+            if (!isset($img_ids[$componentId])) {
+                $img_ids[$componentId] = [];
+            }
+            if (!in_array($imgId, $img_ids[$componentId])) {
+                $img_ids[$componentId][] = $imgId;
+            }
+            $sector_ids[$key] = $sectorId;
+            // $img_ids[$componentId] = $imgId;
         }
         }
 
 
         // return $groupedResults;
         // return $groupedResults;
@@ -3076,7 +3146,7 @@ class PublicRpcService implements PublicRpcServiceInterface
             }else{
             }else{
                 $date = substr($date, 0, 9); // 截取前9位
                 $date = substr($date, 0, 9); // 截取前9位
             }
             }
-            $random_num = intval($date) . rand(1000, 9999); // 拼接4位随机数,组成13位随机数
+            $random_num = intval(intval($date) . rand(1000, 9999)); // 拼接4位随机数,组成13位随机数
             $y_num = $y_num + $value['pic_height'];
             $y_num = $y_num + $value['pic_height'];
             $sector_width = $value['sector_width']/100;
             $sector_width = $value['sector_width']/100;
             $canvas_data[$key] = [
             $canvas_data[$key] = [
@@ -3119,6 +3189,8 @@ class PublicRpcService implements PublicRpcServiceInterface
                             $Component['component_style'] = is_object($components[$selectedComponentId]['images'][$selectedImage]) ? $components[$selectedComponentId]['images'][$selectedImage]->img_id : $components[$selectedComponentId]['images'][$selectedImage]['img_id'];
                             $Component['component_style'] = is_object($components[$selectedComponentId]['images'][$selectedImage]) ? $components[$selectedComponentId]['images'][$selectedImage]->img_id : $components[$selectedComponentId]['images'][$selectedImage]['img_id'];
                         }
                         }
                     }
                     }
+                    $image_info[$key] = is_object($components[$selectedComponentId]['images'][$selectedImage]) ? $components[$selectedComponentId]['images'][$selectedImage] : $components[$selectedComponentId]['images'][$selectedImage];
+
                     // var_dump($images);
                     // var_dump($images);
                     $Component['componentData'] = $components[$selectedComponentId]['componentData'];
                     $Component['componentData'] = $components[$selectedComponentId]['componentData'];
                     if($data['page'] == 1 &&(isset($components[$selectedComponentId]['type_id']) && in_array($components[$selectedComponentId]['type_id'],[7,14,15])) ){
                     if($data['page'] == 1 &&(isset($components[$selectedComponentId]['type_id']) && in_array($components[$selectedComponentId]['type_id'],[7,14,15])) ){
@@ -3128,26 +3200,63 @@ class PublicRpcService implements PublicRpcServiceInterface
                         $Component['componentData']['name'] = '自动生成';
                         $Component['componentData']['name'] = '自动生成';
                     }
                     }
                     if(isset($components[$selectedComponentId]['type_id']) && $components[$selectedComponentId]['type_id'] == 11){
                     if(isset($components[$selectedComponentId]['type_id']) && $components[$selectedComponentId]['type_id'] == 11){
-                       $template_data[$key]['ad'] = $components[$selectedComponentId]['componentData']['ad'];
+                        $ad = $components[$selectedComponentId]['componentData']['ad'];
+                        
+                        $template_data[$key]['ad'] = $ad;
+                        $values = [
+                            $components[$selectedComponentId]['width'],
+                            $components[$selectedComponentId]['height'],
+                            '',
+                            '',
+                            '',
+                            $data['website_id'],
+                            $image_info[$key]['img_url'],
+                            2,
+                            0
+                        ];
+                        $canvas_adinfo[$key] = array_combine(array_slice($ad, 0, count($values)), $values);
+                    $canvas_data[$key]['ad'] = $canvas_adinfo[$key];
+                       // 确保 $ad 和 $canvas_adinfo[$key] 元素数量一致,直接组合
+                    //    $canvas_data[$key]['ad'] = array_combine($ad, $canvas_adinfo[$key]);
                        $Component['componentData'] = [];
                        $Component['componentData'] = [];
                     }
                     }
                     if(isset($components[$selectedComponentId]['type_id']) && $components[$selectedComponentId]['type_id'] == 15){
                     if(isset($components[$selectedComponentId]['type_id']) && $components[$selectedComponentId]['type_id'] == 15){
-                       $template_data[$key]['ad'] = $components[$selectedComponentId]['ad'];
-                    //    $components[$selectedComponentId]['componentData'] = [];
+                        $ad = $components[$selectedComponentId]['ad'];
+                        $template_data[$key]['ad'] = $ad;
+
+
+                        $values = [
+                            $components[$selectedComponentId]['width'],
+                            $components[$selectedComponentId]['height'],
+                            '',
+                            '',
+                            '',
+                            $data['website_id'],
+                            $image_info[$key]['img_url'],
+                            2,
+                            0
+                        ];
+                        $canvas_adinfo[$key] = array_combine(array_slice($ad, 0, count($values)), $values);
+                    $canvas_data[$key]['ad'] = $canvas_adinfo[$key];
+                    //    $canvas_data[$key]['ad'] = array_combine($ad, $canvas_adinfo[$key]);
+
+                        $Component['componentData'] = [];
                     }
                     }
                     // var_dump('---------------------------',$components[$selectedComponentId]);
                     // var_dump('---------------------------',$components[$selectedComponentId]);
                     $sector_component[$sortId] = $Component;
                     $sector_component[$sortId] = $Component;
+                    // $canvas_component[$sortId] = $Component;
                     //  $sector_component[$sortId] = $selectedComponentId;
                     //  $sector_component[$sortId] = $selectedComponentId;
                 }
                 }
                 // var_dump("image",$image);
                 // var_dump("image",$image);
             }
             }
             $template_data[$key]['componentList'] = $sector_component;
             $template_data[$key]['componentList'] = $sector_component;
             $canvas_data[$key]['content']['componentList'] = $sector_component;
             $canvas_data[$key]['content']['componentList'] = $sector_component;
+            // $canvas_data[$key]['ad'] = $key;
             $canvas_data[$key]['dataSort'] = $key;
             $canvas_data[$key]['dataSort'] = $key;
             $canvas_data[$key]['moved'] = false;
             $canvas_data[$key]['moved'] = false;
             // $page['template'][$key][$sector_key]['componentData'] = $result[$sectorId];
             // $page['template'][$key][$sector_key]['componentData'] = $result[$sectorId];
         }
         }
-        
+        // return $canvas_data;
         return [
         return [
             'template_data' => $template_data,
             'template_data' => $template_data,
             'canvas_data' => $canvas_data,
             'canvas_data' => $canvas_data,