|
...
|
...
|
@@ -74,19 +74,40 @@ class UpdateKeyword extends Command |
|
|
|
return false;
|
|
|
|
}
|
|
|
|
$number = count($text);
|
|
|
|
$randomNumber = rand(0, $number - 1);
|
|
|
|
if($updateObject['type'] == 0){//更新所有关键字
|
|
|
|
$keywordModel->edit(['keyword_content'=>$text[$randomNumber]],['status'=>1]);
|
|
|
|
//获取所有关键字的id
|
|
|
|
$idArr = $keywordModel->selectField(['id'=>['>',0]],'id');
|
|
|
|
if($info['update_method'] != 1){
|
|
|
|
shuffle($idArr);
|
|
|
|
}
|
|
|
|
$result = $this->splitArrayIntoParts($idArr,$number);
|
|
|
|
foreach ($result as $key => $val){
|
|
|
|
$keywordModel->edit(['keyword_content'=>$text[$key]],['id'=>['in',$val]]);
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
//按传递的关键字更新
|
|
|
|
if(!empty($updateObject['keyword'])){
|
|
|
|
$updateObject['keyword'] = (array)$updateObject['keyword'];
|
|
|
|
$keywordModel->edit(['keyword_content'=>$text[$randomNumber]],['title'=>['in',$updateObject['keyword']]]);
|
|
|
|
foreach ($updateObject['keyword'] as $key => $item){
|
|
|
|
if($info['update_method'] != 1){
|
|
|
|
$randomNumber = rand(0, $number - 1);
|
|
|
|
}else{
|
|
|
|
$randomNumber = $text[$key] ?? rand(0, $number - 1);
|
|
|
|
}
|
|
|
|
$keywordModel->edit(['keyword_content'=>$text[$randomNumber]],['title'=>$item]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//按给定的数量更新
|
|
|
|
if(!empty($updateObject['number']) && ($updateObject['number'] != 0)){
|
|
|
|
$keywordIdArr = $keywordModel->where("status",1)->inRandomOrder()->take($updateObject['number'])->pluck('id')->toArray();
|
|
|
|
$keywordModel->edit(['keyword_content'=>$text[$randomNumber]],['id'=>['in',$keywordIdArr]]);
|
|
|
|
foreach ($keywordIdArr as $key => $item){
|
|
|
|
if($info['update_method'] != 1){
|
|
|
|
$randomNumber = rand(0, $number - 1);
|
|
|
|
}else{
|
|
|
|
$randomNumber = $text[$key] ?? rand(0, $number - 1);
|
|
|
|
}
|
|
|
|
$keywordModel->edit(['keyword_content'=>$text[$randomNumber]],['title'=>$item]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
...
|
...
|
@@ -108,4 +129,21 @@ class UpdateKeyword extends Command |
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function splitArrayIntoParts(array $data, int $parts): array
|
|
|
|
{
|
|
|
|
$count = count($data);
|
|
|
|
// 每份的最小长度(向下取整)
|
|
|
|
$minSize = intdiv($count, $parts);
|
|
|
|
// 余数(说明有一些数组项要平均分配给前面的几份)
|
|
|
|
$remainder = $count % $parts;
|
|
|
|
$result = [];
|
|
|
|
$start = 0;
|
|
|
|
for ($i = 0; $i < $parts; $i++) {
|
|
|
|
$size = $minSize + ($i < $remainder ? 1 : 0);
|
|
|
|
$result[] = array_slice($data, $start, $size);
|
|
|
|
$start += $size;
|
|
|
|
}
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|