作者 赵彬吉

update

... ... @@ -272,13 +272,23 @@ class RelayInquiry extends Command
{
$this->output('获取转发对象');
//是否有必选的
$require_data = [];
foreach ($task['target'] as $item){
if(!empty($item['is_require'])){
$require_data[] = $item;
}
}
//代理商组 一个组只发一个
$agent_group = collect($task['target'])->groupBy('agent_group');
$agent_group = collect($task['target'])->whereNotIn('agent_group', array_column($require_data, 'agent_group'))->groupBy('agent_group');
// 获取转发对象 重置num数量, array_rand数量不足会报错
$task['num'] = $task['num'] - count($require_data);
$num = $task['num'] > count($agent_group) ? count($agent_group) : $task['num'];
$random_data = $agent_group->keys()->random($num)->map(function ($group) use ($agent_group) {
return $agent_group[$group]->random();
})->all();
$random_data = array_merge($require_data, $random_data);
if (empty($random_data)) {
$this->logChannel()->info('当前任务未发现转发对象!', ['广告任务ID:' . $task['id'], '询盘ID:' . $form->id]);
$form->status = ReInquiryForm::STATUS_FORGO;
... ...
... ... @@ -109,6 +109,7 @@ class AdsController extends BaseController
if(empty($target)){
return $this->response('请添加关联网站!', Code::USER_ERROR, []);
}
$is_require_num = 0;
foreach ($target as &$item){
if(empty($item['url'])){
return $this->response('网站域名不能为空!', Code::USER_ERROR, []);
... ... @@ -120,7 +121,14 @@ class AdsController extends BaseController
return $this->response('代理商分组不能为空!', Code::USER_ERROR, []);
}
$item['url'] = trim(str_replace(['http://', 'https://'], '', $item['url']), '/');
if(!empty($item['is_require'])){
$is_require_num++;
}
}
if($is_require_num > $task->num){
return $this->response('必选渠道不能大于转发数量!', Code::USER_ERROR, []);
}
foreach ($target as $v){
ReInquiryCount::addInquiryNum($id, $v['url'], 0);
}
... ...
... ... @@ -66,6 +66,14 @@ class ReInquiryCount extends Model
}
public function getTasksAttribute(){
return ReInquiryTask::whereIn('id', $this->task_ids)->select(['title', 'industry'])->get();
$tasks = ReInquiryTask::whereIn('id', $this->task_ids)->select(['title', 'industry','target'])->get()->toArray();
foreach ($tasks as &$task){
$target = collect($task['target'])->where('url', $this->domain)->first();
$task['agent'] = $target['agent'] ?? '';
$task['is_v6'] = $target['is_v6'] ?? '';
$task['agent_group'] = $target['agent_group'] ?? '';
unset($task['target']);
}
return $tasks;
}
}
... ...
... ... @@ -63,6 +63,13 @@ class ReInquiryTask extends Base
*/
public function getTargetAttribute($value)
{
return $value ? json_decode($value, true) : [];
$value = $value ? json_decode($value, true) : [];
foreach ($value as &$item){
$item['url'] = $item['url'] ?? '';
$item['agent'] = $item['agent'] ?? '';
$item['agent_group'] = $item['agent_group'] ?? '';
$item['is_require'] = $item['is_require'] ?? 0;
}
return $value;
}
}
... ...