|
...
|
...
|
@@ -9,11 +9,12 @@ use App\Helper\Translate; |
|
|
|
use App\Models\Ai\AiCommand;
|
|
|
|
use App\Models\Mail\Mail;
|
|
|
|
use App\Models\Project\DeployOptimize;
|
|
|
|
use App\Models\Project\ProjectUpdateTdk;
|
|
|
|
use App\Models\User\User;
|
|
|
|
use App\Services\ProjectServer;
|
|
|
|
use Illuminate\Console\Command;
|
|
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
use Illuminate\Support\Facades\Redis;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 初始化项目
|
|
...
|
...
|
@@ -132,31 +133,30 @@ class UpdateSeoTdk extends Command |
|
|
|
public function handle()
|
|
|
|
{
|
|
|
|
while (true) {
|
|
|
|
$project_id = Redis::rpop('updateSeoTdk');
|
|
|
|
$task = ProjectUpdateTdk::getPendingTask();
|
|
|
|
$project_id = $task->project_id;
|
|
|
|
if (!$project_id) {
|
|
|
|
sleep(2);
|
|
|
|
sleep(10);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
echo date('Y-m-d H:i:s') . ' start project_id: ' . $project_id . PHP_EOL;
|
|
|
|
try {
|
|
|
|
ProjectServer::useProject($project_id);
|
|
|
|
$this->seo_tdk($project_id);
|
|
|
|
$this->seo_tdk($project_id, $task->id);
|
|
|
|
DB::disconnect('custom_mysql');
|
|
|
|
}catch (\Exception $e){
|
|
|
|
echo date('Y-m-d H:i:s') . 'line: '. $e->getLine() .' error: ' . $project_id . '->' . $e->getMessage() . PHP_EOL;
|
|
|
|
ProjectUpdateTdk::retry($task->id, $e->getMessage());
|
|
|
|
}
|
|
|
|
echo date('Y-m-d H:i:s') . ' end: ' . $project_id . PHP_EOL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function seo_tdk($project_id)
|
|
|
|
public function seo_tdk($project_id, $task_id)
|
|
|
|
{
|
|
|
|
$data = [];
|
|
|
|
$update = [
|
|
|
|
'created_at'=>date('Y-m-d H:i:s'),
|
|
|
|
'updated_at'=>date('Y-m-d H:i:s'),
|
|
|
|
'project_id'=>$project_id,
|
|
|
|
];//更新统计
|
|
|
|
|
|
|
|
//更新统计
|
|
|
|
$update = [];
|
|
|
|
$ai_commands = AiCommand::where('is_batch', 1)->select('key', 'scene', 'ai')->get()->toArray();
|
|
|
|
$ai_commands = Arr::setValueToKey($ai_commands, 'key');
|
|
|
|
foreach ($this->maps as $table => $map) {
|
|
...
|
...
|
@@ -186,6 +186,15 @@ class UpdateSeoTdk extends Command |
|
|
|
echo $field.'已有值 跳过' . PHP_EOL;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
//缓存 在处理的 项目 数据 id
|
|
|
|
$cache_key = "seo_tdk_{$project_id}_{$table}_{$v['id']}";
|
|
|
|
if(Cache::get($cache_key)){
|
|
|
|
echo '其他进程在处理' . PHP_EOL;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
Cache::put($cache_key, 1, 120);
|
|
|
|
|
|
|
|
//AI生成
|
|
|
|
if (!empty($ai_commands[$ai_key]['ai'])) {
|
|
|
|
$prompt = $this->getPrompt($project_id, $ai_commands[$ai_key]['ai'], $table, $v);
|
|
...
|
...
|
@@ -262,10 +271,9 @@ class UpdateSeoTdk extends Command |
|
|
|
}
|
|
|
|
DB::connection('custom_mysql')->table($table)->where(['id' => $v['id']])->update($data);
|
|
|
|
}
|
|
|
|
$update[$table] = json_encode($update[$table]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
DB::table('gl_project_update_tdk')->insert($update);
|
|
|
|
ProjectUpdateTdk::finish($task_id, $update);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getPrompt($project_id, $prompt, $table, $data){
|
...
|
...
|
|