15313670163 4 månader sedan
förälder
incheckning
c3c29f9610
1 ändrade filer med 53 tillägg och 45 borttagningar
  1. 53 45
      app/JsonRpc/PublicRpcService.php

+ 53 - 45
app/JsonRpc/PublicRpcService.php

@@ -2710,7 +2710,7 @@ class PublicRpcService implements PublicRpcServiceInterface
         $index_rule = json_decode($rule['index_rule']);
         $class_rule = json_decode($rule['class_rule']);
         // return Result::success($index_rule);
-        $tempalte['index'] = $this->randomPage($data,1,$index_rule);
+        $tempalte['index'] = $this->randomPage($data,$data['page'],$index_rule);
         // $tempalte['class'] = $this->randomPage($data,2,$class_rule);
         // $tempalte['list'] = $this->randomPage($data,3);
         // $tempalte['article'] = $this->randomPage($data,4);
@@ -2909,13 +2909,15 @@ class PublicRpcService implements PublicRpcServiceInterface
         $data['page'] = $page;
         $component = $this->randomComponent($sector_id,$data,$sector);
 
-        return ['sector_id'=>$sector_id,'component'=>$component];
+        return ['sector_id'=>$sector_id,
+        'component'=>$component
+    ];
     }
     public function randomComponent($sector_id,$data,$sector){
+        // return $sector;
         // 获取原始查询结果
         $rawResults = SectorComponent::whereIn('sector_component.sectorid', $sector_id)
             ->leftJoin('component','component.component_type','sector_component.component_id')
-
             ->leftJoin('component_img','component_img.component_id','component.component_type')
             ->where('component_img.template_id','=',$data['template_id'])
             ->select('component.*','component_img.img_name','component_img.img_id','component_img.img_url',
@@ -2925,7 +2927,8 @@ class PublicRpcService implements PublicRpcServiceInterface
         $groupedResults = [];
         $arr = 0;
         $component_list = [];
-        
+        $sorts =  [];
+        // return $rawResults;
         // $groupedResults重构数组,将相同位置的组件合并,相同组件的样式合并(已经包括所有选择的组件及组件样式)
         foreach ($rawResults as $key => $item) {
             $sectorId = $item->sectorid;
@@ -2935,6 +2938,7 @@ class PublicRpcService implements PublicRpcServiceInterface
             $component_column = $item->component_column;
             $component_type = $item->type_id;
             $component_ad = $item->ad;
+            
             if (!isset($groupedResults[$sectorId])) {
                 $groupedResults[$sectorId] = [];
             }
@@ -2966,15 +2970,14 @@ class PublicRpcService implements PublicRpcServiceInterface
                             ]
                 ];                
                 // 检查 $sectorId 和 $sort_id 是否为合法的数组键类型(字符串或整数)
-               
             }else{
                 if(isset($com_key)){
                     $com_key++;
                 }
                 if((isset($component_ids) && in_array($componentId,$component_ids)) && isset($img_arr)){
-                    // if(isset($img_arr)){
+                    if(in_array($sortId,$sorts)){
                         $img_arr++;
-                    // }
+                    }
                     $groupedResults[$sectorId][$sort_id][$com_key]['images'][$img_arr] = [
                         'img_name' => $item->img_name,
                         'img_id' => $item->img_id,
@@ -3019,9 +3022,10 @@ class PublicRpcService implements PublicRpcServiceInterface
             }
             // 判断此组件是否存在数组中的依据(若是有重复的组件,一定是组件样式重复)
             $component_ids[$key] = $componentId;
+            $sorts[$key] = $item->sort_id;
         }
 
-        // return $groupedResults;
+        return $groupedResults;
 
         $result = [];
         // return  $sectors;
@@ -3036,45 +3040,49 @@ class PublicRpcService implements PublicRpcServiceInterface
             ]; 
             // $sector_key[$key] = array_keys($value );
             $sector_component = [];
-            foreach ($groupedResults[$sectorid] as $sortId => $components) {
-                // 通栏某一位置的随机组件
-                if(count($components) > 1){
-                    $componentIds = count($components);
-                    $selectedComponentId = rand(0, $componentIds - 1);
-                }else{
-                    $selectedComponentId = 0;
-                }
-                // $Component = $components[$selectedComponentId];
-                $Component['component_type'] = $components[$selectedComponentId]['component_type'];
-                $Component['sort'] = $components[$selectedComponentId]['sort'];
-                // 通栏某一位置的随机组件样式图
-                // 检查 $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'];
+            if(isset($groupedResults[$sectorid]) && !empty($groupedResults[$sectorid]) && is_array($groupedResults[$sectorid])){
+                foreach ($groupedResults[$sectorid] as $sortId => $components) {
+                    // 通栏某一位置的随机组件
+                    if(count($components) > 1){
+                        $componentIds = count($components);
+                        $selectedComponentId = rand(0, $componentIds - 1);
+                    }else{
+                        $selectedComponentId = 0;
                     }
+                    // var_dump($components[$selectedComponentId]);
+                    // $Component = $components[$selectedComponentId];
+                    $Component['component_type'] = $components[$selectedComponentId]['component_type'] ?? 0;
+                    $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'] = [];
+                    // }
+                    $sector_component[$sortId] = $Component;
+                    //  $sector_component[$sortId] = $selectedComponentId;
                 }
-                $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;
                 // var_dump("image",$image);
             }
             $template_data[$key]['componentList'] = $sector_component;