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

+ 102 - 59
app/JsonRpc/PublicRpcService.php

@@ -1218,6 +1218,7 @@ class PublicRpcService implements PublicRpcServiceInterface
                     'component_id' => $item,
                     'sort_id' => $key + 1,
                     'place_id' => $data['place_type'],
+                    'sectorid' => $data['id'],
                 ];
             }
         }
@@ -1229,10 +1230,11 @@ class PublicRpcService implements PublicRpcServiceInterface
         }
         // 通栏分类:1:资讯类:2:通栏广告类;3:混合类;4:头条类;5:轮播图类;
         $sector_code = [
-            'sectorName' => $data['sector_name'],
-            'sectorId' => $data['sector_id'],
-            'sectorType' => $data['sector_type'],
-            'sectorPlace' => $data['place_type'],
+            $data['sector_id'] => [
+                'sectorName' => $data['sector_name'],
+                'sectorImg' => $data['sector_img'],
+                'sectorHeight' =>$data['pic_height']
+            ],
         ];
         // return Result::success($sector_code);
         $data['sector_code'] = json_encode($sector_code);
@@ -1335,6 +1337,7 @@ class PublicRpcService implements PublicRpcServiceInterface
                 $component[] = $item;
                 $sector_component[] = [
                     'sector_id' => $data['sector_id'],
+                    'sectorid' => $data['id'],
                     'component_id' => $item,
                     'sort_id' => $key + 1,
                     'place_id' => $data['place_type'],
@@ -1352,7 +1355,7 @@ class PublicRpcService implements PublicRpcServiceInterface
         $data['sector_code'] = json_encode($sector_code);
         Db::beginTransaction();
         try {
-            $com_sector = SectorComponent::where('sector_id', $sector['sector_id'])->pluck('component_id');
+            $com_sector = SectorComponent::where('sectorid', $data['id'])->pluck('component_id');
             if(empty($com_sector)){
                 Db::rollBack();
                 return Result::error('通栏解除组件关联失败!');
@@ -1362,7 +1365,7 @@ class PublicRpcService implements PublicRpcServiceInterface
             //         Db::rollBack();
             //         return Result::error('通栏解除组件关联失败!');
             // }
-            $del_SectorComponent = SectorComponent::where('sector_id', $sector['sector_id'])->delete();
+            $del_SectorComponent = SectorComponent::where('sectorid', $data['id'])->delete();
             if(empty($del_SectorComponent)){
                 Db::rollBack();
                 return Result::error('通栏解除组件关联失败!');
@@ -2901,17 +2904,17 @@ class PublicRpcService implements PublicRpcServiceInterface
 
         }
         $sector_id = array_column($sector,'id');
-        $sector_code = array_column($sector,'sector_code');
+        // $sector_code = array_column($sector,'sector_code');
         // $sector_code = array_flip($sector_code);
-        foreach ($sector_code as &$item) {
-            $item = json_decode($item, true);
-        }
-        unset($item);
-        $component = $this->randomComponent($sector_id,$data,$sector_code);
+        // foreach ($sector_code as &$item) {
+        //     $item = json_decode($item, true);
+        // }
+        // unset($item);
+        $component = $this->randomComponent($sector_id,$data,$sector);
 
-        return ['sector_code'=>$sector_code,'sector'=>$sector,'component'=>$component];
+        return ['sector_id'=>$sector_id,'component'=>$component];
     }
-    public function randomComponent($sector_id,$data,$sector_code){
+    public function randomComponent($sector_id,$data,$sector){
         // 获取原始查询结果
         $rawResults = SectorComponent::whereIn('sector_component.sectorid', $sector_id)
             ->leftJoin('component','component.component_type','sector_component.component_id')
@@ -2923,66 +2926,106 @@ class PublicRpcService implements PublicRpcServiceInterface
         // return $rawResults; 
         // 按sectorid和sort_id分组数据
         $groupedResults = [];
-        foreach ($rawResults as $item) {
+        $arr = 0;
+        $component_list = [];
+        foreach ($rawResults as $key => $item) {
             $sectorId = $item->sectorid;
             $sortId = $item->sort_id;
             $componentId = $item->component_type;
-            
+            $component_data = $item->component_data;
+            $component_column = $item->component_column;
             if (!isset($groupedResults[$sectorId])) {
                 $groupedResults[$sectorId] = [];
             }
-            
-            if (!isset($groupedResults[$sectorId][$sortId])) {
-                $groupedResults[$sectorId][$sortId] = [];
-            }
-            
-            if (!isset($groupedResults[$sectorId][$sortId][$componentId])) {
-                $groupedResults[$sectorId][$sortId][$componentId] = [
-                    'component' => $item->component_type,
-                    'images' => []
+            $componentData = !empty($component_data) && is_string($component_data) ? json_decode($component_data, true) : [];
+            $component_listtype = !empty($component_column) && is_string($component_column) ? json_decode($component_column, true) : [];
+            $component_code = !empty($component_code) && is_string($component_code) ? json_decode($component_code, true) : [];
+            // 确保 $componentData['componentData'] 是数组,避免 array_push 传入 null
+            if (!isset($componentData['componentData']) || !is_array($componentData['componentData'])) {
+                $componentData['componentData'] = [];
+            }
+            $componentData['componentData'] += $component_listtype;
+                $component_code = $componentData;
+                $component_list[$key] = $component_code;
+                // $component_list[$key]['listType'] = $component_listtype;
+            // }
+             $sort_id = intval($sortId-1);
+            if (!isset($groupedResults[$sectorId][$sort_id])) {
+               
+                // $groupedResults[$sectorId][$sortId] = [];
+                $groupedResults[$sectorId][$sort_id] = [
+                    'component_type' => $item->component_type,
+                    'sort_id' => $sortId,
+                    'images' => [
+                        'img_name' => $item->img_name,
+                        'img_id' => $item->img_id,
+                        'img_url' => $item->img_url,
+                    ]
                 ];
+                // 检查 $sectorId 和 $sort_id 是否为合法的数组键类型(字符串或整数)
+                if (is_scalar($sectorId) && is_scalar($sort_id)) {
+                    $groupedResults[(int)$sectorId][(int)$sort_id]['componentData'] = $component_code['componentData'];
+                } else {
+                    // 处理非法键类型的情况,可根据实际需求修改错误处理逻辑
+                    trigger_error('Illegal offset type for $sectorId or $sort_id', E_USER_WARNING);
+                }
             }
+            // 检查 $component_data 是否为 null 或空字符串,避免 json_decode 接收 null 参数
+            // if (!isset($groupedResults[$sectorId][$sortId])) {
+                
+            //     $arr++;
+            // }
             
-            if (!empty($item->component_img)) {
-                $groupedResults[$sectorId][$sortId][$componentId]['images'][] = [
-                    'img_name' => $item->img_name,
-                    'img_id' => $item->img_id,
-                    'img_url' => $item->img_url,
-                ];
-            }
+            // if (!empty($item->component_img)) {
+            //     $groupedResults[$sectorId][$sortId][$componentId]['images'][] = [
+            //         'img_name' => $item->img_name,
+            //         'img_id' => $item->img_id,
+            //         'img_url' => $item->img_url,
+            //     ];
+            // }
         }
         
         // 重组数据结构为: sectorid -> sort_id -> {component, img}
         $result = [];
-        foreach ($sector_code as $key => $value) {
-            // array_push($value['sort_id'],$key);
-            $page['template'][$key] = $value; 
-            $sector_key[$key] = array_keys($value);
-            // foreach ($rawResults as $sortId => $components) {
-            //     // 随机选择一个组件
-            //     $componentIds = array_keys($components);
-            //     $selectedComponentId = $componentIds[array_rand($componentIds)];
-            //     $selectedComponent = $components[$selectedComponentId];
-            //     // 随机选择一个样式
-            //     $images = $selectedComponent['images'];
-            //     $selectedImage = [];
-            //     if (!empty($images)) {
-            //         $selectedImage = $images[array_rand($images)];
-            //     }
+        // $sector_key = array_keys($sector_code[0]);
+        // return  $sector_code[0];
+        // foreach ($sector as $key => $value) {
+        //     // array_push($value['sort_id'],$key);
+        //     $page['template'][$key] = [
+        //         $value['sector_id'] => [
+        //             'sectorName' => $value['sector_name'],
+        //             'sectorHeight' => $value['pic_height'],
+        //         ]
+        //     ]; 
+        //     if($value['sector_type'] == 2){
+
+        //     }
+        //     // $sector_key[$key] = array_keys($value );
+        //     foreach ($rawResults as $sortId => $components) {
+        //     //     // 随机选择一个组件
+        //     //     $componentIds = array_keys($components);
+        //     //     $selectedComponentId = $componentIds[array_rand($componentIds)];
+        //     //     $selectedComponent = $components[$selectedComponentId];
+        //     //     // 随机选择一个样式
+        //     //     $images = $selectedComponent['images'];
+        //     //     $selectedImage = [];
+        //     //     if (!empty($images)) {
+        //     //         $selectedImage = $images[array_rand($images)];
+        //     //     }
                 
-            //     // 构建最终结构
-            //     if (!isset($result[$sectorId])) {
-            //         $result[$sectorId] = [];
-            //     }
-            //     $result[$sectorId][$sortId] = [
-            //         'component' => $selectedComponent['component'],
-            //         'img' => $selectedImage
-            //     ];
-            // }
-            // $page['template'][$key][$sector_key]['componentData'] = $result[$sectorId];
-        }
+        //     //     // 构建最终结构
+        //     //     if (!isset($result[$sectorId])) {
+        //     //         $result[$sectorId] = [];
+        //     //     }
+        //     //     $result[$sectorId][$sortId] = [
+        //     //         'component' => $selectedComponent['component'],
+        //     //         'img' => $selectedImage
+        //     //     ];
+        //     }
+        //     // $page['template'][$key][$sector_key]['componentData'] = $result[$sectorId];
+        // }
         
-        return $sector_key;
+        return $groupedResults;
     }
     public function getPageCode($sector,$page){
         if(empty($sector)){