|
|
@@ -3094,37 +3094,51 @@ class PublicRpcService implements PublicRpcServiceInterface
|
|
|
$repaet_key = 0;
|
|
|
$num = 0;
|
|
|
$type = [];
|
|
|
+ // return $rule_repaet_type;
|
|
|
// 防止无限循环,设置最大迭代次数
|
|
|
- $max_iterations = 1000;
|
|
|
+ $max_iterations = 20;
|
|
|
$iteration_count = 0;
|
|
|
- // return $rule_repeat;
|
|
|
+ // return [
|
|
|
+ // 'repaet_key' => $repaet_key,
|
|
|
+ // 'repeat_num' => $repeat_num,
|
|
|
+ // 'rule_repeat' => $rule_repeat,
|
|
|
+ // 'repeat_type' => $repeat_type,
|
|
|
+ // 'must_type' => $must_type,
|
|
|
+ // ];
|
|
|
while($repaet_key < $repeat_num && $iteration_count < $max_iterations){
|
|
|
$num++;
|
|
|
foreach($repeat_type as $key => $value){
|
|
|
- $type[$key] = $num;
|
|
|
+ if(!isset($type[$key])){
|
|
|
+ $type[$key] = 0;
|
|
|
+ }else{
|
|
|
+ $type[$key]++;
|
|
|
+ }
|
|
|
// $type代表每个类型的通栏数量,每个类型的通栏的数量应该≤规则限制的数量
|
|
|
- if($repaet_key < $repeat_num && $type[$key] <= $rule_repeat[$key]-1){
|
|
|
+ if($repaet_key < $repeat_num && $type[$key] <= $rule_repeat[$key]){
|
|
|
// $max_repaert_num = $rule_repeat[$key];
|
|
|
// if($max_repaert_num < $num ){
|
|
|
- // $arr_key = $num+$key;
|
|
|
- if (count($value) > 0) {
|
|
|
+ // // $arr_key = $num+$key;
|
|
|
+ if (count($value) > 1) {
|
|
|
// 若 可以随机的通栏类型存在多个通栏,随机取其一
|
|
|
$repeat_sector_key[$repaet_key] = $value[array_rand($value)];
|
|
|
} else {
|
|
|
$repeat_sector_key[$repaet_key] = $value[0];
|
|
|
}
|
|
|
- // $type[$repaet_key] = $repeat_sector_key[$repaet_key];
|
|
|
+ $type[$repaet_key] = $repeat_sector_key[$repaet_key];
|
|
|
$repaet_key++;
|
|
|
// }
|
|
|
- }else{
|
|
|
- break;
|
|
|
}
|
|
|
+ // else{
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
}
|
|
|
+ // var_dump("num", $type[$key]);
|
|
|
+ // var_dump("repeat_sector_key", $repeat_sector_key);
|
|
|
$iteration_count++;
|
|
|
}
|
|
|
-
|
|
|
+ // return $repeat_sector_key;
|
|
|
// var_dump("num", $num);
|
|
|
- // var_dump("repeat_sector_key", $repeat_sector_key);
|
|
|
+ var_dump("repeat_sector_key", $repeat_sector_key);
|
|
|
// 随机的重复通栏键值转换成真正的通栏
|
|
|
$repeat_sector = [];
|
|
|
foreach ($repeat_sector_key as $key => $value) {
|
|
|
@@ -3135,27 +3149,47 @@ class PublicRpcService implements PublicRpcServiceInterface
|
|
|
$repeat_count = count($repeat_sector);
|
|
|
var_dump("repeat_count",$repeat_count);
|
|
|
// var_dump("repeat_sector", $repeat_sector);
|
|
|
-
|
|
|
+ // return $repeat_sector;
|
|
|
|
|
|
$sector = array_merge($repeat_sector,$sector_zuhe1);
|
|
|
// 处理头条及轮播图在随机通栏中的特殊位置特殊处理
|
|
|
$sector_specal_sort = array_column($sector,'sector_type');
|
|
|
- if(in_array(6,$sector_specal_sort) || in_array(7,$sector_specal_sort)){
|
|
|
+ if((in_array(6,$sector_specal_sort) || in_array(7,$sector_specal_sort)) ){
|
|
|
+
|
|
|
$toutiao_key = array_search(6,$sector_specal_sort) ?? null;
|
|
|
$pic_key = array_search(7,$sector_specal_sort) ?? null;
|
|
|
+ $cat_key = array_search(5,$sector_specal_sort) ?? null;
|
|
|
$toutiao = $sector[$toutiao_key];
|
|
|
$pic = $sector[$pic_key];
|
|
|
- $soty_1 = $sector[0];
|
|
|
+ $cat = $sector[$cat_key];
|
|
|
+ $sort_1 = $sector[0];
|
|
|
$sort_2 = $sector[1];
|
|
|
- if(!empty($toutiao_key)){
|
|
|
- $sector[0] = $toutiao;
|
|
|
- $sector[$toutiao_key] = $soty_1;
|
|
|
- $sector[1] = $pic;
|
|
|
- $sector[$pic_key] = $sort_2;
|
|
|
- }else{
|
|
|
- $sector[0] = $pic;
|
|
|
- $sector[$pic_key] = $sort_2;
|
|
|
+ $sort_3 = $sector[2];
|
|
|
+ if($data['page'] == 1){
|
|
|
+ if(!empty($toutiao_key)){
|
|
|
+ $sector[0] = $toutiao;
|
|
|
+ $sector[$toutiao_key] = $sort_1;
|
|
|
+ $sector[1] = $pic;
|
|
|
+ $sector[$pic_key] = $sort_2;
|
|
|
+ }else{
|
|
|
+ $sector[0] = $pic;
|
|
|
+ $sector[$pic_key] = $sort_1;
|
|
|
+ }
|
|
|
}
|
|
|
+ if($data['page'] == 2){
|
|
|
+ $sector[0] = $cat;
|
|
|
+ $sector[$cat_key] = $sort_1;
|
|
|
+ if(!empty($toutiao_key)){
|
|
|
+ $sector[1] = $toutiao;
|
|
|
+ $sector[$toutiao_key] = $sort_2;
|
|
|
+ $sector[2] = $pic;
|
|
|
+ $sector[$pic_key] = $sort_3;
|
|
|
+ }else{
|
|
|
+ $sector[1] = $pic;
|
|
|
+ $sector[$pic_key] = $sort_2;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
$sector_id = array_column($sector,'id');
|