作者 李宇航

合并分支 'lyh-server' 到 'master'

gx脚本



查看合并请求 !2028
... ... @@ -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;
}
}
... ...