Selaa lähdekoodia

修改接口:添加通栏、修改通栏、添加组件、修改组件

15313670163 5 kuukautta sitten
vanhempi
sitoutus
c3958bebc7
2 muutettua tiedostoa jossa 91 lisäystä ja 19 poistoa
  1. 90 18
      app/JsonRpc/PublicRpcService.php
  2. 1 1
      app/Model/Component.php

+ 90 - 18
app/JsonRpc/PublicRpcService.php

@@ -40,6 +40,7 @@ use App\Model\ComponentType;
 use App\Model\Article;
 use App\Model\Article;
 use App\Model\WebsiteCategory;
 use App\Model\WebsiteCategory;
 use App\Model\AdPlace;
 use App\Model\AdPlace;
+use App\Model\Company;
 use App\Model\WebsiteImg;
 use App\Model\WebsiteImg;
 use App\Model\SectorComponent;
 use App\Model\SectorComponent;
 use App\Model\ComponentImg;
 use App\Model\ComponentImg;
@@ -1219,11 +1220,18 @@ class PublicRpcService implements PublicRpcServiceInterface
                     'sort_id' => $key + 1,
                     'sort_id' => $key + 1,
                     'place_id' => $data['place_type'],
                     'place_id' => $data['place_type'],
                 ];
                 ];
+                $componentTypes[] = $item;
+                $components[] = [
+                    'sort_id' => $key + 1,
+                    'component_type' => $item,
+                ];
+                $place_ids[] = $data['place_type'];
             }
             }
         }
         }
         $component_num = count($component);
         $component_num = count($component);
         $count = count(array_unique($component));
         $count = count(array_unique($component));
-        //   return Result::success($sector_component);
+       
+        // return Result::success($component_sort);
         if(count($sort) != $data['component_num'] || $component_num != $count){
         if(count($sort) != $data['component_num'] || $component_num != $count){
             return Result::error('组件关联错误!');
             return Result::error('组件关联错误!');
         }
         }
@@ -1243,11 +1251,25 @@ class PublicRpcService implements PublicRpcServiceInterface
                 Db::rollBack();
                 Db::rollBack();
                 return Result::error('通栏关联组件失败!');
                 return Result::error('通栏关联组件失败!');
             }
             }
