作者 赵彬吉

fb询盘

@@ -294,17 +294,21 @@ class RelayInquiry extends Command @@ -294,17 +294,21 @@ class RelayInquiry extends Command
294 $this->output('没有独立站转发对象'); 294 $this->output('没有独立站转发对象');
295 return 0; 295 return 0;
296 } 296 }
297 - //是否有必选的  
298 - $require_data = [];  
299 - foreach ($task['target'] as $item){  
300 - if(!empty($item['is_require'])){  
301 - $require_data[] = $item; 297 + //是否有必选的渠道 渠道有一个及以上必选 就在组内随机一个
  298 + $require_agent_group = [];
  299 + foreach ($task['target'] as $item) {
  300 + if (!empty($item['is_require'])) {
  301 + $require_agent_group[] = $item['agent_group'];
302 } 302 }
303 } 303 }
  304 + $require_agent_group_data = collect($task['target'])->whereIn('agent_group', $require_agent_group)->groupBy('agent_group');
  305 + $require_data = $require_agent_group_data->keys()->random(count($require_agent_group))->map(function ($group) use ($require_agent_group_data) {
  306 + return $require_agent_group_data[$group]->random();
  307 + })->all();
304 //代理商组 一个组只发一个 308 //代理商组 一个组只发一个
305 - $agent_group = collect($task['target'])->whereNotIn('agent_group', array_column($require_data, 'agent_group'))->groupBy('agent_group'); 309 + $agent_group = collect($task['target'])->whereNotIn('agent_group', $require_agent_group)->groupBy('agent_group');
306 // 获取转发对象 重置num数量, array_rand数量不足会报错 310 // 获取转发对象 重置num数量, array_rand数量不足会报错
307 - $task['num'] = $task['num'] - count($require_data); 311 + $task['num'] = $task['num'] - count($require_agent_group);
308 $num = $task['num'] > count($agent_group) ? count($agent_group) : $task['num']; 312 $num = $task['num'] > count($agent_group) ? count($agent_group) : $task['num'];
309 $random_data = $agent_group->keys()->random($num)->map(function ($group) use ($agent_group) { 313 $random_data = $agent_group->keys()->random($num)->map(function ($group) use ($agent_group) {
310 return $agent_group[$group]->random(); 314 return $agent_group[$group]->random();