|
|
@@ -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,
|
|
|
+ ];
|
|
|
}
|
|
|
}
|