-            // $up_component = Component::whereIn('component_type',$sector_component['component_id'])->update(['status' => 2]);
-            // if(empty($up_component)){
-            //     Db::rollBack();
-            //     return Result::error('通栏关联组件失败!');
-            // }
+            // unset($sector_component['place_id']);
+            // unset($sector_component['sector_id']);
+            // 2. 查询数据库中已存在的component_type(只保留存在的记录)
+            $existingTypes = Component::whereIn('component_type', $componentTypes)
+                ->pluck('component_type') // 提取存在的component_type
+                ->toArray();
+            // 3. 过滤$components数组,只保留数据库中已存在的记录(核心:避免新增)
+            $updateData = array_filter($components, function ($item) use ($existingTypes) {
+                return in_array($item['component_type'], $existingTypes);
+            });
+
+            // 4. 执行upsert(此时$updateData中只有已存在的记录,不会新增)
+            if (!empty($updateData)) {
+                $component_sort = Component::upsert($updateData,['component_type'],['sort_id']);
+            }
+            if(empty($component_sort)){
+                Db::rollBack();
+                return Result::error('组件位置关联失败!');
+            }
             $result = Sector::insertGetId($data);
             $result = Sector::insertGetId($data);
             if (empty($result)) {
             if (empty($result)) {
                 Db::rollBack();
                 Db::rollBack();
@@ -1332,13 +1354,12 @@ class PublicRpcService implements PublicRpcServiceInterface
         $sector_component = [];
         $sector_component = [];
         foreach ($sort as $key => $subArray) {
         foreach ($sort as $key => $subArray) {
             foreach ($subArray as $k => $item) {
             foreach ($subArray as $k => $item) {
-                $component[] = $item;
-                $sector_component[] = [
-                    'sector_id' => $data['sector_id'],
-                    'component_id' => $item,
+                $componentTypes[] = $item;
+                $components[] = [
                     'sort_id' => $key + 1,
                     'sort_id' => $key + 1,
-                    'place_id' => $data['place_type'],
+                    'component_type' => $item,
                 ];
                 ];
+                $place_ids[] = $data['place_type'];
             }
             }
         }
         }
         // // 批量插入数据到 ComponentSector 表
         // // 批量插入数据到 ComponentSector 表
@@ -1378,6 +1399,23 @@ class PublicRpcService implements PublicRpcServiceInterface
             //     Db::rollBack();
             //     Db::rollBack();
             //     return Result::error('通栏关联组件失败!');
             //     return Result::error('通栏关联组件失败!');
             // }
             // }
+            // 2. 查询数据库中已存在的component_type(只保留存在的记录)
+            $existingTypes = Component::whereIn('component_type', $componentTypes)
+                ->pluck('component_type') // 提取存在的component_type
+                ->toArray();
+            // 3. 过滤$components数组,只保留数据库中已存在的记录(核心:避免新增)
+            $updateData = array_filter($components, function ($item) use ($existingTypes) {
+                return in_array($item['component_type'], $existingTypes);
+            });
+
+            // 4. 执行upsert(此时$updateData中只有已存在的记录,不会新增)
+            if (!empty($updateData)) {
+                $component_sort = Component::upsert($updateData,['component_type'],['sort_id']);
+            }
+            if(empty($component_sort)){
+                Db::rollBack();
+                return Result::error('组件位置关联失败!');
+            }
             $result = Sector::where('id', $data['id'])->update($data);
             $result = Sector::where('id', $data['id'])->update($data);
             if (empty($result)) {
             if (empty($result)) {
                 Db::rollBack();
                 Db::rollBack();
@@ -1466,9 +1504,10 @@ class PublicRpcService implements PublicRpcServiceInterface
             'component_keyword' => $data['component_keyword'],
             'component_keyword' => $data['component_keyword'],
         ];
         ];
         $component_head_code = [
         $component_head_code = [
-            'component_type' => $add_arr['component_type'],
-            'type_id' => $add_arr['type_id'],
+            'component_id' => $add_arr['component_type'],
+            'component_type' => $add_arr['type_id'],
             'component_name' => $add_arr['component_name'],
             'component_name' => $add_arr['component_name'],
+            'component_style' => 1,
         ];
         ];
         $add_arr['component_code'] = json_encode($component_head_code,true);
         $add_arr['component_code'] = json_encode($component_head_code,true);
         switch($data['type_id']){
         switch($data['type_id']){
@@ -1478,12 +1517,15 @@ class PublicRpcService implements PublicRpcServiceInterface
             case 4:                         //4:资讯-最新类组件;
             case 4:                         //4:资讯-最新类组件;
             case 5:                         //5:资讯-推荐类组件;
             case 5:                         //5:资讯-推荐类组件;
             case 6:                         //6:资讯-热点类组件;
             case 6:                         //6:资讯-热点类组件;
+                // $component_data['componentData']['name'] = '';
                 $add_arr['level'] = $data['type_id'];
                 $add_arr['level'] = $data['type_id'];
                 $add_arr['img_num'] = intval($data['img_num']);
                 $add_arr['img_num'] = intval($data['img_num']);
                 $add_arr['text_num'] = intval($data['text_num']);
                 $add_arr['text_num'] = intval($data['text_num']);
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
                     'category_id' => '',
                     'category_id' => '',
                     'level' => $add_arr['level'],
                     'level' => $add_arr['level'],
+                    'name' => '',
+                    'category_arr' => [],
                     'imgSize' => $data['img_num'] ?? '',
                     'imgSize' => $data['img_num'] ?? '',
                     'textSize' => $data['text_num'] ?? '',
                     'textSize' => $data['text_num'] ?? '',
                     'child' => [
                     'child' => [
@@ -1492,10 +1534,17 @@ class PublicRpcService implements PublicRpcServiceInterface
                         'textSize' => ''
                         'textSize' => ''
                     ]
                     ]
                 ]; 
                 ]; 
+                if($data['type_id'] == 4){
+                    $component_data['componentData']['name'] = '热点精选';
+                }
+                if($data['type_id'] == 5){
+                    $component_data['componentData']['name'] = '热点精选';
+                }
                 $add_arr['component_data'] = json_encode($component_data, true);
                 $add_arr['component_data'] = json_encode($component_data, true);
                 $add_arr['component_column'] = $component_type['com_code'] ?? '';
                 $add_arr['component_column'] = $component_type['com_code'] ?? '';
                 break;
                 break;
             case 7:                        //7:资讯-栏目类组件;
             case 7:                        //7:资讯-栏目类组件;
+            case 15:                       //15:滚动图文类;
                 $add_arr['img_num'] = intval($data['img_num']);
                 $add_arr['img_num'] = intval($data['img_num']);
                 $add_arr['text_num'] = intval($data['text_num']);
                 $add_arr['text_num'] = intval($data['text_num']);
                 $add_arr['child_imgnum'] = intval($data['child_imgnum'] ?? null);
                 $add_arr['child_imgnum'] = intval($data['child_imgnum'] ?? null);
@@ -1503,6 +1552,8 @@ class PublicRpcService implements PublicRpcServiceInterface
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
                     'category_id' => '',
                     'category_id' => '',
                     'level' => '',
                     'level' => '',
+                    'name' => '',
+                    'category_arr' => [],
                     'imgSize' => $add_arr['img_num'] ?? '',
                     'imgSize' => $add_arr['img_num'] ?? '',
                     'textSize' => $add_arr['text_num'] ?? '',
                     'textSize' => $add_arr['text_num'] ?? '',
                     'child' => [
                     'child' => [
@@ -1514,7 +1565,6 @@ class PublicRpcService implements PublicRpcServiceInterface
                 $add_arr['component_data'] = json_encode($component_data,true);
                 $add_arr['component_data'] = json_encode($component_data,true);
                 $add_arr['component_column'] = $component_type['com_code'] ?? '';
                 $add_arr['component_column'] = $component_type['com_code'] ?? '';
                 break;
                 break;
-                
             case 8:                      //8:列表类组件;
             case 8:                      //8:列表类组件;
                 $add_arr['pageSize'] = intval($data['pageSize']);
                 $add_arr['pageSize'] = intval($data['pageSize']);
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
@@ -1569,7 +1619,9 @@ class PublicRpcService implements PublicRpcServiceInterface
                 // $ad_imginfo = json_decode($data['img_info'],true);
                 // $ad_imginfo = json_decode($data['img_info'],true);
                 
                 
                 break;
                 break;
-            case 13:                     //13:底部导航类;
+            // case 13:                     //13:底部导航类;
+            case 17:                     //17:单页列表类;
+            case 18:                     //18:单页详情类;
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
                     'fcat_id' => '',
                     'fcat_id' => '',
                 ];
                 ];
@@ -1590,6 +1642,8 @@ class PublicRpcService implements PublicRpcServiceInterface
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
                     'category_id' => '',
                     'category_id' => '',
                     'level' => '',
                     'level' => '',
+                    'name' => '',
+                    'category_arr' => [],
                     'imgSize' => $data['img_num'] ?? '',
                     'imgSize' => $data['img_num'] ?? '',
                     'textSize' => $data['text_num'] ?? '',
                     'textSize' => $data['text_num'] ?? '',
                     'child' => [
                     'child' => [
@@ -1618,6 +1672,7 @@ class PublicRpcService implements PublicRpcServiceInterface
             default:
             default:
                 break;
                 break;
         }
         }
+        
         if($data['type_id'] == 11 || $data['type_id'] == 14){
         if($data['type_id'] == 11 || $data['type_id'] == 14){
             Db::beginTransaction();
             Db::beginTransaction();
             try{
             try{
@@ -1722,9 +1777,10 @@ class PublicRpcService implements PublicRpcServiceInterface
             'component_keyword' => $data['component_keyword'],
             'component_keyword' => $data['component_keyword'],
         ];
         ];
         $component_head_code = [
         $component_head_code = [
-            'component_type' => $add_arr['component_type'],
-            'type_id' => $add_arr['type_id'],
+            'component_id' => $add_arr['component_type'],
+            'component_type' => $add_arr['type_id'],
             'component_name' => $add_arr['component_name'],
             'component_name' => $add_arr['component_name'],
+            'component_style' => 1,
         ];
         ];
         $add_arr['component_code'] = json_encode($component_head_code,true);
         $add_arr['component_code'] = json_encode($component_head_code,true);
         switch($data['type_id']){
         switch($data['type_id']){
@@ -1734,12 +1790,15 @@ class PublicRpcService implements PublicRpcServiceInterface
             case 4:                         //4:资讯-最新类组件;
             case 4:                         //4:资讯-最新类组件;
             case 5:                         //5:资讯-推荐类组件;
             case 5:                         //5:资讯-推荐类组件;
             case 6:                         //6:资讯-热点类组件;
             case 6:                         //6:资讯-热点类组件;
+                // $component_data['componentData']['name'] = '';
                 $add_arr['level'] = $data['type_id'];
                 $add_arr['level'] = $data['type_id'];
                 $add_arr['img_num'] = intval($data['img_num']);
                 $add_arr['img_num'] = intval($data['img_num']);
                 $add_arr['text_num'] = intval($data['text_num']);
                 $add_arr['text_num'] = intval($data['text_num']);
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
                     'category_id' => '',
                     'category_id' => '',
                     'level' => $add_arr['level'],
                     'level' => $add_arr['level'],
+                    'category_arr' => [],
+                    'name' => '',
                     'imgSize' => $data['img_num'] ?? '',
                     'imgSize' => $data['img_num'] ?? '',
                     'textSize' => $data['text_num'] ?? '',
                     'textSize' => $data['text_num'] ?? '',
                     'child' => [
                     'child' => [
@@ -1748,10 +1807,17 @@ class PublicRpcService implements PublicRpcServiceInterface
                         'textSize' => ''
                         'textSize' => ''
                     ]
                     ]
                 ]; 
                 ]; 
+                if($data['type_id'] == 4){
+                    $component_data['componentData']['name'] = '最新资讯';
+                }
+                if($data['type_id'] == 5){
+                    $component_data['componentData']['name'] = '热点精选';
+                }
                 $add_arr['component_data'] = json_encode($component_data, true);
                 $add_arr['component_data'] = json_encode($component_data, true);
                 $add_arr['component_column'] = $component_type['com_code'] ?? '';
                 $add_arr['component_column'] = $component_type['com_code'] ?? '';
                 break;
                 break;
             case 7:                        //7:资讯-栏目类组件;
             case 7:                        //7:资讯-栏目类组件;
+            case 15:                       //15:滚动图文类;
                 $add_arr['img_num'] = intval($data['img_num']);
                 $add_arr['img_num'] = intval($data['img_num']);
                 $add_arr['text_num'] = intval($data['text_num']);
                 $add_arr['text_num'] = intval($data['text_num']);
                 $add_arr['child_imgnum'] = intval($data['child_imgnum'] ?? null);
                 $add_arr['child_imgnum'] = intval($data['child_imgnum'] ?? null);
@@ -1759,6 +1825,8 @@ class PublicRpcService implements PublicRpcServiceInterface
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
                     'category_id' => '',
                     'category_id' => '',
                     'level' => '',
                     'level' => '',
+                    'name' => '',
+                    'category_arr' => [],
                     'imgSize' => $add_arr['img_num'] ?? '',
                     'imgSize' => $add_arr['img_num'] ?? '',
                     'textSize' => $add_arr['text_num'] ?? '',
                     'textSize' => $add_arr['text_num'] ?? '',
                     'child' => [
                     'child' => [
@@ -1823,7 +1891,9 @@ class PublicRpcService implements PublicRpcServiceInterface
                 // $add_arr['adimg_info'] = $data['img_info'];
                 // $add_arr['adimg_info'] = $data['img_info'];
                 // $ad_imginfo = json_decode($data['img_info'],true);
                 // $ad_imginfo = json_decode($data['img_info'],true);
                 break;
                 break;
-            case 13:                     //13:底部导航类;
+            // case 13:                     //13:底部导航类;
+            case 17:                     //17:单页列表类;
+            case 18:                     //18:单页详情类;
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
                     'fcat_id' => '',
                     'fcat_id' => '',
                 ];
                 ];
@@ -1844,6 +1914,8 @@ class PublicRpcService implements PublicRpcServiceInterface
                 $component_data['componentData'] = [
                 $component_data['componentData'] = [
                     'category_id' => '',
                     'category_id' => '',
                     'level' => '',
                     'level' => '',
+                    'name' => '',
+                    'category_arr' => [],
                     'imgSize' => $data['img_num'] ?? '',
                     'imgSize' => $data['img_num'] ?? '',
                     'textSize' => $data['text_num'] ?? '',
                     'textSize' => $data['text_num'] ?? '',
                     'child' => [
                     'child' => [

+ 1 - 1
app/Model/Component.php

@@ -18,7 +18,7 @@ class  Component extends Model
     /**
     /**
      * The attributes that are mass assignable.
      * The attributes that are mass assignable.
      */
      */
-    protected array $fillable = [];
+    protected array $fillable = ['component_type','sort_id'];
 
 
     /**
     /**
      * The attributes that should be cast to native types.
      * The attributes that should be cast to native types.